概念:
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
特点:
1.面向连接
2.每一条TCP连接只能是点对点
3.TCP提供可靠交付的服务
4.TCP提供全双工通信
5.面向字节流
TCP协议报文段的首部格式:
1.源端口和目的端口:
数据从哪来,要到哪里去
2.序号
TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号
3.确认序号
期待收到对方下一个报文段得到第一个数据字节的序号
4.数据偏移
TCP报文段的数据距离TCP报文段报文段的起始处有多远
5.
URG:紧急指针有效
ACK:ACK=1,确认字段有效
FIN:用来释放连接
SYN:SYN=1表明这是一个请求报文段
PSH:提醒接收方应用程序立刻读走TCP缓冲区的数据
RST:TCP出现严重的错误,需要断开连接,然后重新建立连接
6.窗口
指的是发送本报文段一方的接受窗口,窗口值作为接收方让发送方设置其发送窗口的依据
7.校验和
接收端校验不通过,认为数据有问题
TCP保证可靠性:
1.校验和
2.按需到达
3.确认应答
TCP会对每一个报文进行确认,表明我已经收到那一部分,你下次从那一部分传
4.超时重传
TCP发送方在规定的时间内没有收到确认,就会重传已经发送的报文
5.连接管理
6.流量控制
接收端处理数据的能力非常有限,如果传送过快,就会导致接收方缓冲区填满,如果继续发送,就对导致丢包,然后就会触发超时重传等一系列的问题。
所以TCP会根据接收端的能力,来决定发送端的发送速度,这就是流量控制。
7.拥塞控制
滑动窗口虽然能高效得到发送大量的数据,但是在没有摸清网络的拥塞程度,贸然传输大量数据,如果网络负荷本来就重,那么就会导致网络承受不起现在的负荷。
所以,TCP引入慢启动,先传输小部分的数据,然后从小到大逐渐增大发送窗口
TCP建立连接和释放连接的过程: