TCP/IP五层模型——数据链路层

数据链路层主要功能是:两个设备(同一数据链路节点)之间的数据帧的传送与识别。

一.认识以太网

1.相关概念

(1)"以太网" 不是一种具体的网络,而是一种技术标准。它既包含了数据链路层的内容,也包含一部分物理层的内容。

(2)以太网是当前应用最广泛的局域网技术,与之并列的还有令牌环网,无线LAN等。

(3)以太网中的网线必须使用双绞线,传输速率有10M,100M,1000M等。

2.以太网的帧格式(MAC帧)

TCP/IP五层模型——数据链路层_第1张图片

其中的"类型"字段,有以下几种值:

TCP/IP五层模型——数据链路层_第2张图片

(1)其中,源地址与目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,它是在网卡出厂时固化的

(2)帧协议的"类型"字段有三种值,分别对应IP、ARP、RARP

(3)帧的末尾是CRC校验码

二.认识MAC地址

1.相关概念

(1)MAC地址是用来识别数据链路层中相连的节点

(2)长度为48位,即6个字节,一般用16进制数字加上冒号的形式来表示(例:08:00:27:03:fb:19)

(3)MAC地址在出厂是就确定了,且不能修改,MAC地址通常是唯一的(要注意的是,虚拟机下的MAC地址不是真实的MAC地址,可能存在冲突;有的网卡支持用户自己配置MAC地址)

2.MAC地址与IP地址的不同

(1)IP地址描述的是整个传输路径的起点与终点。

(2)MAC地址描述的则是在整个传输路径中每一段的起点与终点。

三.MTU——MAC帧的最大有效载荷

1.相关概念

(1)MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路层对应物理层产生的限制

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

(3)最大值1500即为以太网的最大传输单元(MTU),不同网络类型有不同的MTU

(4)如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU时,则要对数据包进行分片

(5)不同的数据链路层标准的MTU是不同的

(6)用ifconfig命令,即可查看MTU、MAC地址、IP地址

2.MTU对IP协议的影响

由于数据链路层的MTU限制,对于较大的IP数据包要进行分包(具体的可见我的另一篇博客——IP数据包的分片与组装)

(1)将较大的IP数据包分成多个小包,并给每个小包打上标签

(2)每个小包协议头部的16位标识(id)都是相同的(用以标识它们属于一个IP数据包)

(3)每个小包的协议头的3位标志字段中,第二位要置为0表示允许分片;第三位是结束标志(若当前小包是IP包的最后一个则置为1,否则置为0)

(4)到达对端时,再将这些小包按照顺序重组,拼装到一起返回传输层

(5)一旦这些小包中有任意一个小包丢失,接收端的重组就会失败。但是IP层不会再重传数据

3.MTU对UDP协议的影响

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

4.MTU对TCP协议的影响

(1)因为TCP数据包不能无限大,且要受限于MTU,所以我们将TCP单个数据包的最大消息长度成为MSS

(2)TCP在建立连接时,通信双方会进行MSS协商

(3)最理想的情况就是:MSS的值正好是在IP不会被分片的最大长度

(4)双方在发送SYN时,会在TCP头部写入自己能够支持的MSS值

(5)然后双方根据对端能够接受的MSS值,选择教较小的作为最终的MSS值

(6)MSS的值就放在TCP首部的40字节变长选项中(kind = 2)

你可能感兴趣的:(Linux)