本文已参与「新人创作礼」活动,一起开启掘金创作之路。
计算机网络协议
不同设备上的进程通信,需要网络通信,设备具有多样性,因此需要统一的网络协议。网络协议是分层的,从上到下分别是:应用层、传输层、网络层、数据链路层和物理层。其中,传输层和网络层是由操作系统维护的。
- 数据链路层和物理层负责数据真正的发送过程
- 网络层负责数据转发,解决数据去哪的问题
- 传输层负责处理传输遇到的问题,主要保证数据可靠性
- 应用层根据特定的通信目的,进行数据分析处理,完成某种业务
协议具有共性:
- 报头中包含一个字段,表明需要将有效载荷交付给上层的哪个协议
- 通过定长报头或者自定义描述字段,就可以将报头字节数完整读取出来,从而保证报头和有效载荷之间能够分离
局域网通信原理
局域网通信原理本质上是所有主机底层都收到了其它主机的数据,只不过筛选了其它主机发给自身的数据。在局域网通信过程中,由于网络本身的特性,所以同一时刻只能有一台主机进行发送数据。如果网络中的数据发生了碰撞,当前主机是可以检测到的(当发送的消息与接受已发送消息不同时,则数据发生了碰撞),为了处理数据碰撞,每台主机都会有“碰撞避免”算法。
局域网通信发生在数据链路层。每台主机都有一张网卡,每张网卡都内置了48位序列号,即 MAC 地址。在局域网中的数据格式称作 MAC 数据帧。数据帧中包含了目标 MAC 地址和 源 MAC 地址。当有一台主机在局域网中发送 MAC 帧时,所有的主机都会提取 MAC 帧中的目标地址与自身 MAC 地址比较,不同则丢弃。当目标 MAC 地址设置成局域网中所有主机时,就构成广播。
路由器能够将两个局域网连接起来。对于每个局域网而言,路由器是它的一台主机。局域网内的通信协议可以是以太网协议,也可以是令牌环协议。因此不同的局域网的 MAC 帧的报头可能不同。IP 地址可以用来表示公网内唯一的一台主机。路由器通过将 MAC 帧去掉 MAC 报头,再得到目标的 IP 地址,从而确定要将数据发送给另一个局域网的目标主机。由于目标主机的局域网通信可能采用令牌环协议,所以路由器在给另一台发送报文时,要加上目标局域网通信协议对应的 MAC 帧报头。有了路由器,IP 层和 TCP 层看到的内容是相同的,路由器消除了底层网络之间的差异。