TCP/IP详解(卷一)之UDP

UDP首部格式

在这里插入图片描述
1.端口号表示发送进程。
2.长度指的是UDP首部和UDP数据的字节长度。
注意:该字段的最小值为8字节,发送0字节的UDP数据报是OK。
所以UDP数据报长度是全长减去IP首部的长度。
3.UDP检验和覆盖UDP首部和UDP数据长度(可选)。

UDP数据报和TCP段都包含一个12字节长的伪首部(计算检验和)。

在这里插入图片描述
(奇数长度的数据报,所以在计算检验和时需要加上填充字节)
1.传送的检验和为0时,说明发送端没有计算检验和。
2.若发送端没有计算检验和而接收端检测到检验和有差错,则UDP数据报将被悄悄丢弃。

IP分片

定义

若所要发送的数据长度大于MTU,则要发生切片。
注意:数据报分片以后,只有到达目的地(下一站)才进行重装(IP层)。
且只有路由器才能进行分片。

标志字段

组成

由三位bit组成。

意义

1.最高位:保留位,无意义。
2.(DF)中间位(Don’t Fragment):设置位1则不分片,设置位0则分片。
注意:当设置位1时,若发生所发送的数据长度大于MTU则产生数据包丢弃并发送一个ICMP差错报文。
3.(MF)最低位(More Fragment ) :设置位1则后面还有分片,设置位0则后面没有分片。

ICMP不可达差错(需要分片但DF设置不分片bit)

代码字段:4
在这里插入图片描述
1.情况:当路由器收到一份需要分片的数据报,而在IP首部又设置不分片的标志bit。
则可以利用该报文判断到达目的端路途中的最小MTU——————路径MTU发现机制。
2.若路由器没有提供这种新的ICMP差错报文格式,那么下一站的MTU就设置位0.

Traceroute确定路径MTU

1.功能:发送分组,并设置“不分片”的标志bit。
2.发送的第一个分组的长度正好与出口MTU相等,每次收到ICMP“不能分片”差错时就减少分组的长度。若路由器发送的ICMP差错报文是新格式,包含出口的MTU,那么就用该MTU值来发送,否就用下一个最小的MTU值来发送。

UDP与ARP之间的交互作用

1.在第一个ARP应答返回前,共产生6个ARP请求。(ARP洪泛)
2.在接受到第一个ARP应答时,只发送最后一个数据报。

在第一个数据报出现时,IP层必须启动一个定时器。
“第一个”指的是给定数据报的第一个到达数据报片,而不是第一给数据报片(数据报片偏移位0)。
若定时器超时而该数据报的所有数据报片未能全到达,那么将这些数据报丢弃。若不这么做将会产生接收端缓存满。

最大UDP数据报长度

(实际比理论小很多)

抑制因素

1.应用程序可能会收到其程序接口限制。
2.来自于TCP/IP的内核实现。

数据报截断

原因:UDP编程接口允许应用程序指定每次返回的最大字节数。
若接收到的数据报长度大于应用程序所能处理的长度将会发生截断。

ICMP源站抑制差错

当一个系统(路由器或主机)接受数据报的速度比其处理速度快时,可能产生这个差错。
即使一个系统已经没有缓存并丢弃数据报,也不要求它一定要发送源站抑制报文。

报文格式

在这里插入图片描述

UDP服务器设计

客户IP地址及端口号

UPD数据报;IP首部包含源端口和目的端的IP;UDP首部包含源端和目的端的UDP端口号。

目的IP地址

一些应用程序要知道数据报是发给谁,即目的IP地址。

UDP输入队列

单个服务器进程对单个UDP端口号上的所有客户请求进行处理。
但每个UDP端口都与一个有限大小的输入队列(自动排队)相关联。
注意:排队溢出造成内核中的UDP模块丢弃数据报可能存在。

关键点:
1.应用程序并不知道其输入队列何时溢出。
2.只是由UDP对超出数据报进行丢弃处理。
3.没有任何信息告诉客户其数据报被丢弃。

限制本地IP地址

大多数服务器在创建UDP端点时都使其本地IP具有通配符。
表明进入的UDP数据报若其目的地位服务器端口,那么在任何本地接口均可接受到它。

1.当服务器创建端点时,它可把其中一个主机本地IP地址包括广播地址指定位端点的本地IP地址。且只有当目的地址与指定的地址相匹配时,进入的UDP数据报才能被送到这个端点。
(就相当于你没有钥匙,不能进家门)
2.有可能在相同的端口上启动不同的服务器,每个服务器具有不同的本地IP地址。

若存在一个含星号的IP地址,那么就隐含一种优先级。
若为端点指定特定IP地址,那么在匹配目的地址时始终优先匹配该IP地址,只有在匹配不成功时才使用含星号的端点。

限制远端IP地址

远端IP地址和远端端口号都显示*.*,则是该端点将接受来自任何IP地址和任何端口号的UDP数据报。
若指定远端地址时没有选择本地地址,那么将自动选择本地地址。它的值就成为选择到达远端IP地址路由时将选择的接口IP地址。
在这里插入图片描述lport:服务器有名的端口号。localIP:必须是本地接口的IP地址。

每个端口号有多个接收者

1.多个端点可以使用同一个IP地址和IP端口
2.当UDP数据报到达目的IP地址为广播地址或多播地址,且在目的IP地址和端口号处有多个端点时,就向每个端点传送一份数据报的复制
若UDP数据报到达的是一个单播地址,那么只向其中一个端点传送一份数据报的复制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值