tcp报文格式_TCP 协议:特点和报文格式

c217b5e9e623ff524f0006cbd610b074.png

TCP 简介

TCP 用于从应用程序到网络的数据传输控制。

TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。

面向连接的、可靠的、基于字节流的传输层通信协议。

TCP 特点

1、点对点(不能广播、多播),面向连接

2、双向传递(全双工)

3、字节流:打包成报文段、保证有序接收、重复报文自动丢弃
缺点:不维护应用报文的边界(需要HTTP协议自己定义/r/n或content length进行结尾、GRPC)
优点:不强制要求应用必须离散的创建数据块,不限制数据块大小

4、流量缓存:解决速度不匹配问题(滑动窗口)

5、可靠的传输服务(保证可达,丢包时通过重发进而增加时延实现可靠性)

6、拥塞控制

TCP 报文格式

1fd80cd6e8f7d565b95049252010b75b.png

72c109a898d5af80c4c5afb78d2a975f.png

Sequence Number(32bit):序列号,定义报文段的唯一性;第一个TCP报文段中,序号值被系统初始化为某个随机值ISN(Initial Sequence Number,初始序号值)。那么在该传输方向上(从A到B),后续的TCP报文段中序号值将被系统设置成ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移。例如,某个TCP报文段传送的数据是字节流中的第1025~2048字节,那么该报文段的序号值就是ISN+1025.另外一个传输方向(从B到A)的TCP报文段的序号值也具有相同的含义。

Acknowledgment Number(32bit):用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。

2)确认和重传:白帽青年:TCP 协议:确认和重传

Header Length(4bit):4位头部长度,标识该TCP头部有多少个32bit字(4字节)。因为4位最大能标识15,所以TCP头部最长是60字节。

Reserved(6bit):6位保留位

Flags(6bit):tcp标志位

URG标志,表示紧急指针(urgent pointer)是否有效。

如:在telnet连接过程中,按了CTRL+C,在这个终止过程中,就可以在URG位置1,server接收到后,不论缓冲区中是否有数据待处理,都会优先处理该报文。

ACK标志,表示确认号是否有效。我们称携带ACK标识的TCP报文段为确认报文段。

PSH标志,提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会一直停留在TCP接收缓冲区中)。

如:应用发送了10M的数据,该数据会被拆分很多个不大于MSS的数据段,最后一个报文会自动将flags中的PSH置为1,表示接收端应尽快从缓冲区中读走数据。

RST标志,表示要求对方重新建立连接。我们称携带RST标志的TCP报文段为复位报文段。

SYN标志,表示请求建立一个连接。我们称携带SYN标志的TCP报文段为同步报文段。

FIN标志,表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段。

Window(16bit):是TCP流量控制的一个手段。这里说的窗口,指的是接收通告窗口(Receiver Window,RWND)。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。

3)滑动窗口:白帽青年:TCP 协议:滑动窗口

Checksum(16bit): 16位校验和,由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障。

Urgent Pointer(16bit):16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。

TCP Options:TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。后面会有TCP Options可选数据,常用可选选项如下:

27c88fccea7a19effa3465a62fc276b6.png

1)MSS:白帽青年:TCP 协议:数据传输与MSS分段

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值