Linux(二十九)浅析数据链路层

用于两个设备(同一种数据链路节点)之间进行传递

以太网

*“以太网”不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。
*以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

以太网帧格式
*源地址和目的地址是指网卡的硬件地址也叫MAC地址,昌都市四十八为,是在网卡出厂时固化的;
*帧协议类型字段有三种值分别对应IP,ARP,RARP;
*帧莫问是CRC校验码。

MAC地址
*MAC地址用来识别数据链路层中相连的节点;
*长度为48位,及留个字节,一般16进制数字加上冒号的形式来表示
*在网卡出厂时就确定了,不能修改,mac地址通常是唯一的

对比理解MAC地址和IP地址
*IP地址描述的是路途总体的起点和终点;
*MAC地址描述的是路途上的每一个区域的起点和终点;

MTU
MTU相当于发快递时堆包裹尺寸的限制。
*以太网帧中的数据长度贵定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
*最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
*如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路上的MTU了,则需要对数据包进行分片;
*不同的数据链路层表标准的MTU是不同的;

MTU对IP协议的影响
由于数据链路层MTU的限制,对于较大的IP数据包要进行分包;

*将较大的IP包分成多个小包,并给每个小包打上标签;
*每个小包IP协议头的十六位标识(ID)是相同的;
*每个小包的IP协议头的3位标志字段中,第二位置0,标识允许分片,第三位表示结束标志(当前是否是最后一个小包,是的话置为1,否则置为0);
*到达对端时再将这些小包,按照顺序重组,拼装到一起发送给传输层;
*一旦这些小包中任意一个小包丢失,接收端重组就会失败,但是IP层不会负责重新传输数据;

MTU堆TCP协议的影响
*TCP的一个数据报也不能无限大,还是受制于MTU,TCP的单个数据报的最大消息长度,称为MSS;
*TCP在建立连接的过程中,通信双方会进行MSS协商。
*最理想的情况下,MSS的值正好是IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)
*双方在发送SYN的时候会在TCP头部写上自己能支持的MSS值。
*然后双方知道了对方MSS值之后,选择较小的作为最终的MSS。
*MSS的值就是在TCP首部40字节变长选项中;

MSS+数据报头 = MTU

使用ifconfig命令可以查看IP地址,MAC地址,MTU

ARP协议

ARP协议是一个介于数据链路层和网络层之间的协议

ARP协议的作用

ARP协议建立了主机IP地址和MAC地址的映射关系。
*在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
*数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。
*在通讯前必须获得目的主机的硬件地址

ARP协议的工作流程
这里写图片描述

*源主机发出ARP请求,询问IP地址172.20.1.2的主机的硬件地址是多少,并将这个请求广播到本地网段;
*目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中;
*每台主机都维护一个ARP缓存表,可以用arp -a 命令查看。缓存表中的表项有过期时间,那么该表失效,下次还要发ARP请求来获得目的主机的硬件地址

ARP数据报的格式
这里写图片描述

*注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中个出现一次
*硬件类型指链路层网络类型,1为以太网;
*协议类型指要转换的地址类型,0x0800为IP地址;
*硬件地址长度对于以太网地址为6字节;
*协议地址长度对于IP地址为4字节;
*op字段为1表示ARP请求,op字段为2表示ARP应答。

NAT技术

NAT IP转换过程
这里写图片描述

*NAT路由器将源地址10.0.0.10替换成全区IP202.244.174.37;
*NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10
*在NAT路由器内部,有一张自动生成的,用于地址转换的表;
*当10.0.0.10第一次向163.221.120.9发送数据时就会生成表中的映射关系;

但是如果在一个局域网内,有很多主机都访问同一个外网服务器,那么对于服务器返回的数据,如何判定发送给那个主机?
我们用NAPT来解决这个问题,用IP+port建立这个关联关系,这个关联关系也是由NAT路由器自动维护的。

NAT技术的缺陷
*无法从NAT外部向内部服务器建立连接;
*装换表的生成和销毁都需要额外开销;
*通信过程中一旦NAT设备异常,即使存在热备,所有TCP连接也会断开;

猜你喜欢

转载自blog.csdn.net/mignatian/article/details/80794848
今日推荐