首页 > 编程知识 正文

以太网基于什么协议标准(以太网UDP协议讲解)

时间:2023-05-04 01:09:24 阅读:122791 作者:668

一. TCP/IP参考模型1 .概述TCP/IP参考模型是计算机网络的frdqdARPANET及其后续互联网中使用的参考模型。 ARPANET是由美国国防部DOD(u.s.departmentofdefense )赞助的研究网络。 用逐渐租用的电话线连接了数百所大学和政府部门。 无线网络和卫星出现后,现有的协议在与它们连接时出现了问题,因此需要新的参考体系结构。 这种体系结构在这两个主要协议出现后被称为TCP/IP参考模型(TCP/IP参考模型)。

2.4层模型TCP/IP是实现网络互联的一系列通信协议。 互联网体系结构以TCP/IP为主。 基于TCP/IP的参考模型将协议分为四个层:网络接入层、互联网互连层(主机到主机)、传输层和APP应用层。

高速APP应用层

该APP应用层对应于OSI参考模型的上层,为用户提供用户所需的各种服务,包括用户自身的数据传输(可以拥有专用协议数据)、FTP、Telnet、DNS、SMTP等.传输层

传输层与OSI参考模型的传输层相对应,为APP应用层实体提供端到端通信功能,保证数据包的顺序传输和数据完整性。 该层定义了两个主要协议。 传输控制协议(TCP )和UDP .是互联网互连层

互联网层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。 包含用于设计数据包在整个网络上的逻辑传输的协议。 重点是为主机重新分配IP地址以完成主机寻址,还负责在不同网络上路由数据包。 该层有三个主要协议:互联网协议(IP )、互联网组管理协议(IGMP )和互联网控制消息传递协议(ICMP )。

IP协议是互联网互连层最重要的协议,提供可靠、无连接的数据报分发服务。 网络访问层(主机-网络层)

网络接入层对应于OSI参考模型的物理层和数据链路层。 监视主机和网络之间的数据交换。 实际上,TCP/IP本身并未定义此层的协议,每个参与互连的网络都使用自己的物理层和数据链路层协议与TCP/IP的网络访问层进行连接。 地址解析协议(ARP )在此层上运行,即OSI参考模型的数据链路层。 2 .传输协议封装格式1 .以太网帧格式link。

在前导码和帧起始码的一帧中,帧的起始码是7字节前导码和1字节帧起始码。 7个8‘h’55个8’hd5。

标头包含源地址和目标地址的MAC地址、以太网类型字段以及可选的IEEE 802.1Q VLAN标记,用于说明VLAN成员资格和传输优先级。

有关以太网类型的信息,请参阅链接: link。

如果基于UDP协议,则主要使用ipv4(0x0800 );

标头格式为6字节目标mac地址6字节源mac地址ipv4(0x0800 )

负载数据长度在46-1500字节的范围内,由上层IP打包的数据报数据(由IP数据报头IP上层打包的传输数据);

帧检查帧校验码是32位循环冗馀校验码,用于验证帧数据是否损坏

在发送帧间隔一帧之后,发送方在下一帧被发送之前,需要重传至少12个octet的空闲线路状态代码。

2.IPV4数据报格式link .互联网协议版本4 (英文: internet protocol版本4,简称: IPv4,互联网通信协议版本4 ) )是互联网协议后续版本为IPv6,到2011年IANA IPv4地址完全用尽时,IPv6还处于部署初期。

“版本”(Version )版本字段必须占4位,并且通信双方使用的版本必须一致。 对于IPv4,字段的值为4。

标头长度(IHL )占4位,标头长度指示标头是否有32位字(4字节)。 此字段还用于确定数据的偏移,因为IPv4标头可能包含无数个选项。 此字段的最小值为5 (二进制0101 ),相当于5*4=20字节(RFC 791 ),最大十进制值为15。

区分服务(Differentiated Services,DS )占6bit,最初被定义为服务类型字段,实际上未使用,但在1998年被IETF重新定义为区分服务RFC 2474 此字段仅在使用区分服务时起作用,通常不使用。 例如,需要实时数据流的技术可以应用此字段。 一个例子是语音语音。

