学习笔记:Python网络编程初探之基本概念(一)

news2025/3/10 20:18:49

一、网络目的

让你设备上的数据和其他设备上进行共享,使用网络能够把多方链接在一起,然后可以进行数据传递。

网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。

二、IP地址的作用

用来标记唯一一台电脑

1. Linux查看IP地址

输入命令ifconfig

2. Window查看IP地址

快捷键win+R打开运行,输入cmd,然后输入命令ipconfig

3. Linux下关闭网卡

Ctrl+A:快速回到行首

Ctrl+E:快速回到行尾

(1)关闭网卡

(2)开启网卡

三、IP地址分类

IPV4个数:256*256*256*256(瓜分完了,不够用)

IPV6:

每一个IP地址包括两部分:网络地址和主机地址

1. A类IP地址

一个A类IP地址由1字节的网络地址(网络号)和3字节主机地址(主机号)组成,网络地址的最高位必须是“0”。

  • 地址范围:1.0.0.1 - 126.255.255.254
  • 二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110
  • 可用的A类网络有126个,每个网络能容纳16777214个主机。

2. B类IP地址

一个B类IP地址由2个字节的网络地址(网络号)和2个字节的主机地址(主机号)组成,网络地址的最高位必须是“10”。

  • 地址范围:128.1.0.1 - 191.255.255.254
  • 二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
  • 可用的B类网络有16384个,每个网络能容纳65534个主机。

3. C类地址

一个C类IP地址由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是“110”。

  • 范围:192.0.1.1 - 223.255.255.254
  • 二进制表示为:11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
  • C类网络可达2097152个,每个网络能容纳254个主机。

4. D类地址用于多点广播

D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。

它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。

多点广播地址用来一次寻址一组计算机,地址范围224.0.0.1 - 239.255.255.254。

 5. E类IP地址

以“1111”开始,为将来使用保留。E类地址保留,仅作实验和开发用。

6. 私有ip

在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就是属于私网IP,不在公网中使用的,它们的范围是:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.31.255.255
  • 192.168.0.0 ~ 192.168.255.255

四、端口

1. 什么是端口?

提出问题:当两台电脑上同时运行多个程序时,通过IP地址数据可以到达,但该给电脑中哪个程序呢?

计算机通过IP地址找到目标设备后,还需要用端口号区分设备上不同的软件服务。例如:

  • 浏览网页:默认用80端口(HTTP)或443端口(HTTPS)
  • 发邮件:用25端口(SMTP)
  • 下载文件:用21端口(FTP)

网络端口的作用可以理解为计算机的“门牌号”。就像一栋大楼有很多房间(服务),每个房间有唯一的门牌号(端口号),方便快递员(数据)准确找到对应的房间。

如果一个程序需要收发网络数据,那么就需要有这样的端口在Linux系统中,端口可以有65536(2的16次方)个之多!既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号

2. 端口号

端口是通过端口号来标记的,端口号只有整数,范围是从0到65535。

注意:端口号不一样的*nix系统不一样,还可以手动修改。

3. 端口是怎样分配的

端口号不是随意使用的,而是按照一定的规定进行分配

(1)知名端口(0-1023)

众所周知的端口,范围-到1023。由国际组织IANA统一管理,专门分配给最常用的网络服务:

  • 80端口:网页服务(HTTP)→ 相当于"官方网站入口"
  • 443端口:加密网页(HTTPS)→ 类似"银行VIP通道"
  • 22端口:安全远程登录(SSH)→ 类似"机房管理专用门"

(2)注册端口(1024-49151)
企业可向IANA申请注册专用端口,比如:

  • 3306端口:MySQL数据库
  • 3389端口:Windows远程桌面
  • 5432端口:PostgreSQL数据

   (3) 动态端口

动态端口的范围是从1024到65535

之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。

动态分配是指当一个系统程序或应用程序程序需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。

当这个程序关闭时,同时也释放了所占用的端口号。

(4)怎样查看端口号

Linux 系统:

  • 使用netstat命令:如netstat -tulnp可以查看所有监听中的 TCP 和 UDP 端口,并显示对应的进程 ID 和程序名称。若只想查看特定端口,如 22 端口的使用情况,可使用netstat -tnlp | grep ":22"4。
  • 使用ss命令ssnetstat的现代替代品,性能更优,常用ss -tuln查看端口,若查看特定端口,如查看端口号 22 的使用情况,可使用ss -tnlp | grep ":22"4。
  • 使用lsof命令lsof -i:<端口号>可以列出使用该端口的进程信息,如lsof -i:80可查看使用 80 端口的进程。

Windows 系统:

