1.TCP是面向连接的传输层协议,提供可靠的,全双工的,面向字节的,端到端的服务 。
2.TCP可靠性保证:
校验和、序列号、确认、超时重传、连接管理、流量控制、拥塞避免
1)连接管理:三次握手、四次挥手
2)面向字节流:TCP将应用程序看成一串无结构的字节流(没有固定的边界),且每个
TCP连接既有发送缓存区也有接收缓存区,在缓存中数据被分段,每个段构成一个数
据包,在传输时加TCP首部,当调用write时,数据会先写入发送缓存区,如果发送的
字节数太大,会被拆分成多个TCP数据包发出,如果发送的字节太小,会先在缓存区
等待,字节流达到一定程度时再发送出去;当调用read时,从接收缓存区读取数据
a.粘包问题:应用层从缓存区接收到的数据是一连串的字节数据,应用程序不知道如何
划分
解决边界问题:
在包的头部约定一个数据包总长度字段或在包与包之间使用明确的分隔符
3)流量控制:窗口
接收端将自己可以接收的缓存区大小加入TCP首部的“窗口大小”字段中,通过ACK通
告给发送端;接收端一旦发现自己的缓存区快满后,就会将窗口大小设置成一个更小
的值通告给发送端,发送端收到窗口通知后,会减小自己的发送窗口大小;如果缓存
区已满,就会将窗口值置0,此时发送方不再发送数据,并定期发送窗口探测数据段,
以便让接口端通告窗口大小,防止形成死锁。
a 窗口:缓存区大小,表示可以接收多少个TCP分组
接收窗口:可以连续接收的数据的缓存区大小
发送窗口:可以连续发送,无需等待确认应答就可以继续发送数据的最大值,当收到
ACK确认时,窗口向后移动,并将已经确认的数据从缓存区中删除
b. 发送窗口=min{接收窗口,拥塞窗口}
4)确认:ACK,告诉发送者,自己接收到了哪些数据,并通告发送者下一次从哪发送
3.TCP性能提高:
滑动窗口、快重传、延迟应答、捎带回答
1)滑动窗口:
TCP
最新推荐文章于 2024-06-12 07:28:09 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)