当某个拥MAC地址的硬件设备需要上网,就需要将自己的MAC地址转化为IP地址,即使用RARP协议,过程与ARP协议刚好相反。在这个过程中有一个RARP服务器,存放MAC到IP的映射,可以接受硬件的RARP广播,然后发回其IP地址。
路由器最多只涉及三层,也就是网络层,数据链路层和物理层。当路由器存储转发某个IP报文的时候,通过路由表可以确定下一跳路由的IP,传输的时候仍然需要用ARP广播将IP地址转化为MAC地址,然后将IP报文分组加上帧头和帧尾来封装成数据帧,之后物理层再通过比特流的形式传输给下一跳路由。注意,所有的数据在网络传输时都会从上往下直到物理层,接收后都会从下往上,即使在传输层看来好像应用之间通过IP和端口直连一样,但其实都是需要到物理层来传输数据的。
端口是TCP/UDP也就是传输层才有的,当应用产生数据需要通过网络传输时,就将数据封装成TCP/UDP的报文,然后加上IP首部封装成IP报文,但是由于数据链路层PPP协议传输数据有MTU的限制,一般最大1500字节,所以需要将IP报文分片传输,也就是IP报文的数据部分会被分成一片一片,每一片加上IP的头部信息形成IP报文分组。所以应用传输的数据会以IP分组的形式来传输。IP分组先用路由器来寻路,找到下一跳路由,然后再封装成数据帧再由链路层和物理层来传输,直至传到目的节点,然后再目的节点上进行IP报文的重组,重新组装成完整的IP报文再进而得到应用的TCP/UDP报文数据。
注意,数据链路层的PPP协议里有CRC差错校验,会对负载的IP报文进行校验,判断传输过程中IP报文有没有出错。但是网络层的IP协议也会对数据进行校验,不是看数据传输过程中有没有错误,而是对IP分组的头部信息进行校验,读取IP地址更新头信息中的分片信息等。
网友评论