使用命令提示符(CMD)

  • netstat命令:打开命令提示符,输入netstat -ano,可列出所有网络连接和监听端口,显示本地地址、外部地址、状态以及对应的进程 ID。若只想查看正在监听的端口,可使用netstat -anl。要以数字格式显示地址和端口信息,可使用netstat -n5。
  • tasklist命令配合netstat:先使用netstat -ano找到占用特定端口的进程 ID,再使用tasklist /fi "pid eq <进程ID>"查看对应的进程名称和详细信息。

使用任务管理器

  • 打开任务管理器,切换到 “性能” 选项卡,点击 “资源监视器”,在 “网络” 选项卡中可以查看正在使用的端口以及对应的进程。

五、Socket介绍

1. 不同电脑上的进程如何通信

首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!

在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中是行不通的。

起始TCP/IP协议协议族帮我们解决了这个问题,网络层的IP地址可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中应用进程。

这样利用ip地址 + 协议 + 端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

2. 什么是Socket?

socket(简称套接字)是进程间通信的一种方式,其他进程间通信的~主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的例如我们每天浏览网页、QQ 聊天、收发emai 等等。

3. 创建Socket

在python中,使用socket模块的函数socket就可以完成:

import socket
socket.socket(AdressFamily,Type)

总结:所以说会了socket直白来讲,你接下来编写的程序,你就可以完成网络功能

创建一个TCP Socket

import socket  # 导入 Python 内置的 socket 模块,用于网络编程  

# 创建 TCP 套接字  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
# - socket.AF_INET:指定使用 IPv4 地址族(常见的网络地址类型)。  
# - socket.SOCK_STREAM:指定使用 TCP 协议,特点是面向连接、可靠传输,数据无丢失、按序到达。  

# ...这里是使用套接字的功能(省略)...  
# 实际使用中,会在此处添加绑定地址端口(bind)、监听(listen)、接受连接(accept)、收发数据(send/recv)等逻辑。  

创建一个UDP Socket

import socket  # 导入 socket 模块  

# 创建 UDP 套接字  
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  
# - socket.AF_INET:同样指定 IPv4 地址族。  
# - socket.SOCK_DGRAM:指定使用 UDP 协议,特点是无连接、不可靠传输,适合对实时性要求高但允许少量丢包的场景(如视频直播、游戏通信)。  

# ...这里是使用套接字的功能(省略)...  
# 实际使用中,会在此处添加绑定地址端口(bind)、收发数据(sendto/recvfrom)等逻辑。  

s.close()  # 关闭 UDP 套接字,释放资源。 

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

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

相关文章

Laya中runtime的用法

文章目录 0、环境&#xff1a;2.x版本1、runtime是什么2、使用实例情景需要做 3、script组件模式 0、环境&#xff1a;2.x版本 1、runtime是什么 简单来说&#xff0c;如果创建了一个scene&#xff0c;加了runtime和没加runtime的区别就是&#xff1a; 没加runtime&#xff…

OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对选定区域内的梯度场应用适当的非线性变换&#xff0c;然后通过泊松求解器重新积分&#xff0c;可以局部修改图像的表观照明。 cv::illuminati…

【爬虫】开篇词

一、网络爬虫概述 二、网络爬虫的应用场景 三、爬虫的痛点 四、需要掌握哪些技术&#xff1f; 在这个信息爆炸的时代&#xff0c;如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究&#xff0c;还是人工智能训练&#xff0c;网络爬虫&…

力扣-股票买入问题

dp dp元素代表最大利润 f[j][1] 代表第 j 次交易后持有股票的最大利润。在初始状态&#xff0c;持有股票意味着你花钱买入了股票&#xff0c;此时的利润应该是负数&#xff08;扣除了买入股票的成本&#xff09;&#xff0c;而不是 0。所以&#xff0c;把 f[j][1] 初始化为负…

微服务保护:Sentinel

home | Sentinelhttps://sentinelguard.io/zh-cn/ 微服务保护的方案有很多&#xff0c;比如&#xff1a; 请求限流 线程隔离 服务熔断 服务故障最重要原因&#xff0c;就是并发太高&#xff01;解决了这个问题&#xff0c;就能避免大部分故障。当然&#xff0c;接口的并发…

蓝桥杯刷题周计划(第二周)

目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目题解分析 题目九题目代码题解分析 题目十题目代码题解分析 题目十一题目代码题解分…

【C++】C++11部分

目录 一、列表初始化 1.1 {}初始化 1.2 initializer_list 二、变量类型推导 2.1 auto 2.2 decltype 三、STL中一些变化 3.1 新增容器 四、lambda表达式 4.1 C98中的一个例子 4.2 lambda表达式 4.3 函数对象与lambda表达式 五、包装器 5.1 function包装器 5.2 fu…

