TCP/IP协议详解 卷一 --------UDP

小小搬运工又来了,五一节即将到来了大笑

UDP:用户数据报协议

1、引言

      UDP是面向数据报的传输层协议,即进程的每个输出操作刚好产生一个UDP数据报,并组装成一份待发送的IP数据报。

      TCP是面向流字符,即应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。

       UDP数据报封装成IP数据报的格式如图1所示:

     

图1 UDP封装

2、UDP首部

UDP首部如图2所示:


图2 UDP首部

端口号表示发送进程和接收进程。(IP数据报根据协议字段值区分是UDP或TCP)

TCP和UDP用目的端口号来分用来自IP层的数据。TCP端口号则由TCP来查看,UDP端口号则由UDP来查看。分用指当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议上加的报文首部。每层协议盒都要检查报文首部中的协议标识,以确定接收数据的上层协议,该过程称为分用。分用的整体过程如图3所示。


图3 以太网数据帧的分用过程

UDP长度字段是UDP首部和UDP数据的字节长度。最小值为8,即可以发送一份数据长度为0字节的UDP数据报


3、UDP校验和

        UDP校验和覆盖UDP首部和UDP数据。(IP数据报中校验和是首部校验和,不涉及数据)UDP的校验和是可选的,而TCP的校验和是必须的。

        UDP校验和的计算方法与IP校验和类似,但不同之处在于:首先,UDP数据报的长度可以为奇数字节,但是校验和算法是将若干个16bit字相加。因此必要时需要在最后填充字节0,但是这部分字节只是为了校验和,因此可能增加的填充字节并不被传送

       

      UDP数据报和TCP段都包含一个12字节长的伪首部,该部分是为了计算检验和而设置的。伪首部是包含了IP首部的一些字段,UDP伪首部如图4所示。加入这些字段的目的是让UDP两次检查数据是否已经正确到达目的地。


图 4 UDP校验和计算过程中使用的各个字段

      对于图中,UDP是单数字节,因此在计算校验和时需要加上填充字段,若校验和的计算结果为0,则存入值为全1,若传送的校验和为0,表示发送端没有计算校验和。

      注:发送端没有计算校验和而接收端检测到校验和有差错,则该UDP数据报会被丢弃,并且不会产生差错报文。

     UDP校验和选项在默认条件下是打开的。


4、IP分片

        IP把MTU和数据报长度进行比较,如果有需要会进行分片。分片会发生在原始发送端主机上,也有可能发生在中间路由器上。

        IP数据报分片之后,只有达到目的地之后才进行组装。重新组装是由目的端的IP层完成,而分片和重组装的过程对于传输层是透明的。

       当需要分片,但是数据报设置了“不分片”位,则IP不对数据报分片,同时将该数据报丢弃,并发送一个ICMP差错报文。

       在传输数据过程中经常要避免分片,因为当丢失某个分片时,需要重传整个数据文。

      关于IP分片,如图5所示


图5 观察UDP数据报分片

前两行,能直接装入以太网数据帧,没有被分片(以太网数据帧不超过1500字节,其中IP首部20字节,UDP首部8字节)

对于第3行,写入的udp数据是1473个字节,导致数据报1501个字节,需要分片。分片信息中第一片长度(位于:和@之间的数字)1480(包含UDP首部),则其加上IP首部和UDP首部刚好1500个字节,第二个即第4行只剩一个字节的数据。

@后的数字是从数据报开始出计算的片偏移值

+表示IP首部中3bit标志字段中的“更多片”比特,即是不是最后一片?


注意:分片时,除了最后一片外,其他每一片的数据部分(除IP首部外的其余部分)必须是8个字节的整数倍。本例中1480是8的整数倍


注意:除首片之后的所有分片都省略了协议名UDP、源端口号和目的端口号。(UDP首部还有首部校验和和长度信息?为什么4行中长度是1),是不是应该是除首片之外所有的分片都省略了UDP首部。


5、ICMP不可达差错(需要分片)

发生ICMP不可达差错的一种情况是:当路由器收到一份需要分片的数据报,而在IP首部设置了不可分片(DF)的标志比特。

若某个程序需要判断到达目的端的路途中最小MTU是多少---称为路径MTU发现机制。


需要分片但是未分片情况下产生的ICMP不可达差错报文格式如下:


图6 需要分片但是设置不分片标志比特时ICMP不可达差错报文格式

注:如果路由器不提供这种新的ICMP差错报文格式,则下一站的MTU就设为0


6、用Traceroute确定路径MTU

利用Traceroute程序发送分组,并设置“不分片”标志比特,发送的第一个分组的长度正好与出口MTU相等,每次收到ICMP“不能分片”差错时就减少分组的长度。若路由发送的ICMP差错报文是新格式,则包含出口的MTU,则利用该MTU值来发送新的报文,否则就用下一个最小的MTU值来发送。

7、采用UDP路径MTU发现


