TCP(TransmissionControlProtocol):

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

特点:

基于连接的:数据传输之前需要建立连接
全双工的:双向传输
字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃
流量缓冲:解决双方处理能力的不匹配
可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性
拥塞控制:防止网络出现恶性拥塞
image.png

TCP连接管理

1.TCP连接:四元组[源地址,源端口,目的地址,目的端口]
2.确立连接:TCP三次握手
a.同步通信双方初始序列号(ISN,initialsequencenumber)
b.协商TCP通信参数(MSS,窗口信息,指定校验和算法)
如何进行握手?
image.png
image.png
TCP:四次挥手
image.png
A:发送FIN数据包,代表A不在发送数据
B:收到请求,开始应答,避免了
A重新发送FIN重试(应答机制)
B:处理完数据之后关闭,关闭连接,及发送FIN请求
A:收到请求后发送ACK应答,B服务可以释放连接等待2MSL后释放连接接
1.防止报文丢失,导致B重复发送FIN
2.防止滞留在网络中的报文,对新建立的连接造成数据扰乱

字节流的协议TCP把应用交付的数据仅仅看成时一连串的无结构的字节流,TCP并不知道字节流的含义,TCP并不关心应用程序一次将多大的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥堵的程度来决定一个报文段应该包含多少个字节。MSS:MaxSegmentSize,默认536byte实际数据
image.png

数据可靠性传输停止等待协议:

image.png

重传机制

1.ack报文丢失

image.png

2.请求报文丢失

image.png
滑动窗口协议与累计确认(延时ack)
滑动窗口大小同通过tcp三次握手和对端协商,且受网络状况影响
image.png