【分布式】聊聊分布式id实现方案和生产经验

对于分布式Id来说&#xff0c;在面试过程中也是高频面试题&#xff0c;所以主要针对分布式id实现方案进行详细分析下。 应用场景 对于无论是单机还是分布式系统来说&#xff0c;对于很多场景需要全局唯一ID&#xff0c; 数据库id唯一性日志traceId 可以方便找到日志链&#…

c#面试题整理6

1.String类能否被继承&#xff0c;为什么 可以看到String类的修饰符是sealed&#xff0c;即是密封类&#xff0c;故不可被继承 2.一个对象的方法是否只能由一个线程访问 不是&#xff0c;但是可通过同步机制&#xff0c;确保同一个时间只有一个线程访问 3.计算2*8&#xff…

简洁实用的3个免费wordpress主题

高端大气动态炫酷的免费企业官网wordpress主题 非常简洁的免费wordpress主题&#xff0c;安装简单、设置简单&#xff0c;几分钟就可以搭建好一个wordpress网站。 经典风格的免费wordpress主题 免费下载 https://www.fuyefa.com/wordpress

Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露

一&#xff1a;背景 1. 讲故事 前面跟大家分享过一篇 C# 调用 C代码引发非托管内存泄露 的文章&#xff0c;这是一个故意引发的正向泄露&#xff0c;这一篇我们从逆向的角度去洞察引发泄露的祸根代码&#xff0c;这东西如果在 windows 上还是很好处理的&#xff0c;很多人知道…

【HDLbits--counter】

HDLbits--counter 在IC设计中&#xff0c;counter是十分普遍和重要的设计内容&#xff1b; 题目&#xff1a;基础计数器 module top_module (input clk,input reset,output [9:0] q);always (posedge clk) beginif(reset) beginq < 0;end else beginif(q999) beginq < 0…

nvm 让 Node.js 版本切换更灵活

有很多小伙伴前端开发进程中&#xff0c;我们常常会遇到不同项目依赖不同版本 Node.js 的情况。我们不可能去卸载重新安装适应的版本去安装依赖或者启动项目。为了避免版本冲突带来的一系列麻烦&#xff0c;在这里给大家推荐一款Node.js 版本管理工具——nvm&#xff08;Node V…

美畅物联丨P2P系列之STUN服务器:助力网络穿透

在当今WebRTC等实时通信应用广泛兴起的复杂网络环境下&#xff0c;如何在NAT&#xff08;网络地址转换&#xff09;环境中实现高效、稳定的点对点&#xff08;P2P&#xff09;连接成为关键。STUN&#xff08;Session Traversal Utilities for NAT&#xff09;服务器作为应对这一…

基于SpringBoot的“积分制零食自选销售平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“积分制零食自选销售平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 局部E-R图 系统首页界面…

DeepSeek-V3 技术报告解读

DeepSeek火了有一段时间了&#xff0c;春节假期因为没时间&#xff0c;所以关于deepseek大模型一系列的技术报告一直没看&#xff0c;新年开工后&#xff0c;抽一点时间把之前的坑补起来&#xff0c;关于DeepSeek-V3技术报告的解读已经有很多了&#xff0c;但我相信不同的人去读…

力扣72题编辑距离

题目 原理 三个操作对应的操作次数分别是: 插入:在原本的次数上 1删除:在原本的次数上1替换:如果两个位置的字符串一样,则等于原本的次数, 如果不等,在原本的次数上1 去三者的最小值,就是最小的编辑次数 示例 代码 答案是2 package org.example;public class _72_编辑距离 {pu…

聊天服务器分布式改造

目前的聊天室是单节点的&#xff0c;无论是http接口还是socket接口都在同一个进程&#xff0c;无法承受太多人同时在线&#xff0c;容灾性也非常差。因此&#xff0c;一个成熟的IM产品一定是做成分布式的&#xff0c;根据功能分模块&#xff0c;每个模块也使用多个节点并行部署…

linux上安装redis[从0到1]

redis安装步骤 1.下载redis2.新建redis文件夹3.解压安装Redis4.编译5.修改相关配置6.错误 redis下载官网: https://download.redis.io/releases/ 找到自己需要的版本 1.下载redis 选着自己需要下载的版本后&#xff0c;右击选择复制链接&#xff0c;然后利用命令进行下载&am…

批量删除 Excel 中的空白行、空白列以及空白表格

我们经常会碰到需要删除 Excel 文档表格中的空白行及空白列的场景&#xff0c;有一些空白行或空白列可能我们人工不好识别&#xff0c;因此删除空白行空白列对我们来讲就非常的繁琐&#xff0c;因为我们需要先识别哪些 Excel 文档中包含空白行或者空白列&#xff0c;我们才能够…