8、UDP和ARP之间的交互作用

       对于UDP需要分组的情况,由于IP能够很快的产生n个数据报片,所以每个数据片都会引发一个ARP请求。理论上产生的分片数据报,应该只有第一个(片偏移为零)的数据报引发ARP请求。这种情况为ARP洪泛(即以高速率重复发送到同一个IP地址的ARP请求),在这种情况下,在等待一个ARP应答时,只将最后一个报文发送给特定目的主机。

        在第一个数据报出现时,IP层需要启动一个定时器。此处第一个表示第一个接收到的报文,并非片偏移为0的数据报。正常的定时器值为30秒或60秒,如果定时器超时而该数据报的所有数据报片未能全部到达,则这些数据报会被丢弃。

       对于大多数Berkeley派生的实现从不产生ICMP 组装差错。这些实现会设置定时器,也会在定时器溢出时将数据报片丢弃,但是不生成ICMP差错。且,并未接收到包含UDP首部的偏移量为0的第一个数据报片。除非收到第一个数据报片,否则并不要求任何实现产生ICMP差错。

         ARP输入是后进先出。

9、最大UDP数据报长度

       理论上IP数据报长度为65535字节,除掉20个IP首部和8个字节的UDP首部,UDP数据报中用户数据的最长长度为65507字节。但是,大多数实现所提供的长度比这个最大值要小。

10、ICMP源站抑制差错

当一个系统(路由器或主机)接收数据报的速度比其处理速度要快时,可能产生源一直差错。

ICMP源站抑制差错报文格式如图7所示:


图7: ICMP源站抑制差错报文格式


11、UDP服务器的设计

大多数UDP服务器是交互服务器。通常程序使用的每个UDP端口都与一个有限大小的输入队列相联系。即来自不同客户的差不多同时到达的请求都有UDP自动排队。排队溢出会造成内核中的UDP模块丢弃数据报的可能性存在。

应用程序并不知道队列何时溢出。只是由UDP对超出数据报进行丢弃处理。UDP输出队列是FIFO(先进先出)。



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《TCP/IP详解 一、二、三pdf》是一本网络技术的权威著作,由美国网络专家Douglas E. Comer所著。这本书是关于TCP/IP协议的详细解析和介绍,包含了网络通信的基本原理、协议栈的结构、数据传输过程等内容。 《TCP/IP详解 一、二、三pdf》的一主要介绍了TCP/IP协议的基础知识,包括协议栈的层次结构、IP地址和子网划分、网络接口和路由选择、ARP和RARP协议、网络地址转换等。这一的内容非常基础,是理解后续的基础。 二则深入介绍了TCP协议的工作原理和实现细节。包括三次握手和四次挥手过程、拥塞控制、流量控制和窗口管理、超时重传、各种TCP选项和标志位等。通过详细解析,读者能够更好地理解TCP协议的工作机制和数据传输的流程。 三则介绍了一些与IP协议相关的主题,如IP路由表和路由查找算法、多播和广播、IP转发和分片、IP协议的安全性等。这一的内容相对较为复杂,需要读者具备一定的网络知识和经验。 总的来说,《TCP/IP详解 一、二、三pdf》是一本全面深入介绍TCP/IP协议的重要参考书。无论是对于网络工程师、系统管理员还是对于对网络通信感兴趣的读者来说,这本书都具有很高的参考价值。通过阅读这本书,读者可以更好地理解网络通信的原理和实现,提高网络的性能和安全性。 ### 回答2: 《TCP/IP详解 一、二、三》是一本经典的网络技术书籍,全称为《TCP/IP协议详解一-协议》、《TCP/IP协议详解二-实现》和《TCP/IP协议详解三- TCP事务、HTTP、NNTP、IMAP等》。 《TCP/IP详解 一-协议》首先介绍了TCP/IP协议栈的基本原理和架构,包括IP协议、ICMP协议、ARP/RARP协议、UDP协议、TCP协议等。通过深入解析这些协议,读者可以全面了解TCP/IP协议栈的工作机制和功能。 《TCP/IP详解 二-实现》从实现的角度出发,介绍了如何在不同的操作系统中进行TCP/IP协议栈的实现,包括网络设备驱动程序、协议控制块、握手过程、数据传输和错误处理等。这本书详细讲解了TCP/IP协议栈在各种操作系统环境下的实际应用。 《TCP/IP详解 三- TCP事务、HTTP、NNTP、IMAP等》则着重介绍了一些常用的应用层协议,如TCP事务、HTTP协议、NNTP协议、IMAP协议等。这些协议在互联网中起到了重要的作用,通过深入了解它们的工作原理和应用场景,读者可以更好地掌握网络应用开发和应用层协议的使用。 总体来说,《TCP/IP详解 一、二、三》是一本权威、全面的TCP/IP网络技术著作。适合网络工程师、系统管理员、软件开发人员等专业人士学习使用。通过阅读这本书籍,读者可以深入理解TCP/IP协议栈的原理和实现,提升对网络通信的理解和应用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值