协议篇之以太网UDP协议

news/2024/5/18 12:07:28 标签: udp, 网络, tcp/ip, 以太网, 网络协议

协议篇之以太网UDP协议

  • 一、写在前面
  • 二、TCP/IP协议分层
  • 三、UDP协议数据报格式
    • 2.1 MAC层/物理层:
    • 2.2 IP层/网络层:
    • 2.3 UDP层/传输层:
    • 2.4 应用层:
  • 四、总结
  • 四、写在后面

一、写在前面

  TCP/IP协议是指一个协议簇,可以理解为以太网通信协议的集合,在这个集合里面有很多种协议,比如:TCP、IP、UDP等,其中,由于TCP核IP最为常用,所以协议的集合就命名为TCP/IP协议。本文中主要学习以太网TCP/IP协议的分层与传输层协议中的UDP协议。

二、TCP/IP协议分层

  在TCP/IP协议中,一般可以分为5层:应用层、传输层、网络层、数据链路层和物理层。以上五层协议构成了TCP/IP协议的基础,每一层都有其特定的功能和协议,通过不同层级的分工合作,TCP/IP协议能够实现互联网的通信。

在这里插入图片描述

  • 应用层(Application Layer):应用层就是我们需要通过用户传输的数据;
  • 传输层(Transport Layer):这一层提供端到端的通信服务。常见的传输层协议有TCP和UDP协议;
  • 网络层(Network Layer):这一层负责将数据报从源主机发送到目的主机。常见的网络层协议包括IP协议和ICMP协议;
  • 数据链路层(Data Link Layer):这一层将数据包转换为帧,并将它们传输到网络。常见的数据链路层协议包括以太网和Wi-Fi;
  • 物理层/MAC层(Physical Layer):这一层负责在物理媒介上传输数据。常见的物理层协议包括有线电缆、光纤和无线电波;

三、UDP协议数据报格式

  那么,下面,我们对网络层采用IP协议,传输层采用UDP协议的分层各层数据报格式进行讲解,分层情况概览如下图所示。

在这里插入图片描述

2.1 MAC层/物理层:

  MAC层主要包括前导码Preamble、帧开始符SFD、以太网帧头、MAC数据段和帧校验序列FCS,其中,以太网帧头又可以分为目的MAC地址、源MAC地址和长度/类型三个部分,如下。在这里值得注意的是,

在这里插入图片描述

  • 前导码(Preamble):前导码为7个字节的0和1交替的二进制值,即0x55-55-55-55-55-55-55;
  • SFD(帧开始符):表示一帧的开始,为1字节的固定值0xd5;
  • 目的MAC地址:目的主机的MAC地址,长度为6个字节。MAC地址根据目的主机的个数又分为单播地址、组播地址和广播地址;
  • 源MAC地址:源主机的MAC地址,长度6个字节;
  • 长度/类型:长度为2字节,当这两个字节的值小于1536(十进制)时,代表该以太网MAC帧中数据段的长度;当这两个字节的值大于1536时,则表示该以太网MAC层的上层协议是什么协议,比如:0x0800表示IP协议,0x0806表示ARP协议;
  • MAC数据段:MAC数据段的数据长度在46~1500字节之间,如果MAC数据段的长度小于46字节,则补0到长度为46字节;
  • FCS(帧校验序列):帧校验序列是4字节的CRC校验码,用来在接收端检测传输数据的正确性。CRC数据校验是从以太网帧头开始,到MAC数据段结束,不包含前导码Preamble和帧开始符SFD。

2.2 IP层/网络层:

  MAC层数据段即IP数据报,IP数据报主要包括IP首部和IP数据段两个部分,其中,IP首部又可以分为多个部分,包括协议版本、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、首部校验和、源IP地址、目的IP地址、可选字段。IP首部如下图所示。
