✏️✏️✏️今天给大家分享的是TCP报文格式的解释以及TCP协议的一些重要特性。
🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流!
✈️✈️✈️动动你们发财的小手,点点关注点点赞!在此谢过啦!哈哈哈!😛😛😛
目录
TCP是传输层的重点协议,对于我们了解网络原理有着至关重要的作用。
一、 TCP协议段格式
TCP
协议
TCP
,即
Transmission Control Protocol
,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。
1.1 TCP协议格式
- 源/目的端口号:表示数据是从哪个进程来,到哪个进程去
- 32位序号/32位确认号:后面详细给大家介绍
- 4位首部长度:表示该TCP头部有多少个32位bit(有多少个4字节),所以TCP头部最大长度是 15 * 4 = 60
- 6位标志位:
- URG:紧急指针是否有效
- ACK:确认号是否有效
- PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
- RST:对方要求重新建立连接;我们把携带RST标识的称为复位报文段
- SYN:请求建立连接;我们把携带SYN标识的称为同步报文段FIN:通知对方,本端要关闭了,我们称携带FIN标识的为结束报文段
- 16位窗口大小:流量控制(下面我会详细介绍)
- 16位校验和:发送端填充,CRC校验。接收端校验不通过,则认为数据有问题。此处的检验和不光包含TCP首部,也包含TCP数据部分
- 16位紧急指针:标识哪部分数据是紧急数据
- 40字节头部选项:暂时忽略
二、TCP原理 (基本机制/特性)
TCP
对数据传输提供的管控机制,主要体现在两个方面:安全和效率。这些机制和多线程的设计原则类似:保证数据传输安全的前提下,尽可能的提高传输效率。
2.1 确认应答机制
TCP将每个字节的数据都进行了编号,即为序列号,但是并不会真正的存储每个字节的序列号,只需要保存起始序号,通过TCP的报文长度来+ 起始序号得到最后一个字节的编号。
每一个
ACK
都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据,下一次你从哪里开始发。
2.2 超时重传机制 (安全机制)
- 主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B
- 如果主机A在一个特定时间间隔内没有收到B发