显式拥塞通知(ECN )在RFC 3168中定义,可以在不丢弃消息的情况下通知对方网络拥塞的发生。 ECN是一项可选功能,仅在两端都受支持、希望使用且基础网络受支持时使用。

“总长度”(Total Length ) 16位字段定义消息的总长度,包含标头和数据,单位为字节。 此字段的最小值为20(20字节的前0字节数据,其中最大值为216-1=65,535 )。 IP规定所有主机必须支持最小576字节的消息。 它假设高层数据长度为512字节,最大IP标头为60字节,有4字节的空闲空间,从而得出576字节,但大多数现代主机支持更大的消息。 如果下层数据链路协议的最大传输消息单元(MTU )字段的值小于IP消息长度,则消息将被分片,有关详细信息,请参见以下标题:

标识符(Identification)

占16位,这个字段主要被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。每产生一个数据报,计数器加1,并赋值给此字段。一些实验性的工作建议将此字段用于其它目的,例如增加报文跟踪信息以协助探测伪造的源地址。[7]

标志 (Flags)

这个3位字段用于控制和识别分片,它们是:
位0:保留,必须为0;
位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
如果DF标志被设置为1,但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。
当一个报文被分片,除了最后一片外的所有分片都设置MF为1。最后一个片段具有非零片段偏移字段,将其与未分片数据包区分开,未分片的偏移字段为0。

分片偏移 (Fragment Offset)

这个13位字段指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。
存活时间(Time To Live,TTL)
这个8位字段避免报文在互联网中永远存在(例如陷入路由环路)。存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减1,当此字段等于0时,报文不再向下一跳传送并被丢弃,最大值是255。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。

协议 (Protocol)

占8bit,这个字段定义了该报文数据区使用的协议。IANA维护着一份协议列表(最初由RFC 790定义),详细参见IP协议号列表链接: link.。
常见的如下图所示;其他UDP为0x11,TCP为0X06;

首部检验和 (Header Checksum)

这个16位检验和字段只对首部查错,不包括数据部分。在每一跳,路由器都要重新计算出的首部检验和并与此字段进行比对,如果不一致,此报文将会被丢弃。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。数据区的错误留待上层协议处理——用户数据报协议(UDP)和传输控制协议(TCP)都有检验和字段。此处的检验计算方法不使用CRC。

源地址(Source address)

一个IPv4地址由四个字节共32位构成,此字段的值是将每个字节转为二进制并拼在一起所得到的32位值。
例如,10.9.8.7是00001010000010010000100000000111。

目的地址(Destination address)

与源地址格式相同,但指出报文的接收端。

选项(Options)

附加的首部字段可能跟在目的地址之后,但这并不被经常使用,从1到40个字节不等。请注意首部长度字段必须包括足够的32位字来放下所有的选项(包括任何必须的填充以使首部长度能够被32位整除)。当选项列表的结尾不是首部的结尾时,EOL(选项列表结束,0x00)选项被插入列表末尾。

数据

数据字段不是首部的一部分,因此并不被包含在首部检验和中。数据的格式在协议首部字段中被指明,并可以是任意的传输层协议。

3.UDP数据打包格式 link.

用户数据报协议(英语:User Datagram Protocol,缩写:UDP;又称用户数据包协议)是一个简单的面向数据报的通信协议,位于OSI模型的传输层。该协议由David P. Reed在1980年设计且在RFC 768中被规范。典型网络上的众多使用UDP协议的关键应用在一定程度上是相似的。

在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验字段。

UDP适用于不需要或在程序中执行错误检查和纠正的应用,它避免了协议栈中此类处理的开销。对时间有较高要求的应用程序通常使用UDP,因为丢弃数据包比等待或重传导致延迟更可取。

来源连接端口及目的连接端口

UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位)。在IPv4中,“来源连接端口”和“校验和”是可选字段(以粉色背景标出)。在IPv6中,只有来源连接端口是可选字段。 各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能;

报文长度

该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部)。
在IPv6的jumbogram中,是有可能传输超过65535字节的UDP数据包的。依据RFC 2675,如果这种情况发生,报文长度应被填写为0。

校验和

校验和字段可以用于发现头部信息和数据中的传输错误。该字段在IPv4中是可选的,在IPv6中则是强制的。如果不使用校验和,该字段应被填充为全0。

校验和计算

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。