Python——计算机网络

一.ip

1.ip的定义

IP是"Internet Protocol"的缩写,即"互联网协议"。它是用于计算机网络通信的基础协议之一,属于TCP/IP 协议族中的网络层协议。IP协议的主要功能是负责将数据包从源主机传输到目标主机,并确保数据能够在复杂的网络环境中正确地路由和转发。

2.ip地址

IP地址是IP协议的核心组成部分,它是一个用于唯一标识网络设备(如计算机、服务器、路由器等)的地址。IP地址分为两种主要版本:

(1)IPv4(Internet Protocol version 4)

  • 格式 :IPv4地址是一个32位的二进制数,通常以点分十进制格式表示,例如:192.168.1.1

  • 地址范围 :IPv4地址的范围是从0.0.0.0255.255.255.255

  • 分类

    • A类地址 :范围是1.0.0.0126.0.0.0,默认子网掩码为255.0.0.0

    • B类地址 :范围是128.0.0.0191.255.0.0,默认子网掩码为255.255.0.0

    • C类地址 :范围是192.0.0.0223.255.255.0,默认子网掩码为255.255.255.0

    • D类地址 :范围是224.0.0.0239.255.255.255,用于多播(组播)。

    • E类地址 :范围是240.0.0.0255.255.255.255,目前保留未使用。

  • 特点:IPv4地址数量有限(约43亿个),随着互联网的快速发展,IPv4地址逐渐耗尽。


ip4里面的子网掩码是什么?

子网掩码将ip地址划分为网络部分和本地部分,帮网络设备确定ip地址所属的子网。子网通过其二进制形式中的"1"和"0"来区分这两个部分。

  • 网络部分:子网掩码中为"1"的部分表示IP地址的网络部分,用于标识网络。

  • 主机部分:子网掩码中为"0"的部分表示IP地址的主机部分,用于标识网络中的设备。

子网掩码的分类

根据IPv4地址的分类(A、B、C类),默认子网掩码如下:

  • A类地址 :默认子网掩码为 255.0.0.0,表示前8位为网络部分,后24位为主机部分。

  • B类地址 :默认子网掩码为 255.255.0.0,表示前16位为网络部分,后16位为主机部分。

  • C类地址 :默认子网掩码为 255.255.255.0,表示前24位为网络部分,后8位为主机部分。

(2)IPv6(Internet Protocol version 6)

  • 格式 :IPv6地址是一个128位的二进制数,通常以冒号分隔的十六进制格式表示,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334

  • 特点

    • 提供了几乎无限的地址空间(约3.4×10³⁸个地址),解决了IPv4地址不足的问题。

    • 支持更高效的路由和自动配置功能。

    • 内置了更好的安全性(如IPsec)。

  • 推广现状:尽管IPv6已经存在多年,但由于兼容性和成本问题,目前全球范围内的IPv6普及率仍在逐步提高。

(3)特殊的地址 127.0.0.01

127.0.0.1是IPv4协议中保留的本地回环地址(Loopback Address)。它被用于标识本机上的网络服务,主要用于测试和调试网络程序。


那么为什么我一定要用这个ip地址呢?用别的地址不行吗?

使用127.0.0.1有其特定的优势和必要性。127.0.0.1是一个特殊的回环地址,用于本地通信,可以避免网络冲突和配置问题,确保测试环境的一致性和隔离性。因此,推荐使用127.0.0.1进行本地调试和测试。

二. 端口

1.端口的定义

端口是一个16位的数字,范围从0到65535。它用于标识应用程序或服务在某个IP地址上的具体位置。每个IP地址可以有多个端口,每个端口可以运行不同的应用程序或服务。

2.端口的分类

端口可以分为以下几类:

(1)系统端口(0-1023)

这些端口通常由系统或操作系统保留,用于运行系统服务和关键应用程序。例如:

  • 端口80:用于HTTP协议,提供网页访问服务。

  • 端口443:用于HTTPS协议,提供安全的网页访问服务。

  • 端口21:用于FTP协议,提供文件传输服务。

  • 端口25:用于SMTP协议,提供电子邮件服务。

(2) 用户端口(1024-49151)

这些端口可以由用户自定义或由应用程序使用。许多应用程序会使用这些端口进行网络通信。例如:

  • 端口3306:用于MySQL数据库服务。

  • 端口5432:用于PostgreSQL数据库服务。

(3)动态端口(49152-65535)

这些端口通常由操作系统动态分配,用于临时通信。例如,当你使用浏览器访问一个网页时,浏览器会从这些端口中选择一个临时端口作为通信的源端口。

三.通讯接口

1.通讯接口的定义

  • 通讯接口是一个实现通讯协议的接口 ,使得不同设备或应用程序能够按照协议的规定进行通信。

  • 通讯接口可以是软件接口 (如API、库)或硬件接口(如USB、RS-232)。

软件接口和硬件接口之间有什么关系呢?

为什么会有软件接口和硬件接口?-CSDN博客

2.通讯接口分类

  • 软件接口:如Socket、Snap7、Modbus-TCP等。

  • 硬件接口:如USB、RS-232、RS-485等。

3.接口Snap7和Socket

