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.0到255.255.255.255。 -
分类:
-
A类地址:范围是
1.0.0.0到126.0.0.0,默认子网掩码为255.0.0.0。 -
B类地址:范围是
128.0.0.0到191.255.0.0,默认子网掩码为255.255.0.0。 -
C类地址:范围是
192.0.0.0到223.255.255.0,默认子网掩码为255.255.255.0。 -
D类地址:范围是
224.0.0.0到239.255.255.255,用于多播(组播)。 -
E类地址:范围是
240.0.0.0到255.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复制
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复制
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()
相关文章:
Python——计算机网络
一.ip 1.ip的定义 IP是“Internet Protocol”的缩写,即“互联网协议”。它是用于计算机网络通信的基础协议之一,属于TCP/IP协议族中的网络层协议。IP协议的主要功能是负责将数据包从源主机传输到目标主机,并确保数据能够在复杂的网络环境中正…...
一招解决Pytorch GPU版本安装慢的问题
Pytorch是一个流行的深度学习框架,广泛应用于计算机视觉、自然语言处理等领域。安装Pytorch GPU版本可以充分利用GPU的并行计算能力,加速模型的训练和推理过程。接下来,我们将详细介绍如何在Windows操作系统上安装Pytorch GPU版本。 查看是否…...
股票交易所官方api接口有哪些?获取和使用需要满足什么条件
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
MoonSharp 文档五
目录 13.Coroutines(协程) Lua中的协程 从CLR代码中的协程 从CLR代码中的协程作为CLR迭代器 注意事项 抢占式协程 14.Hardwire descriptors(硬编码描述符) 为什么需要“硬编码” 什么是“硬编码” 如何进行硬编码 硬编…...
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
最近在思考一个问题:如何能够更好的分享主流框架源码学习笔记(主要是源码部分)?让有缘刷到的同学既可以有所收获,还能保持对相关技术架构探讨学习热情和兴趣。以及自己也保持较高的分享热情和动力。 今天尝试用一个SQL查询作为引…...
如何重置 MySQL root 用户的登录密码?
重置 MySQL root 密码的核心步骤是绕过权限验证登录数据库并更新密码字段。以下是具体方法: 方法一:通过 --SKIP-GRANT-TABLES 模式修改密码 停止 MySQL 服务 Windows:在命令行执行 net stop mysql(服务名可能为 mysql80 或 mysql…...
ArrayList底层结构和源码分析笔记
参考视频:韩顺平Java集合 ArrayList特点 ArrayList 可以加入 null,包括多个。 ArrayList 是由数组来实现数据存储的 ArrayList 基本等同于 Vector,除了 ArrayList 是线程不安全(执行效率高)。在多线程情况下…...
Centos离线安装gcc
文章目录 Centos离线安装gcc1. gcc是什么?2. gcc下载地址3. gcc的安装4. 安装结果验证 Centos离线安装gcc 1. gcc是什么? GCC(GNU Compiler Collection)是 GNU 项目下的开源编译器套件,主要用于将 C、C 等编程语言的源…...
flutter 图片资源路径管理
1. 创建统一资源管理类 创建一个单独的 Dart 文件(比如 manager.dart),将所有图片路径集中管理。这样在引用图片时,不需要每次都手动输入完整路径,只需通过常量引用即可。 //manager.dartclass Manager { static co…...
[内网渗透] 红日靶场2
环境配置 靶场地址: http://vulnstack.qiyuanxuetang.net/vuln/wiki/ 环境配置可以看这个: https://www.bilibili.com/video/BV1De4y1a7Ps/?spm_id_from333.337.search-card.all.click&vd_sourcecf73ac8de9b7c0322b1bccf77de91c5dNAT模式分配111段, DHCP也要更改 再添加…...
【cocos creator】游戏优化,内存,性能,包体积大小,加载,drawcall优化
参考: https://blog.csdn.net/qq_47012987/article/details/140169024 内存泄露排查 使用chrome测试cocos creator内存泄漏问题手游内存优化cocos creator优化Creator资源自动释放逻辑:所有 cc.Asset 实例都拥有成员函数 addRef 和 decRef,分…...
MySQL 企业版 TDE加密后 测试和问题汇总
一、测试keyring file 1.1 当keyring file文件丢失或者被篡改 结论:不影响当前正在运行的数据库,但是在重启服务后会启动失败出现报错。 tail -n 100 /var/log/mysql/error.log 报错信息如下: 2025-03-12T08:04:54.668847Z 1 [ERROR] [M…...
Unity 封装一个依赖于MonoBehaviour的计时器(下) 链式调用
[Unity] 封装一个依赖于MonoBehaviour的计时器(上)-CSDN博客 目录 1.加入等待间隔时间"永远执行方法 2.修改为支持链式调用 实现链式调用 管理"链式"调度顺序 3.测试 即时方法编辑 "永久"方法 链式调用 4.总结 1.加入等待间隔时间&qu…...
petalinux环境下给linux-xlnx源码打补丁
在调试88e1512芯片时官方驱动无法满足我的应用方式,因此修改了marvell.c源码,但是在做bsp包重新创建新工程时发现之前的修改没有生效,因此查找了一下资料发现可以通过打补丁的方式添加到工程文件中,便于管理。 操作步骤 一、获取…...
套接字缓冲区以及Net_device
基础网络模型图 一般网络设计分为三层架构和五层设计: 一、三层架构 用户空间的应用层 位于最上层,是用户直接使用的网络应用程序,如浏览器、邮件客户端、即时通讯软件等。这些程序通过系统调用(如 socket 接口)向内核…...
2024下半年真题 系统架构设计师 案例分析
案例一 软件架构 关于人工智能系统的需求分析,给出十几个需求。 a.系统发生业务故障时,3秒内启动 XXX,属于可靠性 b.系统中的数据进行导出,要求在3秒内完成,属于可用性 c.质量属性描述,XXX,属…...
AI学习——深度学习核心技术深度解析
一、深度学习的本质与核心思想 定义:通过多层非线性变换,自动学习数据层次化表征的机器学习方法 核心突破: 表征学习:自动发现数据的内在规律,无需人工设计特征端到端学习:直接从原始输入到最终输出&…...
c++介绍智能指针 十二(2)
智能指针share_ptr,与unique_ptr不同,多个shar_ptr对象可以共同管理一个指针,它们通过一个共同的引用计数器来管理指针。当一个智能指针对象销毁时,计数器减一。当计数器为0时,会将所指向的内存对象释放。 #include<memory>…...
西门子S7-1200 PLC远程调试技术方案(巨控GRM532模块)
三步快速实现远程调试 硬件部署 准备西门子S7-1200 PLC、巨控GRM552YW-C模块及编程电脑。GRM552YW-C通过网口与PLC连接,支持4G/5G/Wi-Fi/有线网络接入,无需复杂布线。 软件配置 安装GVCOM3配置软件,注册模块(输入唯一序列号与密…...
vue启动 localhost无法访问
1. localhost 和 127.0.0.1 虽然都指向本机,但它们有细微的区别: - localhost 是一个域名,需要通过 DNS 解析或本地 hosts 文件解析为 IP 地址 - 127.0.0.1 是直接的 IP 地址,不需要解析过程 2. 无法访问 localhost 的可…...
Mac上更改默认应用程序
Mac上为某些文件设置默认打开应用的时候,刚开始是通过打开方式,其他里面,勾选始终以此方式打开,但实际上这个功能并不太好用,经常会让人误以为已经设置好了。但是实际上只是在当前目录起作用。真正解决这个问题可以按照…...
【开源+代码解读】Search-R1:基于强化学习的检索增强大语言模型框架3小时即可打造个人AI-search
大语言模型(LLMs)在处理复杂推理和实时信息检索时面临两大挑战:知识局限性(无法获取最新外部知识)和检索灵活性不足(传统方法依赖固定检索流程)。现有方法如检索增强生成(RAG)和工具调用(Tool-Use)存在以下问题: RAG:单轮检索导致上下文不足,无法适应多轮交互场景…...
贪心算法和遗传算法优劣对比——c#
项目背景:某钢管厂的钢筋原材料为 55米,工作需要需切割 40 米(1段)、11 米(15 段)等 4 种规格 ,现用贪心算法和遗传算法两种算法进行计算: 第一局:{ 40, 1 }, { 11, 15…...
网络安全防护总体架构 网络安全防护工作机制
1 实践内容 1.1 安全防范 为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。 1.1.1 PDR模型 信息系统的防御机制能…...
SpringCloud带你走进微服务的世界
认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部…...
Python设计模式 - 建造者模式
定义 建造者模式是一种创建型设计模式,主要用于构建包含多个组成部分的复杂对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的对象表示。 结构 抽象建造者(Builder):声明创建产品的各个部件的方…...
在 Ubuntu 上安装和配置 Docker 的完整指南
Docker 是一个开源的平台,旨在简化应用程序的开发、部署和运行。通过将应用程序及其依赖项打包到容器中,Docker 确保应用程序可以在任何环境中一致地运行。 目录 前言安装前的准备安装 Docker 步骤 1:更新包索引步骤 2:安装必要…...
网络安全之数据加密(DES、AES、RSA、MD5)
刚到公司时,我的工作就是为app端提供相应的接口。之前app使用的是PHP接口,对数据加密方面做得比较少。到使用java接口时,老大开始让我们使用DES加密,进行数据传输,但是后来觉得DES是对称加密,密钥存在客户端…...
基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 校园周边美食探索及分享平台结构图…...
vscode关闭仓库后如何打开
vscode源代码管理->更改->代码 关闭仓库后如何打开。 关闭仓库操作 打开仓库操作 1.按下 Ctrl Shift P(Windows/Linux)或 Cmd Shift P(Mac)打开命令面板。 2.在命令面板中输入 Git: Open Repository,然后选…...
