主要概念
TCP协议,又名传输控制协议,是一种面向连接的可靠传输协议。
面向链接:在数据传输之前,收发双方需要预先建立一条逻辑通路。
SYN---同步位----是在TCP三次握手建立通道时的标记(三次握手时需要注意的)
ACK---确认位----当该标记位位置为1时,确认序列号有意义
FIN---代表释放TCP连接 (四次挥手时需要注意的)
TCP分段:因为IP分片后,TCP协议无法保证数据的可靠性传输,故而使用TCP协议进行封装的文件不允许进行IP分片,而又因为MTU存在,需要将大文件分为小文件,该操作由TCP协议完成。MSS---最大传输段===MTU-IP头部-TCP头部
在TCP协议在,每一个报文都需要由序列号信息
可靠性
-
确认机制----每收到一个TCP数据段,都需要发送一个确认报文。
-
重传机制---超时重传,当一个数据段中的某个报文丢失,发送端会主动重新发送一次该报文。
-
排序机制---传输数据段时,被分为多个报文,从不同路径传输,最终达到目的地的顺序会打乱,需要根据序列号字段进行重新排序。
-
流控机制(滑动窗口机制)----可以通过调节窗口大小(Windows)来对流量进行控制
面向连接
三次握手
三次握手是在TCP协议中建立一个可靠的连接所使用的一种机制。它由发送方和接收方之间进行的三次通信组成,用于确保双方都愿意建立连接,并同步各自的初始序列号。
- 第一次握手(SYN):发送方向接收方发送一个带有SYN标志的数据包(SYN包),请求建立连接。发送方会随机选择一个初始序列号(seq=x),并将它放在SYN包中的序列号字段中发送给接收方。
- 第二次握手(SYN+ACK):接收方收到SYN包后,会向发送方发送一个带有SYN和ACK标志的数据包(SYN+ACK包),表示接受建立连接的请求,并回复确认号(ACK)和自己的初始序列号。接收方还会随机选择一个初始序列号(seq=y),并将它放在SYN+ACK包中的序列号字段中发送给发送方。
- 第三次握手(ACK):发送方收到SYN+ACK包后,会向接收方发送一个带有ACK标志的数据包(ACK包),确认接收方的确认号,并发送自己的确认号。接收方收到ACK包后,会确认发送方的确认号,并完成连接的建立。
四次挥手
四次挥手是在TCP协议中用于终止一个已建立的连接的机制。它是TCP连接的正常关闭流程,由发送方和接收方之间进行的四次通信组成。