深入浅出TCP/IP协议簇:理论与Python实践

源码分享

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客户端和服务器,这是网络编程旅程的起点。永远记住,使用这些工具时要遵守网络安全和道德规范,确保你的编程活动对他人网络不构成干扰。

相关推荐
门思科技16 分钟前
LoRaWAN通信协议详解:架构、加密机制与核心应用
运维·服务器·网络·嵌入式硬件·物联网
乐维_lwops28 分钟前
2025年运维监控建设重点是什么?
运维·监控系统·it监控
程思扬31 分钟前
开源 + 实时 + 无网络限制:Excalidraw 是流程图协作新选择
网络·人工智能·阿里云·ai·开源·流程图
测绘小沫-北京云升智维32 分钟前
徕卡RTC360三维激光扫描仪摔坏故障维修方案
网络
二进制coder35 分钟前
Linux RTC 驱动子系统详细实现方案
linux·运维·实时音视频
淮北4941 小时前
linux系统学习(10.shell基础)
linux·运维·服务器·学习
视觉震撼1 小时前
RDP登录事件详细溯源分析脚本(兼容Windows PowerShell版本)
运维·网络·windows·网络安全·网络攻击模型·安全威胁分析·安全架构
是店小二呀1 小时前
仓颉三方库开发实战:Simple HTTP Server 实现详解
网络·网络协议·http
北京耐用通信1 小时前
从‘卡壳’到‘丝滑’:耐达讯自动化PROFIBUS光纤模块如何让RFID读写器实现‘零延迟’物流追踪?”
网络·人工智能·科技·物联网·网络协议·自动化
noravinsc1 小时前
两台 centos 7.9 部署 pbs version 18.1.4 集群
linux·运维·centos