在这里插入图片描述

  • 协议版本:协议版本的长度为4比特,有IPV4和IPV6两种,当值为0x4时,表示IPV4,当值为0x6时,表示IPV6;
  • 首部长度:首部长度是值IP首部的长度,位宽为4比特,这里需要注意的是这里对IP首部长度的度量单位不是1字节,也不是1比特,而是4字节,比如IP首部长度是20字节时,则首部长度是5(即20/4=5),此时无可选字段;
  • 服务类型:服务类型用于描述IP数据包的优先级和服务质量;
  • 总长度:总长度是指IP数据报的总长度(不是指IP数据段),包括IP首部+IP数据段的长度,位宽为2字节;
  • 标识:用于标识IP数据包,通常由发送方设置;
  • 标志:该字段包含3个标志位,分别是MF(More Fragments)、DF(Don’t Fragment)和Reserved,用于控制IP数据包的分片和重组;
  • 片偏移:该字段用于指示分片数据在原始数据中的位置;
  • 生存时间:生存时间用于控制IP数据包在网络中的生存时间,以避免数据包在网络中无限循环
  • 协议:协议部分是指上层协议的类型(即传输层协议的类型),常见的协议号有:0x00(IP协议)、0x01(ICMP协议)、0x06(TCP协议)、0x17(UDP协议);
  • 首部校验和:首部校验和是对IP首部进行校验得到的校验和;
  • 源IP地址:源主机的IP地址,4字节,比如192.168.0.2;
  • 目的IP地址:目的主机的IP地址,4字节,比如192.168.1.1;
  • 可选字段:可选,没有的时候长度可以为 0,该字段最大字长度40字节;
  • IP数据段:IP数据报的数据段部分;

在这里插入图片描述

在这里,IP层的首部校验和计算步骤如下:
(1)将IP首部每16bit(2字节)看成一段数据,如果IP首部的长度不是16bit(2字节)的整数倍,则在IP首部的尾部补充0x00直到IP首部为2字节的整数倍;
(2)将IP首部的每16bit进行累加求和,得到一个32位的累加和;
(3)将32位累加和的高16位与低16位相加,直到得到一个16位的结果;
(4)对16位的结果按位取反,取反后的结果即为IP首部校验和;

  需要注意的是,在计算IP首部校验和的时候,需要把IP首部中的首部校验和字段先置为0x00,在计算完IP首部校验和后,再将IP首部校验和填入到该字段。

2.3 UDP层/传输层:

  IP数据段部分即UDP数据报,UDP数据报包括UDP首部和UDP数据段两个部分。其中,UDP首部又分为:源端口号、目的端口号、UDP长度、UDP校验和。UDP首部如下图所示。

在这里插入图片描述

  • 源端口号:2字节,源端口号,需要对方回信时选用,不需要时全部置0;
  • 目的端口号:2字节,目的端口号,在终点交付报文时需要用到;
  • UDP长度:2字节,UDP数据报的长度,最短为8字节,即不传输数据,UDP数据段为空;
  • UDP校验和:2字节,在接收端,根据UDP头部和UDP数据段进行计算得到,在接收端,利用UDP校验和;
  • UDP数据段:UDP数据段即用户需要发送的数据;

在这里插入图片描述

  在这里,对于UDP校验和计算步骤,如下:

(1)将UDP数据报的头部和数据部分看作一个连续的16位字节序列,即将UDP数据报每两个字节看成一段数据(如果UDP数据报的长度为奇数字节,则在尾部补充一个字节0x00);
(2)将这个16位字节序列按照每两个字节一组(即16位一组)进行累加,得到一个32位的累加和;
(3)将32位累加和的高16位与低16位相加,直到得到一个16位的结果;
(4)将16位的结果按位取反,按位取反后得到的值即为UD校验和;

  需要注意的是,计算UDP校验和的时候,UDP头部中的校验和字段的值应该先置为0,只有在计算完检验和之后才能在校验和字段填入正确的值。

  UDP校验和与IP首部校验和的区别?
  UDP校验和与IP首部校验和的计算方法是一致的,区别在于UDP校验和是对UDP层(传输层)的UDP头部和UDP数据段进行校验,而IP首部校验和只是对IP层(网络层)的IP头部进行校验。

2.4 应用层:

  UDP层的数据段即应用层的数据报,即用户需要发送的数据。

在这里插入图片描述

四、总结

  从数据报的格式角度来看,TCP/IP数据包的分层更像是一层一层的包装(套外壳),如下图所示。

