在 IP 数据包交付的过程中,在数据链路层会对数据包进行添加报头信息。以太网协议就是数据链路层的一个重要协议。这样说其实不太准确,因为以太网协议是一个规定数据链路层及物理层的协议,不能说它是数据链路层的一个协议。

以太网帧

以太网帧就是将网络层交付的数据添加报头信息后,此时的数据以帧的形式传递。以太网帧的格式如下:

在这里,目的地址与源地址这里都指的是 MAC 地址。每一个主机对应唯一的一个 MAC 地址,是由网卡决定的,长度是 48 位,所以这里的目的地址与源地址都是 6 个字节,也就是 48 个比特位。

在以太网帧的最后,还有一个 CRC 校验码,来校验数据是否异常。

在中间,有一个两个字节的类型标识。这个类型字段有三种值,分别是 : IP、ARP、RARP。

IP

如果类型码为 0800 那么在数据链路层解包完毕后,将该数据交付给网络层的 IP 协议来处理该报文。

ARP

如果类型码是 0806 , 那么在向上层交付的时候就交付给 ARP 协议,这里要说的是 ARP 协议是处于数据链路层与网络层之间的一种协议,也叫作地址解析协议。它将 IP 地址转换为 MAC 地址。

RARP

RARP 协议,就是 Reverse ARP,与 ARP 协议相同,是将 MAC 地址转换为 IP 地址的协议。


一般来说,数据第一次发送给目的主机时,在这之前应该发送 ARP 协议,根据目的主机的 IP 地址来确定目的主机的 MAC 地址,从而为后面的数据发送与接收提供便利。

MAC地址与IP地址

在数据发送传输的过程中,目的 IP 地址与源 IP 地址是永远不会变的,这是这个数据的起始与终点,而 MAC 地址是一直在变化的,由于数据在传输的过程中会经历很多的主机等,所以在这个过程中 MAC 地址一直在变。类似于我们坐车,要坐车从 A 出发,目的地是 D。这个过程中我们会经过 B C,在到达 B 的时候,此时的 MAC 地址相当于我们上一站是 A , 下一站是 C。而目的 IP 地址与 源 IP 地址 分别是 D 与 A,这样说的话就很好理解了。

MAC 地址与 IP 地址,一个代表的目的与终点,一个代表着途中的经过。所以在到达目的局域网后,数据包并不知道要传输给哪台主机,因为 MAC 地址的变化,但是目的 IP 地址一直没有变化,所以此时就需要 ARP 协议来确定目的主机的 MAC 地址。

MTU

在谈 IP 协议的时候说到, IP数据报的长度受数据链路层的 MTU 影响。数据链路层要求在网络层传输过来的数据包必须在 MTU 范围内,以太网帧中的数据长度必须在 46字节到1500字节当中去。也就是说在 IP 层在添加报头信息之前,要判断此时由传输层传输过来的数据段是否超过了 1480 个字节(以太网帧中的数据包括 IP 协议的报头信息,IP 协议的报头信息为 20 字节),如果超过了,那么则对该数据段进行分片,所有被分片的数据的 IP 报头信息当中,它们的 16 位标识都是相同的,并且报头信息中的标志字段中第二位为 0 ,第三位如果为 1 ,代表着报文的结束。

接收端在接收到这里分片数据后,根据 IP 报头信息的 16 为标识信息、三位标志位、13位偏移量信息进行组装。

如果分片后的数据在接收端丢失某一片,那么就组装失败。即使组装失败, IP 层也不负责重新传输的功能。这是传输层所该做的事情。

我们发现 ARP 协议与 RARP 协议它们的实际数据只有 28 个字节,于是在它的报文后进行补位,其中 PAD 就是用来填充的,使 ARP / RARP 协议的长度达到 MTU 的最小字节数。

对于 UDP 传输的影响

一旦 UDP 携带的数据超过了 1472 (MTU - IP报头 - UDP报头 = 1500 - 20 - 8),那么在 IP 层就会对该数据分片,一旦分片就意味着增加了 UDP 传输丢包的可能性。 由于 UDP 协议传输本身就不负责可靠性,再加上分片,那么丢包的可能性就大大增加。

对 TCP 传输的影响

TCP 协议在传输时也收到 MTU 的影响。一个 TCP 数据报的最大长度为 MSS 。MSS 处于 TCP 报头信息选项中。在 TCP 进行链接的时候,双方在发送 SYN 与 SYN + ACK 时就会在选项内对 MSS 进行设置。在双方都得到对方的 MSS 时,选择较小的 MSS 的值作为最终的 MSS 。

再说明白点,MSS 的大小其实就是应用层给传输层的交付的数据的大小。不包括传输层的报头信息。所以在计算 MSS 的时候,用 MTU 减去网络层报头长度以及传输层报头长度即可。


写的通俗易懂。

版权声明:本文为博主LChanceea8原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

转发自 本文链接:https://blog.csdn.net/liuchenxia8/article/details/80598176

