万兆网中的UDP/IP协议-

万兆网中的UDP/IP协议

因为项目中需要需要用到万兆网,就专门编写调了一下,在调试过程中,用到了很多网络方面的知识,自己就根据查找的资料,总结了一下。

最重要的依旧是TCP/IP四层模型,如图所示:


万兆网中的UDP/IP协议

TCP/IP四层模型

我们不用去关注应用层和链路层,主要关注网络层和传输层。

网络层

IP协议是TCP/IP协议族的核心协议,它是TCP/IP协议族的动力,为上层协议提供无状态、无连接、不可靠的服务。其主要包含两个方面:

1.IP头部信息。IP头部信息出现在每个IP数据报中,指定IP通信的源IP地址、目的IP地址,指导IP分片和重组,以及指定部分通信行为。

2.IP数据报的路由和转发。IP数据报的路由和转发发生在除目标机器之外的所有主机和路由器上。它们决定数据报是否应该转发以及如何转发。

传输层

首先看下TCP和UDP的区别:

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

我们要传输大量的数据,速度要求比较快,所以要用UDP协议,控制好传输的数据格式,经过实际测试,也是没有掉包的。

我们来看看在网络中,一帧以太网数据包的格式:

万兆网中的UDP/IP协议

以太网数据包的格式

IP协议: 报文头的前 20 个字节是固定的,后面的可变,其报文头格式如下:

万兆网中的UDP/IP协议

IP协议报文头格式

长度通常为20个字节,除非含有可变长的选项部分。

4位版本号指定IP协议的版本。对于IPv4来说,其值是4;其他IPv4的扩展版本(如SIP协议和PIP协议),则具有不同的版本号。

4位头部长度标识该IP头部有多少个32bit字(4字节)。因为4位最大能表示15,所以IP头部最长是60字节。

8位服务类型包括一个3位的优先权字段,4位的TOS字段和1位的保留字段(必须置0)。4位的TOS字段分别表示:最小延时,最大吞吐量,最高可靠性和最小费用。其中最多有一个设置为1,应用程序应该根据实际需要来设置它。

16位总长度是指整个IP数据报的长度,以字节为单位,因此IP数据报的最大长度为65535字节。但由于MTU的限制,长度超过MTU的数据报都将被分片传输,所以实际传输的IP数据报长度不会达到这个最大值。

16位标识唯一地标识主机发送地每一个数据报。其初始值由系统随机生成,每发送一个数据报,其值就加1.该值在数据报分片时被复制到每个分片中,因此同一个数据报地所有分片都具有相同地标识。

3位标志字段的第一位保留。第二位表示"禁止分片"。如果设置了这个位,IP模块将不对数据报进行分片。在这种情况下,如果IP数据报长度超过MTU的话,IP模块将丢弃该数据报并返回一个ICMP差错报文。第三位表示“更多分片”。一般,除了最后一个分片外,其他分片都要把它置1。

13位分片偏移是分片相对原始IP数据报开始处(仅指数据部分)的偏移。实际的偏移值是该值左移3位后得到的。由于这个原因,除了最后一个IP分片外,每个IP分片的数据部分的长度必须是8的整数倍(这样才能保证后面的IP分片拥有一个合适的偏移量)。

8位生存时间(TTL)是数据报到达目的地之前允许经过的路由器跳数。TTL值被发送端设置(常见值位64)。数据包在转发过程中每经过一个路由,该值就被路由器减1。当TTL值减为0时,路由器将丢弃数据报,并向源端发送一个ICMP差错报文。TTL值可以防止数据报陷入路由循环。

8位协议用来区分上层协议,其中ICMP是1,TCP是6,UDP是17。

16位头部校验和由发送端填充,接收端对其使用CRC算法以检验IP数据报头部在传输过程中是否损坏。

32位的源端IP地址和目的端IP地址用来标识数据报的发送端和接收端。一般情况下,这两个地址在整个数据报的传递过程中保持不变,而不论它中间经过多少个中转路由器。

IPv4最后一个选项字段是可变长的可选信息。这部分最多包含40个字节,因为IP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。主要是和路由相关,项目中是端对端,所以不需要太关注。

UDP组成:数据报首(源端口号、目标端口号、数据报长度、校验和)+数据,除数据外每个部分各占两个字节,1个字节8位。


万兆网中的UDP/IP协议

UDP组成


UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。 数据发送一方将 UDP 数据包通过源端口发送出去,而数据接收一方则通过目标端口接收数据。从理论上讲,含报头在内的数据报的最大长度为 65535 字节。不过,一些实际应用往往会限制数据包的大小。数据包的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的(共8个字节),所以数据长度可测。UDP 协议使用报头中的校验值来保证数据的安全,校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。

以太网传送IPv4报文,其最大MUT为1500字节,而IP报头占20字节,UDP报头占8字节,所以以太网使用UDP协议时,一帧数据长度最好不要超过1472字节。若超过了这个范围,会分片传送,如果数据出错,那问题可能就多了,而且重组也麻烦;所以在实际使用的使用要计算好长度,加以限制。

展开阅读全文

页面更新:2024-04-29

标签:协议   报头   报文   以太网   字段   路由   字节   头部   长度   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top