(1)Snap7

  • 定义

    • Snap7 是一个用于与西门子 S7 系列 PLC(可编程逻辑控制器)进行通信的开源库。它提供了与 PLC 设备进行数据交换的接口。
  • 接口类型

    • PLC 接口:Snap7 主要用于与 PLC 设备进行通信,因此可以被视为一种 PLC 接口。

    • 软件接口:Snap7 提供了软件接口,允许开发者通过编程与 PLC 设备进行通信。

  • 作用

    • 提供了与西门子 PLC 设备进行高效、可靠通信的接口,适用于工业自动化领域。

(2)Socket

  • 定义

    • Socket 是计算机网络中的一种通用通信接口,可以用于实现网络通信。它提供了与网络中其他设备或应用程序进行数据交换的接口。
  • 接口类型

    • 计算机软件接口:Socket 是计算机网络中的一种通用接口,适用于各种网络应用。
  • 作用

    • 提供了网络通信的接口,使得不同设备或应用程序之间可以进行数据传输,适用于多种网络通信场景。

四.通讯协议

1.通讯协议的定义

  • 通讯协议是一组规则和标准 ,用于定义两个或多个通信实体 (如设备、应用程序)之间如何进行信息交换

  • 协议规定了通信的内容、格式、顺序以及错误处理等细节。

2.通讯协议分类

  • 网络协议:如TCP/IP、UDP、HTTP、FTP等。

  • 工业协议:如Modbus、Profibus、Profinet、S7等。

  • 应用层协议:如HTTP、HTTPS、SMTP、POP3等。

可是为什么会有这么多通讯协议的分类呢?

因为通讯协议的多样性是由于不同的应用场景、历史背景和技术发展导致的。

通讯协议的分类及原因-CSDN博客

五.UDP和TCP

  • UDP

    • 定义:UDP是一种无连接的传输层协议,它不提供可靠的数据传输服务,也不保证数据能够成功到达接收方。它在发送数据前不需要与接收方建立连接,发送数据后也不会等待接收方的确认。

    • 特点:UDP协议简单高效,适用于实时性要求较高的应用场景,如视频会议、在线游戏等。

  • TCP

    • 定义:TCP是一种面向连接的传输层协议,它在发送数据前需要与接收方建立可靠的连接。TCP通过三次握手(SYN、ACK、SYN-ACK)来建立连接,通过四次挥手(FIN、ACK、FIN-ACK)来断开连接。

    • 特点:TCP提供可靠的数据传输服务,能够保证数据的按序到达和完整性。它适用于对数据可靠性要求较高的场景,如文件传输、电子邮件等。


协议的比较与区别

协议 UDP TCP
连接类型 无连接 面向连接
可靠性 不可靠,不保证数据到达 可靠,保证数据按序到达
速度 较快,无连接开销 较慢,有连接和确认开销
头部开销 较小,8字节 较大,通常20-60字节
应用场景 实时性要求高的场景(如视频会议、在线游戏) 数据可靠性要求高的场景(如文件传输、电子邮件)
传输方式 以数据报为单位,无连接 以字节流为单位,面向连接
拥塞控制 无拥塞控制 有拥塞控制

协议的报文格式和字段含义

  • UDP 报文格式

    • 首部:8字节,包含以下字段:

      • 源端口:2字节,发送方的端口号。

      • 目的端口:2字节,接收方的端口号。

      • 长度:2字节,UDP用户数据报的总长度(包括首部和数据)。

      • 校验和:2字节,用于检测UDP用户数据报在传输过程中是否有错误。

    • 数据区:存放实际要传输的数据。

  • TCP 报文格式

    • 首部:通常20-60字节,包含以下字段:

      • 源端口:2字节,发送方的端口号。

      • 目的端口:2字节,接收方的端口号。

      • 序号:4字节,用于标识TCP报文段的顺序。

      • 确认号:4字节,用于确认接收到的报文段。

      • 首部长度:1字节,标识TCP首部的长度。

      • 标志位:6位,用于控制TCP连接的状态(如SYN、ACK、FIN等)。

      • 窗口大小:2字节,用于流量控制。

      • 校验和:2字节,用于检测TCP报文段在传输过程中是否有错误。

      • 紧急指针:2字节,用于紧急数据的传输。

    • 数据区:存放实际要传输的数据。


协议的使用方式和编程示例

  • UDP 编程示例

    Python复制

    python 复制代码
    import socket
    
    # 创建UDP套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 绑定端口
    udp_socket.bind(('localhost', 12345))
    
    # 发送数据
    udp_socket.sendto(b'Hello, UDP!', ('localhost', 12346))
    
    # 接收数据
    data, addr = udp_socket.recvfrom(1024)
    print(f"Received from {addr}: {data.decode()}")
    
    # 关闭套接字
    udp_socket.close()
  • TCP 编程示例

    Python复制

    python 复制代码
    import socket
    
    # 创建TCP套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 绑定端口
    tcp_socket.bind(('localhost', 12345))
    
    # 监听连接
    tcp_socket.listen(5)
    
    # 接受连接
    conn, addr = tcp_socket.accept()
    print(f"Connected by {addr}")
    
    # 发送数据
    conn.sendall(b'Hello, TCP!')
    
    # 接收数据
    data = conn.recv(1024)
    print(f"Received from {addr}: {data.decode()}")
    
    # 关闭连接
    conn.close()
    tcp_socket.close()
相关推荐
七夜zippoe3 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥3 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网3 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊1214 小时前
已有安全措施确认(上)
大数据·网络
Fcy6484 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满4 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
主机哥哥5 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
ManThink Technology5 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
珠海西格电力科技6 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt6 小时前
未授权访问漏洞
网络·安全·web安全