TCP 协议
TCP 的特点:可靠,支持全双工,连接导向。
TCP 协议就是客户端和服务端传送数据的时候,必须先建立连接。
连接
虚拟抽象的概念。
能让两个通信的程序间确保彼此都在线。
能够加快响应请求速度
连接也被称为会话。
可以使通信更加稳定安全。
连接会消耗更多的资源。
全双工
单工:任何时刻数据都只能单向发送。
半双工:允许数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输。
全双工:任何时刻都能双向发送数据。

可靠
可靠性要保证数据无损传输。
什么是无损传输?
使无序的数据恢复原有顺序。
多播时每个接收方都获得无损副本。
TCP 的工作过程
建立连接的过程
三次握手

断开连接的过程
四次挥手

传输数据
分为三个阶段:报文拆分,增加 TCP 头,数据重组
报文拆分

应用层数据很大的时候无法一次性传输完。
这时候就将应用层的数据拆分为很多个 TCP 端,然后进行并行传输。
下图是如何保证顺序

为每一个 TCP 端标上序号,到达后进行排序。
如果 TCP 段特别多的时候可以使用时间窗口。一段时间一段时间的排序。
TCP 序号有两种,发送序号和接收序号。
一个端的发送序号是另一个端的接收序号。
TCP 头
TCP 报文段分为 TCP 头部和 TCP 段数据。
TCP 头包括
源端口:发送方机器上的应用。
目标端口:接收方服务器上的应用。
发送序号和接收序号。
TCP 中的标志位有 9 个
SYN:同步序号,在建立连接。
FIN:终止连接。
ACK:响应。
PSH:传送数据。
TCP 的好处
