1、链路层的主要作用

链路层工作在TCP/IP的二层,在以太链路中主要负责报文的MAC Header的处理:

1)为IP模块发送和接收IP数据报;

2)为ARP模块发送ARP请求和接收ARP应答

3)为RARP发送RARP请求和接收RARP应答

2、Ethernet II 和IEEE 802.3封装

Ethernet II帧是最常见的一种以太网帧格式,也是今天以太网的事实标准,由DEC,Intel和Xerox在1982年公布标准,Ethernet II可以支持TCP/IP,Novell IPX/SPX,Apple Talk Phase I等协议,其比较常见的类型字段为:0X0800(IP帧),0X0806(ARP请求/应答帧),0X8035(RARP请求/应答帧),0X8137(Novell IPX),0X809b(Apple Talk)。RFC 894定义了IP报文在Ethernet II上的封装格式

IEEE802委员会公布了一个标准集的,其中802.3针对整个CSMA/CD网络,802.3帧将Ethernet II帧头中的类型字段替换为帧长度字段(取值范围为0X0000-0X05dc,不包括CRC检验码),因此对于接收到的帧,如果类型字段取值范围为0X0000-0X05dc,则可以判断其为802.3帧。IEEE802网络的IP数据报文封装是在RFC1042中定义的

主机需求RFC1122(比较重要的RFC)要求每台Internet主机都与一个10Mb/s的以太网电缆相连接:

1)必须能发送和接收采用RFC894(以太网)封装格式分组

2)应该能接收与RFC894混合的RFC1042(IEEE 802)封装格式的分组

3)也许能够发送采用RFC1042格式封装的分组。如果主机能够同时发送两种类型的分组数据,那么发送的分组必须是可设置的,而且默认情况下必须是RFC894分组。

另外802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少字节有46字节。

3、LoopBack 环回口

大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己

图中需要指出的关键点是:

  1. 传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。
  2. 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身。
  3. 任何传给该主机IP地址的数据均送到环回接口。

4、最大传输单元MTU(Maximum Transmission Unit)

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片( fragmentation),把数据报分成若干片,这样每一片都小于MTU。

小实验:在windows上查看一下接口的mtu和ip地址

然后ping 192.168.1.1路由器

这里解释一下ping的几个参数的作用,-f表示不分片,-n表示发送请求报文的次数,-l代表发送请求报文的大小可以看到当报文达到1473的时候如果不分片就ping不同了,这是为什么呢?

这个问题的原因是:ping报文属于ICMP报文,网络层(IP、ICMP、IGMP)报文大于mtu时按照协议规定就必须要分片,如果设置了不允许分片标记,报文就会被操作系统被丢弃。1472 (data)+ 20(IP首部) + 8(ICMP首部) = 1500,所以实际不分片的报文大小只能到达1472。