前言前一部分讲了路由协议相关的知识点,包括如何通过路由规则、动态路由协议等信息选择数据报出口。

今天是五一节,就来说说UDP相关的知识点,还是八股文。

如果说MAC层定义了本地局域网的传输行为,IP层定义了整个网络端到端的传输行为,这两层基本定义了网络传输是以包为单位的现象,第二层叫帧,网络层叫包,传输层叫段。数据包是分开传输的,自己路由,在不同的设备中封装和解封装,不保证到达。

UDP是一种简单的面向数据包的传输层协议。

该过程的每个输出操作恰好生成一个UDP数据报,并将其组装成要发送的IP数据报。

UDP不提供可靠性,只负责将应用程序传递的数据发送到IP层,但不保证它们能到达目的地。

" UDP功能"

  • 简单交流
  • 任意传输,任何人都可以将数据传输到相应的端口。
  • 不会根据网络情况而改变。
  • 1.UDP头端口号表示发送进程和接收进程。

    因为IP层已经将IP数据报分配给TCP或UDP(根据IP报头中协议字段的值)

    因此,TCP端口号由TCP查看,而UDP端口号由UDP查看。

    TCP端口号和UDP端口号相互独立。

    UDP字段值是UDP报头和UDP数据的字节长度。

    最小值为8字节,即无数据。

    IP数据报长度的值是数据报的全长,所以UDP数据报长度是全长减去IP头的长度。

    2.UDP校验和UDP校验和覆盖UDP头和UDP数据,而IP校验和只覆盖IP头,不覆盖数据。

    UDP的校验和是可选的,而TCP的校验和是必需的。

    UDP校验和的基本计算方法与IP报头校验和类似,但也有一些不同。

    UDP数据报的长度可以是奇数字节,但是校验和算法是加几个16位的字。解决方法是在必要时在末尾添加填充字节0,只是为了检查sum的计算。

    UDP数据报和TCP end都包含一个12字节的伪报头,该报头是为计算校验和而设置的。

    伪报头包含IP报头的一些字段,以便UDP可以两次检查数据是否正确到达目的地。

    如果校验和的结果为0,则存储值全为1(65535),在二进制补码的计算中等价。

    如果发送的校验和为0,则发送方没有计算校验和。

    如果发送方没有计算校验和,而接收方检测到校验和错误,UDP数据报将被悄悄丢弃。

    3.IP分段“当要发送的数据包大小大于路径MTU时,需要IP数据报分段”

    IP数据报被分段后,只有在到达目的地时才会被重组。

    重组由目的地的IP层完成,以便使分段和重组过程对传输层(TCP和UDP)透明。

    已经分段的数据报可以再次分段,IP报头中包含的数据为分段和重组提供了足够的信息。

    对于发送方发送的每个IP数据报,其标识字段包含一个唯一值,当数据报被分片时,该值不会被复制到每个分片中。

    标志字段用其中一个位指示“更多的切片”。

    除了最后一个片,对于组成数据报的每隔一个片,该位应该被设置为1。

    切片偏移字段指的是切片从原始数据报的开始处偏移的位置。

    当数据报被分段时,每个分段的总长度值应改为该分段的长度值。

    标志字段中有一个位称为“无碎片”位。如果该位为1,IP将不分段数据报。相反,丢弃数据报并发送ICMP错误消息。

    当IP数据报被分段时,每个分段成为一个具有自己的IP报头的分组,在选择路由器时,该报头独立于其他分组。到了目的地可能就坏了。

    如果有一段数据丢失,整个数据报将被重传。因为是中间路由器将数据报分段,而不是原始系统,后者不知道数据报是如何分段的。

    4.ICMP不可达错误(需要分段)的另一种情况是当路由器接收到需要分段的数据报,并且在IP报头中设置了DF的标志位。

    如果路由器没有提供这种新的ICMP错误消息格式,下一站的MTU将被设置为0。

    5.Traceroute是深入研究TCP/IP协议的方便有效的工具。

    不能保证从源端到目的端的两个连续的IP数据报具有相同的路由。

    首先发送一个TTL字段为1的UDP数据报,然后每次将TTL字段递增1,以确定路径中的每台路由器。当丢弃UDP数据报时,每台路由器都会返回ICMP超时消息2,而最终目的主机会生成ICMP端口不可达的消息。

    Traceroute不仅可以找到路由,还可以确定路径的MTU。

    “确定路径MTU:”发送数据包,并设置“无碎片”标志位。发送的第一个数据包的长度正好等于出口MTU,每次收到ICMP“无法分段”错误时,数据包长度都会减少。

    6.最大UDP数据报长度理论上,IP数据报的最大速度是65,535字节,受限于IP头的16位总长度字段。

    除去20字节的IP头和8字节的UDP头,UDP数据报中用户数据的最大长度为65,507字节。

    但是,一般实现提供的长度小于这个最大值。

    两个限制因素:

    (1)应用程序可能受到其程序接口的限制。例如,socket API可以设置接收和发送缓存的长度。

    (2)TCP/IP的内核实现。可能有一些实现特征(或错误)使得IP数据报的长度小于65535字节。

    7.ICMP源站禁止错误报告。当系统接收数据报的速度超过其处理速度时,可能会发生此错误。

    单词“可能”是因为即使系统没有缓存和丢弃数据报,也不需要发送源抑制消息。

    UDP和TCP的区别(1) TCP面向连接,UDP无连接。

    “什么是面向连接?」

    面向连接的协议将首先建立连接。例如,TCP会执行三次握手,但UDP不会。

    所谓连接建立,就是维护客户端和服务器之间的连接,建立一定的数据结构来维持双方交互的状态,以这样的数据结构来保证所谓的面向连接的特性。

    (2)TCP提供可靠的交互,通过TCP连接传输的数据会按顺序到达,不会出现错误、丢失或重复。

    UDP继承了IP包的特性,不保证不丢失,也不保证按顺序到达。

    (3)TCP是面向字节流的,而UDP继承了IP的特点,是基于包的,一个一个发送,一个一个接收。

    (4)TCP有拥塞控制,根据接收方的吞吐量来控制发送速度,UDP没有。

    (5)TCP是有状态服务,UDP是无状态服务。

    使用场景需要的资源较少,处于网络条件较好的内网,或者对丢包不敏感。
  • 不需要建立连接但可以广播的应用程序DHCP是一种广播形式,基于UDP协议。组播,D类地址,即组播地址。使用此地址向一组机器多播数据包。
  • 它需要高处理速度、低延迟并能容忍少量分组丢失,但要求即使网络拥塞,发送速度也不会改变。
  • ===============================

    我是Liusy,一个喜欢健身的程序员。

    更多干货和最新消息,请关注微信官方账号:上古伪神。

    如果对你有帮助,关注它,转发它,就是对我最大的支持!!!谢谢你

    想了解更多关于UDP指什么(udp是啥)的内容,请扫微信
    或微信搜索jiemingpan


    版权说明:本文版权由作者自行负责,如有侵权请联系本站删除。