目录
一、传输控制协议(TCP,Transmission Control Protocol)
一、传输控制协议(TCP,Transmission Control Protocol)
1、简单介绍
TCP(传输控制协议)是计算机网络中广泛使用的传输层协议。它在网络上的两台主机之间提供可靠的、面向连接的通信。TCP 是 Internet 协议套件(通常称为 TCP/IP)的一部分,许多应用程序都使用它来跨网络(包括 Internet)传输数据。
TCP 通过在客户端和服务器之间建立连接来运行。连接是通过三向握手过程建立的,其中客户端和服务器交换控制数据包以协商和同步连接。一旦建立连接,就可以在两个方向上交换数据。
TCP 通过使用多种机制来确保数据的可靠传递。它将数据分解为小段,并为每个段分配序列号,允许接收者以正确的顺序重新组合它们。它使用确认数据包来确认接收数据,如果出现任何丢失或损坏的段,发送方会重新传输它们。TCP还实现了流量控制,通过允许接收方控制数据传输速率来防止接收方被数据淹没。
TCP的另一个重要特征是其拥塞控制机制。TCP 监控网络是否存在拥塞迹象,例如数据包丢失或延迟增加,并动态调整传输速率以缓解拥塞。这有助于防止网络拥塞,并确保在竞争连接之间公平共享网络资源。
TCP 提供了可靠且有序的数据传递流,但它会带来一些开销。与 UDP(用户数据报协议)等其他传输协议相比,额外的控制信息以及可靠性和拥塞控制机制增加了开销。但是,对于需要可靠和有序交付的应用程序,例如 Web 浏览、文件传输、电子邮件和其他依赖于无错误通信的应用程序,TCP 是首选。
总之,TCP 是一种可靠的、面向连接的传输协议,它提供跨网络的有序和错误检查的数据传递。它被广泛用于各种应用,在互联网上数据的可靠传输中起着至关重要的作用。
2、特点和功能
-
可靠的数据传输:TCP使用序列号、确认和重传机制来实现可靠的数据传输,确保数据能够准确地到达目的地。
-
面向连接:在通信双方进行数据交换之前,TCP会先进行三次握手建立连接,然后再进行数据传输,传输结束后再进行四次挥手断开连接。
-
流量控制和拥塞控制:TCP使用滑动窗口机制进行流量控制,以及采用拥塞避免算法进行拥塞控制,以避免网络拥塞导致的数据丢失。
-
提供多路复用:通过端口号实现多路复用,使得一台计算机上的不同应用程序可以同时与另一台计算机上的不同应用程序进行通信。
-
面向字节流:TCP并不关心数据的边界,它使用字节流的方式进行数据传输,需要上层应用自行处理消息的边界。
-
提供全双工通信:TCP连接支持双向的数据传输,通信双方既可以发送数据也可以接收数据。
3、TCP报文格式
TCP报文由报头和数据两部分组成,其中报头包含了TCP连接所需的控制信息,如序列号、确认号、标志位等。TCP报文的格式如下:
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
| Sequence Number |
+--------+--------+--------+--------+
| Acknowledgment Number |
+--------+--------+--------+--------+
| Data | Rese-|C|E|U|A|P|R|S|F| W |
| Offset| rved |W|C|R|G|K|E|C|S| |
| | |R|E|G|K|H|E|K|Y| |
| | | | | | | |T| |N| |
+--------+--------+--------+--------+
| Window Size |
+--------+--------+--------+--------+
| Checksum | Urgent Ptr |
+--------+--------+--------+--------+
| Options and Padding |
+--------+--------+--------+--------+
| data [variable length] |
+--------+--------+--------+--------+
4、TCP连接的建立和终止
-
TCP三次握手(建立连接):客户端发送SYN报文,服务器回复SYN-ACK报文,最后客户端发送ACK报文,连接建立。
-
TCP四次挥手(终止连接):当一方不再需要连接时,发送FIN报文,对方接收到后回复ACK报文,然后发送FIN报文,最后对方回复ACK报文,连接终止。
5、拥塞控制
TCP使用拥塞避免算法来动态调整发送窗口大小,以适应网络拥塞的程度,避免造成网络拥塞。
6、应用范围
TCP广泛应用于需要可靠数据传输的应用程序,如网页浏览、文件传输、电子邮件等。
总的来说,TCP是一种可靠、灵活和功能强大的传输协议,为计算机网络上的数据传输提供了坚实的基础。
二、三次握手(Three-Way Handshake)
三次握手(Three-Way Handshake)
-
客户端向服务器发送SYN报文:
- 客户端发送一个标志位(SYN)置为1的TCP报文段,以建立连接。
- 报文中包含客户端选择的初始序列号(ISN)。
-
服务器收到SYN报文后回复SYN-ACK报文:
- 服务器收到SYN报文后,将确认号(ACK)置为客户端的ISN加1。
- 服务器自己也选择一个初始序列号(ISN)。
- 服务器发送一个带有SYN和ACK标志位置为1的TCP报文段作为响应。
-
客户端收到服务器的SYN-ACK报文后回复ACK报文:
- 客户端收到服务器的SYN-ACK报文后,将确认号(ACK)置为服务器的ISN加1。
- 客户端向服务器发送一个带有ACK标志位置为1的TCP报文段。
- 这样,TCP连接就建立起来了,双方可以开始进行数据传输。
经过这三次握手,双方建立了TCP连接,可以开始进行数据传输。这个过程是为了确保客户端和服务器双方都能够正确地同步序列号和确认号,以便在数据传输过程中进行可靠的通信。
三、四次挥手(Four-Way Handshake)
四次挥手(Four-Way Handshake)
-
客户端发送FIN报文:
- 客户端决定关闭连接,发送一个标志位(FIN)置为1的TCP报文段。
- 客户端不再发送数据,但可以接收数据。
-
服务器收到FIN报文后回复ACK报文:
- 服务器收到客户端的FIN报文后,发送一个确认号(ACK)置为客户端的序列号加1的TCP报文段作为响应。
- 服务器进入CLOSE-WAIT状态,表示它不再发送数据,但可以继续接收数据。
-
服务器准备关闭连接时发送FIN报文:
- 服务器执行完自己的数据发送任务后,发送一个标志位(FIN)置为1的TCP报文段。
- 服务器不再发送数据。
-
客户端收到服务器的FIN报文后回复ACK报文:
- 客户端收到服务器的FIN报文后,发送一个确认号(ACK)置为服务器的序列号加1的TCP报文段作为响应。
- 客户端进入TIME-WAIT状态,在等待一段时间后关闭连接,确保服务器收到了ACK报文。
完成以上四个步骤后,TCP连接正式关闭。这个四次挥手的过程确保了双方都能正确地关闭连接,并允许任何未完全传输的数据进行重传。
总结:
在三次握手过程中,客户端和服务器端确保彼此能够正常通信并同步初始序列号。在四次挥手过程中,客户端和服务器端完成数据传输后,通过交换FIN和ACK来安全地关闭连接。这些过程对于保证可靠的数据传输和正确的连接管理至关重要。