网络基础——数据链路层

数据链路层介于物理层和网络层之间,在物理层提供的服务的基础上向网络层提供服务。数据链路层最基本的服务是将源机网络层来的数据可靠地传输到相邻节点的目的机网络层。数据链路层解决的是在局域网内点到点的问题。


  • 认识以太网

以太网是当今应用最广泛的局域网技术,它不是一种具体的网络,而是一种技术标准。既包含了数据链路层的内容,也包含了一些物理层的内容。

以太网中的网线必须使用双绞线。

和以太网并列的还有令牌环网、无线LAN等。

 以太网的帧格式如下所示:

                

源地址和目标地址是指网卡的硬件地址(也称Mac地址),长度为48位,是在网卡出厂时固化的。

帧协议类型字段有三种值,分别对应IP、ARP、RARP。

帧末尾是CRC校验码。

  • 认识Mac地址

Mac地址用来识别数据链路层中相连的节点。长度为48位,即6字节。一般用16进制数字加上冒号的形式来表示,例如08:00:27:03:fb:19。

Mac地址在网卡出厂时就确定了,不能修改。Mac地址通常是唯一的。

  • 认识MTU

MTU意为最大传输单元,相当于发快递时对包裹尺寸的限制,是指一种通信协议的某一层上面所能通过的最大数据报大小,以字节为单位。大部分网络设备的MTU都是1500。

以太网帧中的数据长度规定最小46字节,最大1500字节。ARP数据包的长度不够46字节,就要在后面补填充位。

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,就需要对数据包进行分片。分片是在网络层进行的。

不同的数据链路层标准的MTU是不同的。在Linux下,MTU的值为1500。

       

  • MTU对IP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。将较大的IP包分成多个小包,并给每个小包打上标签。每个小包IP协议头的16位标识(id)都是相同的。每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0)。到达对端时再将这些小包按序重组,拼装到一起返回给传输层。一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是IP层不会负责重新传输数据。

  • MTU对UDP协议的影响

UDP携带的数据一旦超过1472(1500-20(IP首部)-8(UDP首部)),那么就会在网络层分成多个IP数据报。这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败,这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就会大大增加

  • MTU对TCP协议的影响

和UDP一样,TCP的一个数据报也不能无限大,还是要受制于MTU。TCP的单个数据报的最大消息长度,称为MSS,即Max  Segment  Size。

TCP在建立连接过程中,通信双方会进行MSS协商。最理想的情况,就是MSS的值正好是在IP不会被分片处理的最大长度,即1460(1500-20(IP首部)-20(TCP首部))。

双方在发送SYN的时候,会在TCP头部写入自己能支持的MSS值,然后双方得知对方的MSS值之后,选择较小的作为最终的MSS。

MSS的值在TCP首部的40字节变长选项中。

查看硬件地址和MTU:

使用ifconfig命令,即可查看IP地址、Mac地址和MTU等。

        

从这张图中,我们可以看到,在Linux下,MTU的值为1500;IP地址为192.168.91.129(说明这是一个私有IP地址);子网掩码为255.255.255.0;广播地址为192.168.91.255;以太网地址为00:0c:29:c9:3b:e4。





猜你喜欢

转载自blog.csdn.net/cecilia3333/article/details/80427292