TCP是传输控制协议(Transmission Control Protocol)的缩写,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP在因特网协议族(TCP/IP协议族)中担任主要的传输协议,为许多应用程序(如Web浏览器和电子邮件客户端)提供可靠的数据传输服务。
TCP的主要作用是在网络中提供可靠的、面向连接的通信。它确保数据在传输过程中不会丢失、重复或乱序,同时提供拥塞控制机制,以避免网络拥塞。
TCP的主要功能和特点包括:建立连接、数据传输(可靠传输)、连接终止、错误控制、面向连接、顺序控制、流量控制、拥塞控制。
-
建立链接:三次握手
三次握手的过程:SYN(同步序列号)+ ACK(确认号)+ SYN+ACK+ PSH(推数据)-> ACK。通过这个过程,两个应用程序可以建立一条可靠的通信链路
MSL---120S,指一个数据包在网络中传递的最大时间。
- 连接终止:四次挥手
四次挥手过程:FIN(结束)+ ACK(确认号)+ PSH(推数据)+ ACK -> ACK。通过这个过程,两个应用程序可以安全地关闭连接。
- 数据传输(TCP的可靠传输):
- 序号和确认:TCP给每个传输的数据包分配一个序号,并确保接收端按照顺序接收数据包。如果某个数据包丢失,TCP会重新发送该数据包,直到接收端确认成功接收。
- 错误检查:TCP使用校验和函数来检查数据在传输过程中是否出现错误,发送和接收时都会计算校验和,确保数据的完整性。
- 重传机制:如果发送端在合理的时间内未收到接收端的确认,TCP会假设数据包丢失,并重新发送该数据包,直到收到确认或达到最大重传次数。
- 错误控制:
主要通过序号与确认机制、超时与重传机制以及滑动窗口机制来实现。
- 面向连接:
TCP要求在通信前建立连接,并在通信结束后关闭连接。这种连接方式提供了可靠的通信机制,保证了数据的传输可靠性。
- 顺序控制:
TCP使用序列号对数据包进行标识,以便接收方按正确顺序重新组合数据流。如果接收到的数据包序列号不正确,接收方将通知发送方重新发送数据包。
- 流量控制:
TCP使用滑动窗口机制进行流量控制。发送方窗口的大小决定了它可以同时发送的数据量,接收方窗口的大小决定了它可以同时接收的数据量。这种机制可以避免网络拥塞并确保通信的稳定性。
- 拥塞控制:
当网络拥塞时,TCP会通过减小发送速率来控制拥塞。它使用一系列算法(如慢启动、拥塞避免、快重传和快恢复)来动态地调整发送速率,以避免网络拥塞并确保通信质量。
TCP协议建立的连接是双向连接
面向连接:在数据传输之前,收发双方需要预先建立一条逻辑通路。
无面向连接。
TCP协议头部结构
序列号(32bit)seq
确认序列号(32bit)ack标志位(6bit)
SYN---同步位---是在TCP三次握手建立通道时的标记(连接报文段)
ACK---确认位---当该标记位置为1时,确认序列号有意义(确认报文段)
FIN---代表释放TCP连接(断开报文段)窗口(32bit)接受窗口,告知发送放本方还能接受多少字节数据。用于解决流量控制。
校验和(16bit) CRC检验
TCP分段:因为IP分片后,TCP协议无法保证数据的可靠性传输;故而使用TCP协议进行封装的文件不允 许进行IP分片,而又因为MTU存在,需要将大文件分为小文件,该操作由TCP协议完成。
MSS---最大传输段===MTU-IP头部-TCP头部
在TCP协议中,每一个报文都需要有序列号信息。
可靠性
- 确认机制----每收到一个TCP数据段,都需要发送一次确认报文。
- 重传机制----超时重传,当一个数据段中的某个报文丢失,发送端会主动重新发送一次该报文。
- 排序机制----传输数据段时,被分为多个报文,从不同路径传输,最终达到目的地的顺序会被打乱, 需要根据序列号字段进行重新排序。
- 流控机制(滑动窗口机制):可以通过调节窗口大小(Windows)来对流量进行控制