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提供可靠的数据传输服务,能够保证数据的按序到达和完整性。它适用于对数据可靠性要求较高的场景,如文件传输、电子邮件等。


协议的比较与区别

协议UDPTCP
连接类型无连接面向连接
可靠性不可靠,不保证数据到达可靠,保证数据按序到达
速度较快,无连接开销较慢,有连接和确认开销
头部开销较小,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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实例:PyMuPDF实现PDF翻译,英文翻译为中文,并按段落创建中文PDF

基于PyMuPDF与百度翻译的PDF翻译处理系统开发:中文乱码解决方案与自动化排版实践 一 、功能预览:将英文翻译为中文后创建的PDF 二、完整代码 from reportlab.lib.pagesizes import letter from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

xunruicms失败次数已达到5次,已被禁止登录怎么处理?

针对遇到的“xunruicms失败次数已达到5次,已被禁止登录”的问题以下是几种处理方法: 开启开发者模式: 您可以开启开发者模式来忽略账号的禁止登录限制。具体操作步骤如下: 访问迅睿CMS的官方文档,找到如何开启开发者模…

复现 MODEST 机器人抓取透明物体 单目 ICRA 2025

MODEST 单目透明物体抓取算法,来自ICRA 2025,本文分享它的复现过程。 输入单个视角的RGB图像,模型需要同时处理深度和分割任务,输出透明物体的分割结果和场景深度预测。 论文地址:Monocular Depth Estimation and Se…

新手学习爬虫的案例

首先你的电脑上肯定已经安装了python,没安装的去官网安装,我使用的是Pycharm作为操作的IDE 环境准备 安装必要的库 爬虫需要用到requests和beautifulsoup4 使用命令行或者终端运行下面的命令 pip install requests beautifulsoup4 -i https://mirrors.aliyun.com/pypi/sim…

Octave3D 关卡设计插件

课程参考链接 这位大佬有在视频合集中有详细的讲解,个人体验过,感觉功能很强大 https://www.bilibili.com/video/BV1Kq4y1C72P/?share_sourcecopy_web&vd_source0a41d8122353e3e841ae0a39908c2181 Prefab资源管理 第一步 在场景中创建一个空物体…

【Transformer优化】Transformer的局限在哪?

自2017年Transformer横空出世以来,它几乎重写了自然语言处理的规则。但当我们在享受其惊人的并行计算能力和表征能力时,是否真正理解了它的局限性?本文将深入探讨在复杂度之外被忽视的五大核心缺陷,并试图在数学维度揭示其本质。 …

SpringBoot(一)--搭建架构5种方法

目录 一、⭐Idea从spring官网下载打开 2021版本idea 1.打开创建项目 2.修改pom.xml文件里的版本号 2017版本idea 二、从spring官网下载再用idea打开 三、Idea从阿里云的官网下载打开 ​编辑 四、Maven项目改造成springboot项目 五、从阿里云官网下载再用idea打开 Spri…

Python爬虫实战:一键采集电商数据,掌握市场动态!

电商数据分析是个香饽饽,可市面上的数据采集工具要不贵得吓人,要不就是各种广告弹窗。干脆自己动手写个爬虫,想抓啥抓啥,还能学点技术。今天咱聊聊怎么用Python写个简单的电商数据爬虫。 打好基础:搞定请求头 别看爬虫…

乐鑫打造全球首款 PSA Certified Level 2 RISC-V 芯片

乐鑫科技 (688018.SH) 荣幸宣布 ESP32-C6 于 2025 年 2 月 20 日获得 PSA Certified Level 2 认证。这一重要突破使 ESP32-C6 成为全球首款基于 RISC-V 架构获此认证的芯片,体现了乐鑫致力于为全球客户提供安全可靠、性能卓越的物联网解决方案的坚定承诺。 PSA 安全…

图像滑块对比功能的开发记录

背景介绍 最近,公司需要开发一款在线图像压缩工具,其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此,我们设计了一个对比组件,它允许用户通过拖动滑块,动态调整两张图像的显示区域,从而清晰…

tcc编译器教程2 编译lua解释器

本文主要介绍了使用tcc编译器编译lua解释器源码。 1 介绍 lua是一门编程语言,开源且源码很容易编译,我平时用来测试C语言编程环境时经常使用。一般能编译成功就说明编程环境设置正常。下面用之前设置好的tcc编程环境进行测试。 2 获取源码 我一般有保留多个版本的lua源码进…

Unity DOTS从入门到精通之 自定义Authoring类

文章目录 前言安装 DOTS 包什么是Authoring1. 实体组件2. Authoring类 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世…

comctl32!ListView_OnSetItem函数分析LISTSUBITEM结构中的image表示图标位置

第一部分: BOOL ListView_SetSubItem(LV* plv, const LV_ITEM* plvi) { LISTSUBITEM lsi; BOOL fChanged FALSE; int i; int idpa; HDPA hdpa; if (plvi->mask & ~(LVIF_DI_SETITEM | LVIF_TEXT | LVIF_IMAGE | LVIF_STATE)) { …

【算法】大数据查重

大数据查重 哈希表 找出第一个出现重复的数字 || 找所有重复出现的数字 #include <iostream> #include <vector> #include <unordered_map> #include <unordered_set> #include <stdlib.h> #include <time.h> #include <string> …

模型微调-基于LLaMA-Factory进行微调的一个简单案例

模型微调-基于LLaMA-Factory进行微调的一个简单案例 1. 租用云计算资源2. 拉取 LLaMa-Factory3. 安装依赖环境4. 启动 LLaMa-Factory 界面5. 从 Huggingface 下载模型6. 模型验证7. 模型微调 1. 租用云计算资源 以下示例基于 AutoDL 云计算资源。 在云计算平台选择可用的云计…

【单片机】ARM 处理器简介

ARM 公司简介 ARM&#xff08;Advanced RISC Machine&#xff09; 是英国 ARM 公司&#xff08;原 Acorn RISC Machine&#xff09; 开发的一种精简指令集&#xff08;RISC&#xff09; 处理器架构。ARM 处理器因其低功耗、高性能、广泛适用性&#xff0c;成为嵌入式系统、移动…

springboot的实体类字段校验的分组校验

分组校验&#xff08;Group Validation&#xff09;允许在不同的场景下对同一个实体类应用不同的校验规则。例如&#xff0c;在新增数据和更新数据时&#xff0c;可能需要对某些字段的校验规则进行调整。以下是分组校验的具体实现步骤&#xff1a; 一、定义分组接口 创建空的标…

vue3,Element Plus中隐藏树el-tree滚动条

el-tree&#xff0c;节点过多&#xff0c;默认会出现垂直滚动条&#xff0c;显得不美观 可以使用隐藏组件 el-scrollbar 将 el-tree 包裹&#xff0c;就可以隐藏垂直滚动条 <el-scrollbar> <el-tree> ... </el-tree> </el-scrollbar> /* 滚动条禁用鼠…

mysql练习

创建数据库db_ck&#xff0c;再创建表t_hero&#xff0c;将四大名著中的主要人物都插入这个表中&#xff0c;将实现过程中sql提交上上来 1、创建数据库db_ck mysql> create database db_ck; 2、创建表t_hero mysql> use db_ck Database changed mysql> create table …

svn删除所有隐藏.svn文件,文件夹脱离svn控制

新建一个文件&#xff0c;取名remove-svn-folders.reg&#xff0c;输入如下内容&#xff1a; Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] "Delete SVN Folders" [HKEY_LOCAL_MACHINE\SOFTWARE\Class…