Linux:数据链路层——以太网协议、NAT协议、ARP协议和DNS协议
以太网协议
数据链路层:数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自物理层来的数据可靠地传输到相邻节点的目标机网络层。他的作用就是负责相邻设备的转发。
以太网:以太网不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网(已淘汰)和无线LAN等。
以太网帧格式
源地址和目的地址:指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出场是固化的
帧协议类型字段:有三种值,分别对应IP、ARP、RARP
帧末尾是CRC校验码
类型:指上层协议的类型。0800表示IP协议、0806表示ARP请求、0835表示ARP应答
数据:有效载荷,46~1500(MTU);1500:ipheader + tcpheader + 数据;46:如果从网络协议栈传递下来的数据没有达到46字节,会在数据前面默认补上0,以达到数据链路层对数据的限制
MTU以及MTU对IP协议的影响
MTU:就相当于发快递时对包裹尺寸的限制,这个限制是不同的数据链路对应的物理层产生的限制,以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片,不同的数据链路层标准的MTU是不同的;
IP:
将较大的IP包分成多个小包, 并给每个小包打上标签,每个小包IP协议头的 16位标识(id) 都是相同的,每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分