TCP报头结构
原端口号/目的端口号:表示数据是从哪个进程来,到哪个进程去;
32位序号/32位确认号:这个序号是取的发送方发送所用数据下一个字节的序号,发送方的序列号和接收方的确认号一样,才算接收成功,否则还会索要确认号的数据
4位TCP报头长度:表示该TCP头部有多少个32位bit
6位标志位:
URG:紧急指针是否有效
ACK:确认号是否有效
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
RST:对方要求重新建立连接;我们把携带RST标识的称为复位报文段
SYN:请求建立连接;我们把携带SYN标识的称为同步报文段
FIN:通知对方,本端要关闭了,我们称携带FIN标识的为结束报文段
16位窗口大小:这个用来限制滑动窗口,就是限制发送方一次发送多少条数据
16位校验和:发送端填充,CRC校验。接收端校验不通过,则认为数据有问题。此处的检验和不
光包含TCP首部,也包含TCP数据部分。
比特就业课
16位紧急指针:标识哪部分数据是紧急数据;
TCP原理和特性
可靠性方面:
确认应答:
ack为应答报文
序列号:
这个序号是取的发送方发送所用数据下一个字节的序号,发送方的序列号和接收方的确认号一样,才算接收成功,否则还会索要确认号的数据
校验和
啊啊
超时重传
发送方一定时间内拿不到应答报文,会等一段时间重发
连接管理
TCP3次握手和4次挥手
流量控制
接收端处理数据的速度是有限的,发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送端继续发送,就会造成丢包,所以有窗口大小决定,每次发多少
拥塞控制
如果接受方比较拥堵。在不清楚当前网络状态下,贸然发送大量的数据,可能会出事,TCP引入 慢启动 机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据
提高性能方面:
滑动窗口
就是一次发送多条数据
快速重传
如果发送多条数据,接受方只受到第1条数据,下次发送会从第2条数据开始发送