在这里插入图片描述

  在发送端,就像是给一个东西“包装”的过程。如下图所示。从用户层开始,用户传输的数据作为用户层的数据包给到传输层,传输层给其加一层包装(UDP首部)后再传给网络层,网络层对传输层传来的数据包再加上一层包装(IP首部)后传给数据链路层,而数据链路层再对网络层传来的数据包加上一层包装(以太网帧头、FCS)后就可以传到物理层,物理层对数据链路层传来的数据包进行包装(加上前导码、SFD)后就是一帧完整的以太网帧了,就可以用于数据的传输了。

在这里插入图片描述
  而在接收端,就像是一个“拆包装”的过程,如下图所示。接收到一帧完整的以太网帧,首先从物理层开始拆包装,物理层获取到物理层的包装上的信息(前导码、SFD)后,把拆除外包装的产品(物理层的数据段)丢给数据链路层。数据链路层在获取到数据链路层包装上的信息(以太网帧头、FCS)后,把数据链路层的数据段丢给网络层。然后网络层在获取到网络层的外包装上的信息(IP首部)后,再将网络层拆除包装后的产品(IP数据段)丢给传输层。传输层在获取到传输的外包装上的信息(UDP首部)后,再将传输层拆除包装后的产品(UDP数据段)丢给用户层。最后,用户层即我们最终需要获得的用户发送的数据。

在这里插入图片描述

四、写在后面

  好了,以上就是关于以太网TCP/IP协议分层的介绍,以及对传输层采用UDP协议,网络层采用IP协议的情况下的各层数据报格式进行讲解。
  以上仅为个人学习笔记,如有疑问,欢迎评论区友好交流批评指正!!!

在这里插入图片描述


http://www.niftyadmin.cn/n/224581.html

相关文章

Arduino开发之如何连接超声波模块?

文章目录0、引言1、超声波模块说明2、代码编写3、功能演示0、引言 在利用Arduino开发过程中,若需知道设备与周围环境的距离,可利用超声波模块测量短程距离,使运动设备感知周围环境。本文在【Arduino如何进行开发?】基础上&#xf…

京东产发奔赴港股上市,分拆上市或成互联网大厂的共同选择?

‍数据智能产业创新服务媒体——聚焦数智 改变商业3月30日晚间,京东集团(9618.HK)相继发布2则公告称,拟分拆京东智能产发股份有限公司(以下简称“京东产发”)、京东工业股份有限公司(以下简称“…

(三)【软件设计师】计算机系统—CPU习题联系

文章目录一、2014年上半年第1题二、2014年下半年第3题三、2017年上半年第1题四、2009年下半年第1题五、2010年上半年第5题六、2011年下半年第5题七、2011年下半年第6题八、2012年下半年第1题九、2019年上半年第1题十、2010年上半年第1题十一、2011年上半年第1题十二、2016年下半…

张程伟:从开源项目到企业级数据库,云和恩墨 MogDB Uqbar 的技术探索与实践...

导语4月8日下午,为期两天的第十二届数据技术嘉年华(DTC 2023)在北京新云南皇冠假日酒店圆满落下帷幕。大会以“开源融合数字化——引领数据技术发展,释放数据要素价值”为主题,汇聚产学研各界精英到场交流。作为大会的…

使用docker-compose搭建tomcat并且部署crm项目(mysql主从)使用wait设置服务启动

一.部署tomcat 1.下载相关镜像tomcat8.5.40 docker pull tomcat:8.5.40 2.在/data目录下创建tomcat/webapps目录 mkdir -p /data/tomcat/webapps 注意:这里是准备将宿主机的/data/tomcat/webapps映射到容器的 /usr/local/tomcat/webapps目录,那么…

一位大专学历的女程序员要求月薪25K,学历重要吗?来看看面试过程

“请提供一份完整的简历,以便我审查。从您的简历中,我感觉您写得还不错。方便的话,您可以自我简单介绍一下吗?“ ”好的,我叫李娟,拥有大专学位,目前正在寻找一份Java开发架构师的工作岗位。“…

Apache网页优化

Apache 网页与安全优化 在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代。 为了适应企业需求,就需要考虑如何提升Apa…

【华为OD机试真题 C++】1004 - TLV解析

文章目录一、题目🔸题目描述🔸输入输出🔸样例1二、代码参考作者:KJ.JK🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x…