TCP简介
TCP全称为“传输控制协议(Transmission Control Protocol)”,它为两台主机提供可靠的数据通信,所做的工作时把应用层交给它的数据分成合适的小块交给下面的网络层,确认接受到的分组,设置发送最后确认分组的超时时钟等
1、TCP协议段格式
2、报头数据意义:
源/目的端口号:
表示数据是从哪个进程来,到哪个进程去
序列号:
分段的序列号,表示该分段在发送方的数据流中的位置,用来保证数据顺序到达的编号
确认序号:
当发送方发动来数据后,接受方对发送的数据进行应答,告诉发送方下次发送数据的序号
报文长度:
TCP头长,相当于数据在数据段中的开始时位置
16位窗口大小:
窗口的大小表示发送方可以接受的数据量,单位是字节,使用可变大小的滑动窗口协议来进行流量控制
校验和:用于对分段首部和数据进行校验。通过将所有的16b以补码形式相加,然后再对相加和取补。发送端填充,CRC校验。接受端校验不通过,则认为数据有问题,此处的校验和不光包含TCP首部,因为包含TCP数据部分
6位标志位:从左向右
URG:紧急指针是否有效
ACK:确认号是否有效
PAH:提示接受端应用程序立刻从TCP缓冲区把数据读走
RST:对方要求重新建立链接;携带RST标识的称为复位报文段
SYN:请求建立连接,携带SYN标识的称为同步报文段
FIN:通知对方,本端要关闭了,携带FIN标识的称为结束报文段
16校验和:
发送端填充,CRC校验。接受端校验不通过,则认为数据有问题,此处的校验和不光包含TCP首部,因为包含TCP数据部分
16为紧急指针:
标识哪部分数据是紧急数据,给出从当前序列号到紧急数据位置的偏移量
数据:来自高层即应用层的协议数据
3、保证可靠性的机制
1)确认应答机制
当发送方向接收方发送数据时,接受方要对接受的数据进行应答,若是发送方未收到接受方的应答数据,则发送方会重新发送数据。
2)超时重发机制
在网络传输中,会因为各种原因造成数据丢失,当接受方对发送方做出的应答报文丢失时,发送方没有接收到接收方的应答报文,会在一段时间后进行重发
3)连接管理
TCP通过3次握手和4次挥手保证连接的可靠性
4)流量控制
每次发送报文时,会在窗口大小中将自己的接收缓冲区中剩余空间的大小发给对方,对方会根据窗口大小控制发送数据的速度。
5)拥塞控制
由于网络中有许多的主机,可能当前的网络状况就已经比较拥堵,在不清楚网络状态的情况下,贸然发送大量的数据由可能会使网络更加的拥堵。TCP引入慢启动机制,先发送少量的数据测试当前网络的状态,在决定按照多大的速度传输数据
6)序号
在网络中发送的数据由于各种原因,导致接受方收到数据的顺序和发动数据的顺序不同,为了保证数据的有序性引入了序号,接受方接受数据时就会根据序号进行读取
确认应答机制和超时重发机制:
https://blog.csdn.net/qq_42002936/article/details/88552884