UDP的首部格式

        用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,由四个字段组成,每个字段的长度都是两个字节。

       (1)源端口:源端口号。在需要对方回信时选用。不需要时可用全0。

       (2)目的端口:目的端口号。在终点交付报文时使用。

       (3)长度:UDP用户数据报的长度,其最小值是8(仅有首部)。

       (4)检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。

        当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交最后的终点——应用进程。

        如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方。虽然在UDP之间的通信要用到其端口号,但由于UDP的通信是无连接的,因此不需要使用套接字(TCP之间的通信必须要在两个套接字之间建立连接)。UDP用户数据报首部中检验和的计算方法很特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报的真正的首部。只是在计算检验和时临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。

        (检验和的计算方法有些复杂,在此不做计算)

### TCP 和 UDP 的数据包头部结构 #### TCP 数据包头部结构 TCP 头部固定部分长度为 20 字节,可选字段使得整个头部最大可达 60 字节。以下是 TCP 报头的主要组成部分: | 名称 | 长度 (bit) | 描述 | | --- | ---------- | ---- | | 源端口 | 16 | 发送方的端口号 | | 目标端口 | 16 | 接收方的端口号 | | 序列号 | 32 | 当前发送的数据的第一个字节编号 | | 确认号 | 32 | 下一个期望接收的数据序列号 | | 数据偏移 | 4 | 表明报文段首部的长度 | | 保留位 | 6 | 通常设置为 0 | | 控制标志 | 6 | 包含 URG、ACK、PSH、RST、SYN、FIN 标志| | 窗口大小 | 16 | 接受窗口大小 | | 校验和 | 16 | 覆盖整个 TCP 报文段 | | 紧急指针 | 16 | 如果设置了 URG,则表示紧急数据的位置| ```plaintext +-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+ ``` #### UDP 数据包头部结构 UDP 头部非常简洁,只有 8 字节固定长度。其主要组成如下表所示: | 名称 | 长度(bit)|描述 | | ------------- | | 源端口 | 16 | 发送者的端口号 | | 目标端口 | 16 | 接收者的端口号 | | 长度 | 16 | UDP 用户数据报总长度(包括头部)| | 校验和 | 16 | 计算校验值 | ```plaintext +-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` 对于需要更高性能的应用程序来说,较小的头部开销意味着更高的效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值