数据链路层之以太网协议和网络层IP协议相关推荐

  1. 网络层IP协议—ipv4

    什么是IP协议? IP 协议(Internet Protocol)是一个处于垄断地位的网络层协议. IPv4 就是 IP 协议的第 4 个版本,是目前互联网的主要网络层协议.IPv4 为传输层提供 H ...

  2. 网络基础网络层--IP协议

    网络基础网络层--IP协议 一.IP协议解析 (一)4位版本 (二)4位报头长度 (三)8位服务类型 (四)16位数据报长度 (五)16位分片标识 (六)3位分片标志 (七)13位分片偏移 (八)8位 ...

  3. 熟悉网络层IP协议和数据链路层

    1. 应用层IP 协议 1.1 IP协议头 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 4位头部长度(header length): IP头部的长度是多少个32 ...

  4. 网络层IP协议和数据链路层

    目录 IP协议 协议头格式 分片 网段划分 特殊的IP地址 IP地址的数量限制 NAT技术 NAT技术背景 NAT IP转换过程 NAPT NAT技术的缺陷 NAT和代理服务器 私有IP地址和公网IP ...

  5. 网络 网络层 | IP协议、网段划分、公网与私网、路由选择

    网络层是用信子网的边界,是通信设备的协议最高层.其功能是负责地址管理与路由选择(为每一条网络中的数据根据想去的地方选择合适的路径),典型的协议是IP协议,典型的设备是路由器 IP协议 IP协议的工作类 ...

  6. 网络:网络层IP协议

    目录 一.IP协议 1. IP数据报 1.1 IP首部 2.IP协议的转发 2.1 路由表 2.2 IP协议转发流程 3.子网划分 3.1 分类的IP地址 3.2 划分子网的基本思想 3.3 子网掩码 ...

  7. OSI协议和TCP/IP协议笔记

    1.OSI协议: 第7层应用层:OSI中的最高层.是用户与网络的接口.该层通过应用程序来完成网络用户的应用需求,如文件传输.收发电子邮件等.在此常见的协议有:HTTP,HTTPS,FTP,TELNET ...

  8. 网络层——IP协议(IP协议报头IP报文的分片与组装)

    1 IP协议报头 各字段解释: 版本号:占4位,指IP协议的版本,有IPv4和IPv6两种,对于IPv4协议该字段就是4 首部长度:占4位,指IP协议的报头长度,范围在20-60字节 区分服务:占8位 ...

  9. 计算机网络-实验5:网络层-IP协议分析

    实验报告 IP协议分析与子网转发 实验目的:1.理解IP协议数据报格式,IP数据包分片:                   2.了解路由器在不同子网之间转发数据报,配置静态路由. 实验任务1.启动W ...

  10. 5 网络层----IP协议相关技术

    5.1 DNS(域名解析协议) 5.1.1 域名服务器 域名是分层结构,域名服务器也是对应的层级结构. 有了域名结构,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际 ...

最新文章

  1. 对ARM异常(Exceptions)的理解
  2. Keras入门(一)搭建深度神经网络(DNN)解决多分类问题 1
  3. goroutine sync.RWMutex读写锁RLock的使用
  4. php 读取或导出到Excel / CSV (附utf8、gbk 编码转换)
  5. NeurIPS 2021 | 视频压缩框架DCVC:从残差编码到条件编码,建模上下文
  6. 通过Cloudera Manager部署CDH5.15.1的webUI界面详解
  7. python基础知识7——迭代器,生成器,装饰器
  8. HDU 1596 find the safest road (最短路)
  9. 关了浏览器再开,怎么session还在?
  10. html 点击按钮刷新验证码,HTML点击刷新验证码
  11. 【神经网络】{4} ——多元分类
  12. Red Giant VFX Suite for mac(电影级视觉特效插件)
  13. 自学成才秘籍!机器学习深度学习经典资料汇总
  14. 电视台‘自制好剧’,大量剧本从何来?
  15. go配置sublime text时使用MarGo报错及解决方法
  16. 18个公认的 世界顶级UI开源框架汇总
  17. 局域网访问提示无法访问检查拼写_访问某一个共享提示windows无法访问,请检查名称的拼写,访问其他共享正常...
  18. 【美化§炫彩篮球火win7电脑主题】
  19. 苹果年夜饭“全家桶”来了,给你不一样的新年味
  20. Windows程序中的字符编码

热门文章

  1. Address already in use: bind 端口被占用的解决办法
  2. 使用Git将项目上传到GitHub(Windows+Linux双教程)
  3. pcb过孔漏铜_使用Proteus设计自己的PCB | 入门简易教程
  4. python优先级排序_Python 列表排序
  5. 服务器linux命令aux,Linux查看所有进程ps -aux命令介绍
  6. ssm提交post_SSM中get和post乱码笔记
  7. 谷粒商城:17.商城业务 — Nginx搭建域名访问
  8. gitignore文件的几种写法,Git忽略文件规则的配置方法
  9. Spring Boot/Spring面试常见问题
  10. Twitter数据抓取的方法(三)