Python 中的 TCP 协议详解:面向连接、可靠传输、流量控制

0 下载量 141 浏览量 更新于2024-08-31 收藏 276KB PDF 举报
Python 中的 TCP 示例详解 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。TCP 通信需要经过创建连接、数据传送、终止连接三个步骤。 **TCP 特点** 1. **面向连接**:通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输。双方间的数据传输都可以通过这一个连接进行。完成数据交换后,双方必须断开此连接,以释放系统资源。 2. **可靠传输**:TCP 采用发送应答机制,发送的每个报文段都必须得到接收方的应答才认为这个 TCP 报文段传输成功。超时重传机制也被使用,发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。TCP 还使用序号来保证传送到接收端实体的包的按序接收。 3. **错误校验**:TCP 用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。 4. **流量控制和阻塞管理**:流量控制用来避免主机发送得过快而使接收方来不及完全收下。 **TCP 与 UDP 的不同点** * 面向连接(确认有创建三方交握,连接已创建才作传输。) * 有序数据传输 * 重发丢失的数据包 * 舍弃重复的数据包 * 无差错的数据传输 * 阻塞/流量控制 **TCP 客户端** TCP 客户端要比服务器端简单很多,客户端只需要找到一个电话亭,拿起电话拨打即可,而服务器端需要自己买手机、查手机卡、设置铃声、等待别人打电话流程。 **Python 中的 TCP 示例** 在 Python 中,我们可以使用 socket 模块来实现 TCP 通信。下面是一个简单的 TCP 客户端和服务器端的示例代码: ``` # TCP 服务器端 import socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(("localhost", 8080)) server_socket.listen(5) print("服务器已经启动") while True: client_socket, address = server_socket.accept() print("客户端已经连接") while True: data = client_socket.recv(1024) if not data: break print("来自客户端的数据:", data.decode()) client_socket.close() # TCP 客户端 import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(("localhost", 8080)) while True: data = input("请输入要发送的数据:") client_socket.send(data.encode()) client_socket.close() ``` 在上面的示例代码中,我们创建了一个 TCP 服务器端和客户端,服务器端监听在 localhost 的 8080 端口,客户端连接到服务器端并发送数据。