1.作用:解决同一种数据链路中节点之间数据的传递问题(点到点)
2.以太网技术:一种局域网技术标准,既包含了数据链路层的内容,也包含了一些物理层的内容,如:规定了网络拓扑结构、访问控制方式、传输速率等。
3.以太网帧格式:
其中
目的地址/源地址:网卡的硬件地址;
类型:指帧协议类型,数据链路层有三种协议类型:IP、ARP、RARP,分别对应类型码0800、0806、0835;
数据:即经传输层、网络层封装之后的需要要发送的数据,在数据链路层再进行封装,最终以数据帧的格式在链路中传递;
CRC:CRC校验码
4.MAC地址
用来识别数据链路层中相连的节点,长度为6byte,48bit,一般使用16进制数字加上冒号的形式来表示
在网卡出厂的时候就确定了,不能修改,通常情况下都是唯一的。
特例:虚拟机中的mac地址,不是真正的mac地址,可能会有冲突;
有一些网卡支持用户配置mac地址。
5.ARP协议:建立主机IP地址和MAC地址的相互映射关系。
网络通讯时如果源主机知道目标主机的IP地址,但是不知道目标主机的MAC地址,那么在传输数据的时候,应该先是由对方的最底层网卡接收数据,而数据包中的硬件地址却不知道,就无法接收。因此在通讯前必须获得目的主机的MAC地址。而ARP协议正好解决了这一问题。
1)ARP数据报格式:
其中:
硬件类型:链路层网络类型,1表示以太网
协议类型:指的是要转换的地址类型,0x0800为IP地址
硬件地址长度:硬件类型的地址长度,硬件类型是以太网的话硬件地址长度为6byte
协议地址长度:协议类型所占地址长度,IP地址的地址长度为6byte
op:为1表示是ARP请求,为2表示是ARP应答
从ARP数据报格式可以看到以太网MAC地址和源MAC地址在以太网首部和ARP请求/应答中个出现了一次,对于链路层为以太网的情况是多余的,但链路层若是其它网络类型就可能有必要了。
2)ARP协议工作流程:
⑴源主机发出ARP请求,询问目标主机的硬件地址,并将这个请求广播(以太网帧头部目的主机MAC地址填FF:FF:FF:FF:FF:FF)到本地网段。
(2)目的主机收到广播的ARP请求,发现其中的IP地址与自己相符,则发送一条ARP应答数据包给源主机,将自己的MAC地址写入以太网帧首部。
3)ARP缓存表:
每个主机都有维护一个ARP缓存表,缓存表中的表项过期时间为20分钟,过期后想再次获取目的主机mac地址仍需发送ARP请求。
维护缓存表的原因:提高传输效率,不用每次传输数据都请求目的主机的硬件地址。
缓存表表项过期原因:主机的IP地址是一直变更的,若目的主机断线重连,可能IP就是另一个了。
6.MTU
1)定义:数据链路层数据帧中的数据在传输时的最大传输单元称为MTU,不同的网络类型MTU长度不同。
以太网帧中规定数据长度在46~1500之间,1500就是以太网中的MTU长度。
2)MTU对IP协议的影响
对于较大的IP数据包(长度超过1680(1500-20))需要进行的分包操作,到达对端时再将这些小包按顺序重组,并拼装到一起返回给传输层;
一旦这些小包丢失,接收端的重组就会失败,但IP层不会负责重新传输数据。
3)MTU对UDP协议的影响
一旦UDP数据长度超过1472(1500-20(IP首部)-8(UDP首部)),就会在网络层被分片,分片后有任一IP数据报丢失,都会引起对端网络层的重组失败。
即:UDP数据报如果在网络层被分片,整个数据丢失率就会大大增加。
4)MTU对TCP的影响
受制于MTU,TCP的一个数据报也不能无限大,TCP的单个数据报的最大消息长度称为MSS。
在TCP建立连接的过程中,通信的双方会进行MSS协商:
理想状态下,MSS的值正好可以是在IP数据报不会被分片处理的最大长度(受制于MTU);
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值,在得知对方的值后取两者中的最小值作为最终MSS;
MSS的值就位于TCP首部40字节变长选项中(kind)。
5)MSS可以保证在合理的MTU下尽量不分/少分片。
ifconfig:查看主机的硬件地址(MAC)、MTU和IP地址。