源码分享
https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tab=BB08J2
当我们提到网络编程或数据爬取时,了解基础的网络通信协议---TCP/IP协议簇是非常有用的。TCP/IP不是单一的协议,而是一组使互联网工作的协议的集合。在本篇博客中,我们将探讨TCP/IP的基础,并通过Python代码示例展示其在实际编程中的应用。
TCP/IP概述
TCP/IP协议簇包括网络层的IP协议以及传输层的TCP协议。它们合作为应用提供可靠的字节流服务。
- IP协议(Internet Protocol) 负责将数据包从一台计算机路由到另一台计算机。每台计算机都有一个IP地址,IP协议确保数据能够从源地址送达目的地址。
- TCP协议(Transmission Control Protocol) 在IP的基础上提供了一个可靠的连接,确保数据包在到达目的地后没有错误且不丢失。
理解TCP/IP的关键概念
- TCP三次握手:建立TCP连接时,客户端和服务器之间的三次消息传递确保连接的建立。
- TCP四次挥手:关闭TCP连接时,四次消息传递确保双方都了解连接的结束。
Python中的TCP/IP
在Python中,我们使用socket
模块来实现TCP/IP通信。以下是一个创建TCP客户端和服务器的基本例子。
TCP服务器
import socket
def start_server(host='localhost', port=6789):
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_socket.bind((host, port))
# 开始监听
server_socket.listen()
print(f'Server running on {host}:{port}... Waiting for connections.')
try:
# 等待客户端连接
while True:
# 接受连接
client_socket, addr = server_socket.accept()
print(f'Connected by {addr}')
try:
# 接收数据
while True:
data = client_socket.recv(1024)
if not data:
break
print(f'Received data: {data.decode()}')
client_socket.sendall(data)
except socket.error as e:
print(f'An error occurred: {e}')
finally:
# 关闭连接
client_socket.close()
finally:
# 关闭服务器socket
server_socket.close()
start_server()
TCP客户端
import socket
def start_client(server_host='localhost', server_port=6789):
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
client_socket.connect((server_host, server_port))
try:
# 发送数据
client_socket.sendall('Hello, TCP Server!'.encode())
# 接收响应
response = client_socket.recv(1024)
print(f'Received: {response.decode()}')
finally:
# 关闭socket
client_socket.close()
start_client()
结语
TCP/IP协议簇是现代网络通信的基础。了解TCP/IP如何工作并能够实际编写这些协议的代码对于任何进行网络编程或数据爬取的开发者来说都是一个宝贵的技能。通过Python的socket
模块,我们能够实现基本的TCP客户端和服务器,这是网络编程旅程的起点。永远记住,使用这些工具时要遵守网络安全和道德规范,确保你的编程活动对他人网络不构成干扰。