当前位置:首页>python>Python基础篇 - 网络编程 - 协议 - TCP

Python基础篇 - 网络编程 - 协议 - TCP

  • 2026-10-11 07:32:23
Python基础篇 - 网络编程 - 协议 - TCP
协议-TCP

 顾名思义,网络编程就是让在不同的电脑上的软件能够互相进行数据传递,进行通信。网络编程有三大要素:IP地址、端口和协议。

在文章Python基础篇 - 网络编程 - 协议 - socket中,介绍了IP与端口、通信端点-socket套接字与协议的关系,以及对协议的概念解释。前面提到过,IP相当于地址、端口相当于房间号,设备交流依托通信端点socket绑定IP和端口,在socket对象中遵循相关协议,从而完成通信。Python基础篇 - 网络编程 - 协议 - UDP介绍了传输层的UDP协议。今天要介绍的协议是传输层两大协议之TCP。

一.协议-TCP

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,这与UDP的无连接通信是显著不同的。TCP协议的运行可划分为三个阶段:连接建立、数据传送和连接终止。

 1. 面向连接

通信前必须建立专属通道,不像UDP协议直接发包。

  2. 可靠传输

自带确认应答机制,丢包会重传,数据100%送达。

 3. 有序传输

自动排序,不会出现数据乱序问题。

  4. 粘包

发送粘包:连续发送多条短数据,系统自动合并发送。

接收粘包:接收缓冲区堆积数据,一次读取多条内容。

二.协议-TCP-核心原理

  TCP是面向连接的传输协议,那如何去建立连接、传输数据、断开连接呢? 其底层核心原理依靠的就是著名的三次握手、四次挥手机制。

1、三次握手(建立连接)

目的:双向确认客户端和服务端的收发能力都正常,安全建立专属通信通道。

第一次握手:客户端→服务端(我要建立连接)。

第二次握手:服务端→客户端(收到请求,我准备好了)。

第三次握手:客户端→服务端(我也准备好了,连接正式建立)。

通俗点:你问我、我答你、你确认,双方互通,正式连通。

2、四次挥手(断开连接)

目的:优雅断开连接,确保双方数据全部传输完毕,不丢数据。

第一次挥手:主动方告知对方,我没有数据要发了。

第二次挥手:被动方确认收到,停止接收新数据。

第三次挥手:被动方数据传输完毕,告知对方可以断开。

第四次挥手:主动方确认,连接彻底断开。

TCP读写通道是独立的,因此断开需要四次交互,保证数据完全落地。

三.协议-TCP-简单案例

 TCP服务端

import socket# 1.创建TCP套接字,SOCK_STREAM代表TCP协议tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2.绑定IP和端口tcp_server.bind(("127.0.0.1", 8888))# 3.开启监听tcp_server.listen(5)print("服务端已启动,等待客户端连接...")# 4.等待客户端连接conn, addr = tcp_server.accept()print(f"客户端{addr}已连接")# 5.循环收发数据while True:    # 1024为缓冲区大小:单次最大接收1024字节    data = conn.recv(1024)    if not data:        break    print("收到客户端数据:", data.decode("utf-8"))    # 回复数据    conn.send("收到!".encode("utf-8"))# 关闭连接conn.close()tcp_server.close()

  TCP客户端

import socket# 1.同样创建TCP套接字,SOCK_STREAM - TCPtcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2.连接服务端tcp_client.connect(("127.0.0.1", 8888))# 3.发送数据tcp_client.send("Hello TCP!".encode("utf-8"))# 4.接收回复res = tcp_client.recv(1024)print("服务端回复:", res.decode("utf-8"))# 关闭连接tcp_client.close()

总结:今日我们学习了Python基础篇-网络编程-协议-TCP。TCP是面向连接的可靠传输协议,通信前需建立三次握手连接,传输完成后经四次挥手断开,能保证数据完整、有序送达,适合文件传输、网页访问等场景。对比此前学习的UDP,UDP无需提前建立连接,属于无连接协议,传输速度更快,但不保障数据可靠性,易出现丢包、乱序问题。在Python基础篇,后续我们将持续学习Python基础知识,介绍各种算法,祝每一位study er学习愉快。

合集链接
这里是我滴合集内容链接,大家感兴趣就康康吧。
1. 人工智能进阶之路 - 机器学习篇
2.人工智能进阶之路 - 深度学习篇
3. AI发展前点
4. 人工智能进阶之路-Python基础篇
5. 充电er的乱坠闲聊
6. Origin认知
点个 赞 你最好看

最新文章

随机文章