自学内容网 自学内容网

数据链路层【Linux网络复习版】

 

目录

 

一、数据链路层主要解决的是什么问题?

二、什么是以太网?

三、什么是MAC地址?

 四、以太网帧的格式是什么?

五、 什么是MTU?

六、MTU和分片

MTU对IP协议的影响?

 如何分片?

如何组装? 

如何识别有无丢失?

 怎么知道第一个是不是被分片了?

怎么避免分片?MSS

 七、局域网内主机如何通信?

交换机 

八、ARP协议

ARP协议的工作原理

 ARP协议报头

ARP请求发送过程 

 ARP应答发送过程

ARP欺骗


一、数据链路层主要解决的是什么问题?

直接相连的主机(同一网段的主机-路由器)进行数据交付的过程。

二、什么是以太网?

以太网(Ethernet)是一种局域网技术。既包含数据链路层的内容,也包含了一些物理层的内容。除了以太网以外,还有令牌环网,无线LAN等。

三、什么是MAC地址?

MAC地址用来识别数据链路层中相连的节点,在网卡出厂时就确定了,不能修改,具有全球唯一性(虚拟机中的MAC地址不是真实的MAC地址,可能会有冲突;也有写网卡支持用户配置MAC地址)

MAC地址长度为48位,即6字节,一般用16进制数字加上冒号的形式来表示。

 四、以太网帧的格式是什么?

以太网帧首部由 目的mac地址、源mac地址类型组成。

帧类型:该字段的值通常是一个16位的十六进制数,对应不同的协议使用不同的值。例如:

  • 0x0800:表示IP数据报,会把有效载荷交给上层 ------ 网络层        
  • 0x0806:表示ARP请求/响应,发起ARP请求/应答。

五、 什么是MTU?

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

MTU就是以太网的最大传输单元:1500(不包括以太网首部),不同的网络类型有不同的传输单元。

六、MTU和分片

MTU对IP协议的影响?

 由于数据链路层MTU的限制,网络层就要对较大数据包进行分片。

 如何分片?

3位标志:第二位表示是否允许分片(0允许);第三位是结束标记(当前是否是最后一个小包,0是/1不是)

13位片偏移:比如4500字节的数据要进行分片,那么第一片的片偏移就是0,第二片的片偏移是1500,第三片的片偏移就是3000。

如何组装? 

a.将分片全聚在一起

b.根据片偏移排序

如何识别有无丢失?

根据片偏移计算。

一旦这些小包中任意一个小包丢失,接收段重组就会失败,但IP层不负责重传。

 怎么知道第一个是不是被分片了?

片偏移为0且接结束标记为1。

怎么避免分片?MSS

分片会增加丢包概率,因为ip中任何一个分片丢失,都要上层重发。所以尽量不分片。

双方tcp三次握手时,协商好双方mss的较小值,就能避免分片。

以太网的mtu是1500(有效载荷)

则 IP的最大有效长度 = 1500 - IP报头(20Byte)=  1480

则 TCP的最大有效长度 = 1480 - TCP报头(20Byte)= 1460

1460数据就是MSS,通信双方的MSS尽量保持一致,减少分片。

 七、局域网内主机如何通信?

局域网中,是以广播的形式来通信的,就好像在一个班级里,老师说:“xxx过来一下”,此时全班的学生都收到了这条消息,只不过不是告诉自己的,就自动丢弃了。

局域网中任何时刻只允许有一条消息在信道上,否则会产生碰撞(有碰撞检查、碰撞避免算法),那么如果局域网内很多主机,碰撞的概率就会加大,如何缓解?

交换机 

 划分碰撞域,在概率上减少局域网碰撞。

此时,交换机左侧和右侧主机可以同时进行内部通信(eg:h1发给h2,h3发给h4),此时就能见效冲突概率。

数据包每到达一个路由器都要重新解包和封包,更新下一跳的mac地址,mac帧只在局域网中有效。

八、ARP协议

当主机A想跨网络传输到主机B,当数据包到主机B所在网络的网关路由器时,该路由器只知道源ip和目的ip,它如何在局域网内将该数据包送给主机B呢?这是候就要用到ARP协议,来获得IP对应的mac地址。ARP协议建立的IP和MAC地址的映射关系

该协议虽然归属数据链路层,但实际是介于数据链路层和网络层之间的协议。

ARP协议的工作原理

在局域网内广播一条消息,问局域网内xxip地址是谁,对应的mac地址是多少。所有主机收到后,根据xxip发现是向我发起的ARP请求,那么就给它响应一条消息,告诉它自己的mac地址是多少。

 ARP协议报头

硬件类型:数据链路层网络类型,1为以太网。

协议类型:只要转换的地址类型,0x0800为IP;

硬件地址长度:对于以太网为6字节。

协议地址长度:对于IP地址为4字节。

op:1表示ARP请求,2表示ARP应答。

ARP请求发送过程 

如果局域网内一台主机想知道局域网内另一台主机的mac地址(已知其ip地址),那么它可以发起一个ARP请求。

填充ARP报头:

op填1(请求)

发送端mac地址和发送端ip地址:自己的mac地址和ip地址。

目的mac地址:未知,填全F

目的ip地址:已知的

mac帧报头:

目的mac地址:全F(表示广播)

源mac地址:自己的mac地址

由于以太网mac地址是全F,广播,所以局域网内每台主机都会收到,到达某台主机的mac帧层时,发现它的目的mac地址是广播地址,就把数据帧向上交付给ARP层。

ARP层

1)先看op字段。

2)发现op字段是请求,那么继续看目的ip地址,如果与当前主机ip地址相同,则说明是发给本主机的,本主机就会给对方回一个ARP应答。

 ARP应答发送过程

目标主机收到应答,mac帧层发现是发给自己的,将数据帧向上交给ARP层。

ARP层:

1)先看op字段,发现op是2(即应答)

2)提取发送端mac地址+发送端ip地址

如果是其他主机收到应答,那么它在数据链路层就发现不是发给自己的,就丢弃了。

ARP欺骗

1)如何获得同一网段下的其他所有主机的mac地址?

用自己的ip地址和子网掩码按位与得到网络号,遍历所有的ip地址,ping一下,就ok了。

2)ARP欺骗

ARP的缓存是有时间限制的,且多次发送收到应答时,往往会以最新的为准。

同一个局域网内的hostM(攻击机)可以伪造应答发疯狂发送给hostA,hostA就会以为ipA的mac地址是macM,那么它就会给hostM发送报文。

hostM可以选择丢弃该报文,也可以替hostA向Route R去请求,Route R应答也会发送给我,此时hostM就成了中间人。


原文地址:https://blog.csdn.net/m0_73065213/article/details/138155585

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!