tcp伪首部包括哪些_TCP/UDP协议详解...

9ada581f4513b20c93184eb724c31b52.png

本文主要讲的是传输层的两大重要协议TCP和UDP,虽然在Android开发中,并不需要了解到这么底层,但有理论的支撑,写代码总是很自信的啦。理论指导着实践,实践是理论检验的唯一标准。站在巨人的肩膀窥伺网络世界。

34fa37622fcbaf55642862358cf75668.png

用户数据报协议UDP

用户数据报协议UDP只在IP的数据报服务至上增加了复用和分用的功能以及差错检测的功能。只有面向无连接的报文,不可靠传输的特点。UDP对应用层交下来的数据只添加首部,并进行特别的处理,就交给网络层;对网络层传递上来的用户数据报拆封首部后,原封不动地交给应用层。

f8a1045434ad8f29f3a059d1463091c0.png

1、UDP的首部格式

用户数据报UDP分为两个字段:数据字段和首部字段,从图来分析用户数据报UDP的首部格式。

1120b6679fde7e79ae69c1c24644e757.png

UDP首部字段很简单,由4个字段组成,每个字段的长度都是两个字节,共8字节。

  • 源端口 原端口号,在需要对方回信时选用,不需要时可全0
  • 目的端口 目的端口号,这在终点交付报文时必须使用,不然数据交给谁呢?
  • 长度 UDP的长度,最小值为8字节,仅有首部
  • 检验和 检测用户数据报在传输过程是否有错,有错就丢弃。

在传输的过程中,如果接收方UDP发现收到的报文中的目的端口不存在,会直接丢弃,然后由网际控制报文协议ICMP给发送方发送“端口不可达”差错报文。

2、伪首部

计算校验和时,需要在UDP之前增加12个字节的伪首部。这种首部并不是用户数据报的真正首部。伪首部并不在网络中传输,只是在计算检验和,临时添加在UDP用户数据报前,得到一个临时的用户数据报。

UDP的校验和是把首部和数据部分一起校验,发送方计算校验和的一般步骤:

  1. 将首部的校验和字段填充为0(零)
  2. 把伪首部和用户数据报UDP看出16位的字符串连接起来
  3. 如果数据部分不是偶数字节,则填充一个全零字节(该字节不发送到网络层)
  4. 按二进制反马计算出这些16位字的和
  5. 然后将和写入校验和字段,就可以发送到网络层了。

接收方收到用户数据报后,连同伪首部一起,按二进制反码求这些16位字的和,无差错结果是应全为1.否则出错,直接丢弃该报文。

2eed9920d888ad31781560e7072cd588.png

TCP协议

TCP协议作为传输层主要协议之一,具有面向连接,端到端,可靠的全双工通信,面向字节流的数据传输协议。

1、TCP报文段

虽然TCP面向字节流,但TCP传输的数据单元却是报文段。TCP报文段分为TCP首部和数据部分,TCP报文段首部的前20个字节是固定的,后面有4*n字节根据需要动态添加的选项,最大长度为40字节。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值