局域网和广域网
通过 网络设备 和 传输材料 把主机连接起来,就是局域网
- 传输材料 : 网线(双绞线)、光纤、无线电波(wi-fi 使用的无线信号)
- 网络设备 : 交换机、 路由器、 网卡
基于交换机组建局域网
基于交换机和路由器组建局域网
广域网 : 将多个局域网连接起来形成的更大范围的网络范围
IP 地址
IP 用于定位主机的网络地址, IP 地址是一个 32 位二进制数,通常是 4 个 8 位二进制数组成,用点分十进制的形式进行表示。例如 : 100.4.5.6
端口号
端口用来区分主机上不同的应用程序,标识主机上的应用程序。每个使用网络的程序都有一个端口号。类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)
协议
协议是网络设备在进行网络通信时的共同遵守的约定, 最终体现为网络上传输的数据包的格式 。
协议规定了通信双方应该发送什么数据、数据的格式是什么,以及怎么处理收到的数据
为什么需要协议 ?
- A 说阿拉伯语
- B 说西班牙语
即使两个人面对面,也很难有效交流,因为他们没有使用双方都能理解的语言。
计算机之间也一样,2 台计算机想要交换数据,就要遵守共同的通信规则
协议分层
如果依靠 1 个网络协议来解决网络通信中的所有问题(数据什么格式、数据怎么传输、…)会非常复杂
因此需要把任务给分层, 每层只关注自己做的事情
网络协议分层
- OSI 七层网络模型。实际使用当中是简化版本,就是 TCP/IP 五层(四层)模型。
- 物理层考虑的⽐较少。因此很多时候也可以称为TCP/IP四层模型
TCP/IP : 应用层、传输层、 网络层、物理链路层(网卡层) 、物理层
具体层的功能
封装和分用
封装
发送数据时,各层添加自己需要的控制信息
假设用 QQ A 发送消息 hello 给 B
应用层
A 输入 hello 后点击发送按钮,QQ 读取到输入框的 hello 把 hello 构造成一个有应用层的数据包(不只是打包发送信息还有要一些辅助信息)
像是这样的字符串,就是应用层数据包。调用传输层的接口,把这样的数据传输传输层
传输层
根据刚才传输过来的数据 和 传输层使用的协议,再把数据封装成传输层数据包(假设传输层使用的协议是 UDP)
主要是为了添加辅助网络传输的补充信息。把这个数据包传输给网络层
网络层
拿到传输层的协议后,根据网络层的协议(假设是 IP 协议),再把数据进一步封装成网络层协议
再把数据传输给数据链路层
数据链路层
根据网络层传输过来的数据和 数据链路层的协议(假设以太网),再把数据进一步封装成数据链路层数据包
把数据传输给物理层
物理层
通过网卡把链路层数据包电信号/ 光信号 / 电磁波传输出去
分用
接收数据时, 根据相应的信息把数交给正确的上层协议或应用程序
物理层
拿到光电信号,见光电信号转换为 二进制的数据序列,得到数据链路层的数据包
把这解析出来的数据包交给数据链路层
数据链路层
拿到数据链路层的数据,把帧头帧尾做解析把载荷(正文)传输给网络层
网络层
IP 协议对这个数据进行解析取出 IP 报头对 IP 报头进行解析, 把载荷传输给传输层
传输层
UDP 协议对数据进行解析, 解析UDP报头,把载荷传输给应用层
应用层
QQ 对数据进行解析,拿到发送人、消息正文、时间,把这些信息显示到界面
这个过程中的数据,就是报文( 特定格式的字符串报头 + 载荷/正文)
封装和分用只是发出和接收数据,封装数据发出数据 到 接收数据分用解析数据 的中间还有一系列复杂的过程和网络结构(略)