Python 中的 TCP 协议详解:面向连接、可靠传输、流量控制
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 端口,客户端连接到服务器端并发送数据。
2021-10-01 上传
2020-12-17 上传
2020-09-21 上传
2020-09-22 上传
2020-09-19 上传
2020-09-19 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38688145
- 粉丝: 3
- 资源: 962
最新资源
- 解决微服务Fegin调用压缩问题-若依
- 参考资料-中国书法批评史.zip
- 豪华别墅建筑主题网站模板下载
- ParsecTOP:用于TouchDesigner的Parsec纹理流客户端操作员。 使用CPulsPuls运算符进行构建。 基于https
- 算法:C ++中的竞争编程算法
- NewbeeGuide-frontend:学习路线指南(Web 前端篇)
- JSON和API
- tabToMXL
- PyPI 官网下载 | mushroom_rl-1.4.0-py3-none-any.whl
- Natural Reader Text to Speech-crx插件
- AR.zip_matlab例程_matlab_
- 对Vercel的useSWR挂钩具有本机/React导航兼容性。-JavaScript开发
- md-starter:降价参考
- rpds:Rust持久性数据结构
- torch_sparse-0.6.11-cp38-cp38-macosx_10_14_x86_64whl.zip
- ffxiv:用于FF XIV