【python开发】网络编程(上)
这里写目录标题
- 一、必备基础
- (一)网络架构
- 1、交换机
- 2、路由器
- 3、三层交换机
- 4、小型企业基础网络架构
- 5、家庭网络架构
- 6、互联网
- (二)网络核心词汇
- 1、子网掩码和IP
- 2、DHCP
- 3、内网和公网IP
- 4、云服务器
- 5、端口
- 6、域名
一、必备基础
(一)网络架构
两台电脑之间如果想要传输数据,最原始的方法是在两个电脑之间连接一个网线,网线上有网口,网口本质上就是网卡,网卡是专门用来做网络通信的。

1、交换机
两台电脑之间可以通过网线进行数据交换,但如果有四台电脑,四个电脑之间想要进行数据交互的时候,就必须让一台电脑拥有三个接口,这显然是低效率的,于是就发明了交换机。
当四台电脑连接到交换机上,互相之间就可以进行数据传输,此时就形成了小小的局域网,交换机会给四个电脑分配IP地址,IP也可以自己指定,这个IP地址就代表了电脑,每个电脑的网口中有一个网卡,而每个网卡上都有一个mac地址,mac地址是在电脑出厂的时候配置到网卡上的,而网卡一般是连在电脑的主卡上的,如果电脑换了主板,意味着电脑的主板会发生变化。
交换机在局域网内,通过广播的形式实现了电脑的通信:当2号电脑给3号电脑发消息时,电脑会打包一个数据信息,包括头部信息和发送数据,其中,头部信息包括了本机IP和mac地址以及目标机台的IP和mac地址,信息包传递到交换机上,交换机会以广播的形式传送给每天机器,所有的电脑就会进行校验,查看该信息包是否是传送给自己的,当目标机器3号收到信息时,也会给2号信息传递一个已经收到的信息,同样是通过交换机以广播的形式进行传递。但是这样的传递效率还是比较低的,但是随着传送次数多了之后,交换机和局域网内所有电脑就会有记录:IP地址和MAC地址的对应关系,之后交换机就会通过IP地址直接将信息传递给对应的mac地址,这样就免去了广播形式,只需要单播就可以发送信息。
2、路由器
当局域网和局域网之间需要进行数据传递时,如果将交换机之间进行直连,则会产生广播风暴,此时就需要借助另外一个有效的机器——路由器。
有了路由器之后,则会给不同的局域网配置不一样的ip地址,进行一个区域划分,接着要配置网关地址。
所以不同的局域网之间传递信息,将通过网关检查网段是否正确,然后通过交换机传递到目标电脑上。全球的信息传递就是通过交换机和路由器实现的。

3、三层交换机
集成了交换机和路由器的功能,既能够实现在局域网内收发消息,也能够构建不同局域网并在不同局域网内实现通讯。三层交换器内,首先由路由器划分vlan(网段),这一步相当于是交换机脸上了路由器。不同的局域网有不同的网段,不同局域网之间进行数据交互,则需要通过网关检查所属网段,然后发送到目标网段中,再有交换机通过广播/单播的形式发送给目标电脑。

4、小型企业基础网络架构

5、家庭网络架构
运营商连接光猫连接家用路由器(简单得实现了交换机和路由器的功能)连接电脑,家用路由器性能差,只能连接较少的设备。
6、互联网
与国外的网络进行链接,也需要专门的设备,该设备由三大运营商出资购买。
(二)网络核心词汇
1、子网掩码和IP
每一个IP地址代指一台电脑,IP其实是一个32位的二进制,为了便于记忆将它分为4组,每组8位,由小数点分开,每组的数值在0-255之间。
子网掩码的主要作用是屏蔽IP地址的一部分以区别网络标识和主机标识。一个ip地址可以分为两个部分:网络地址+主机地址。192.168.1.199/24表示前24位是网络地址(被掩盖),后面8位是主机地址。
划分成网络地址+主机地址的意义是什么?
网络地址相同的可以视作是同一个网络,网络地址相同的IP属于同一个网段,在局域网内只有同一个网段的IP才能相互通信,不同网段的IP通信需要借助路由器转发才能通信。在局域网内如果不是同一个网段也不能相互通讯。
2、DHCP
在一个局域网内,给某台电脑分配IP的方法有两种:(1)手动设置;2、自动获取。其中自动获取方式在电脑为“自动获取IP地址”,在路由器或三层交换机,开启DHCP服务,并设置IP地址。
3、内网和公网IP
自己在一个局域网内为电脑分配的IP都称为内网IP,基于内网IP可以在一个局域网内进行互相通信是可以的,但是不能跨运营商进行数据传输。如果想要通过互联网进行通信,就必须借助公司IP,例如家庭电脑想访问某公司服务器上部署的网站:
(1)公司去运营商申请公司的固定IP(办理专线宽带时,运营商会分配至少1个固定IP地址),其实运营商就是将专线和固定IP建立一个绑定关系。
(2)配置公网IP与制定服务器的转发规则。
(3)家庭电脑如果想访问某个公司拂去其上的网站,只需要执行制定IP,运营商就会根据IP找到与之关联的公司专线,并通过公司路由器、防火墙等设备找到服务器。
由于全球用户太多,IP不够分,所以运营商会进行划分,让多个家庭宽带用户共用一个公网IP(动态,所以每次上网公网IP都不一样)。
如果想开发一个网站供全球的用户访问,需要达到以下几个条件:
(1)拉专线,申请固定公网IP;
(2)买一台服务器(性能好的电脑);
(3)公网IP绑定至服务器;
(4)将写好的代码放在服务器上并运行起来。
4、云服务器
简单说,云服务器就是构建了一个机房,买了很多服务器,然后通电+通网,主要对外租赁这些服务器资源,让用户不必再自己拉专线+配置网络+买服务器。
假设在腾讯云租一台服务器,就可以根据自己的需求去选择配置,腾讯云会根据配置在他的物理机上虚拟出一个服务器,并进行相应的环境初始化并绑定公网固定IP,这样就可以快速拥有一台可以被大家访问的服务器了。注:一台性能非常高的物理机虚拟出很多虚拟机,类似于在自己电脑上通过vmware、parallel等搞出多台虚拟机。
5、端口
假设公司在腾讯租了一台云服务器(外网IP:123.206.15.88),然后又开发了两个网站运行在服务器上。那么用户在自己的手机或电脑上如何分别来访问同一台服务器上的两个程序呢?
在计算机中有一个端口,每个程序想要通过网络来进行通讯都必须要制定一个借口,例如:网站A 8001端口、网站B 8002端口。注意:端口的取值范围是:0~65535,其中前5000个端口已经有特定的含义,在自定义的时候最好选择5000之后的端口。
6、域名
对于浏览器来说,如果给了IP地址,但是没有给端口,会自动补全端口,由于IP地址很难记,所以域名就产生了,域名类似于www.baidu.com,为了好查询网址,对域名和IP创建对应关系,用户只需要记住域名就可以了。域名与端口无关。
当用户在自己电脑或手机上输入域名去访问时,有两个步骤:(1)根据域名寻找IP;(2)获得IP后,再通过IP去访问指定的服务器。
在电脑上输入域名后,寻找IP的过程如下:
(1)在自己电脑的DNC缓存记录中寻找域名对应的IP,如果未命中,则执行下一步;
(2)在自己电脑的hosts文件中寻找,如果未命中,则执行下一步;
(3)在自己电脑上找到DNC配置的地址(本地域名服务器),去这个地址寻找域名对应的IP,如果未命中,则进行下一步;
(4)去根域名服务器中询问(全球共13台根域名服务器,离中国最近的一台在日本)。

如果想要让自己的网站通过域名来访问,应该怎么办?
(1)租一个域名:ICANN,域名的总管理者(英国的一个非盈利机构),它仅制定域名政策,注册业务会授权一些顶级注册商,可以对外销售域名,但要受国家互联网信息中心的管理。
顶级注册商有:中国万网(阿里云收购)、新网互联、商务中国、中国频道等。
代理注册商:顶级注册商可以再招一些代理帮助他们麦域名。
(2)备案:现在国内注册域名后,需要进行备案(提交一些网站、个人或企业信息后)才能使用,国外的域名无需备案就可以使用。
(3)域名解析:让域名和IP创建关联关系,并将关系同步到相关:本地域名服务器和根域名服务器。
相关文章:
【python开发】网络编程(上)
这里写目录标题 一、必备基础(一)网络架构1、交换机2、路由器3、三层交换机4、小型企业基础网络架构5、家庭网络架构6、互联网 (二)网络核心词汇1、子网掩码和IP2、DHCP3、内网和公网IP4、云服务器5、端口6、域名 一、必备基础 &…...
php源码 单色bmp图片取模工具 按任意方式取模 生成字节数组 自由编辑点阵
http://2.wjsou.com/BMP/index.html 想试试chatGPT4生成,还是要手工改 php 写一个网页界面上可以选择一张bmp图片,界面上就显示这张bmp图片, 点生成取模按钮,在图片下方会显示这张bmp图片的取模数据。 取模规则是按界面设置的&a…...
设计模式-命令模式(Command Pattern)
承接Qt/C软件开发项目,高质量交付,灵活沟通,长期维护支持。需求所寻,技术正适,共创完美,欢迎私信联系! 一、命令模式的说明 命令模式(Command Pattern)是一种行为设计模式…...
鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:位置设置)
设置组件的对齐方式、布局方向和显示位置。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 align align(value: Alignment) 设置容器元素绘制区域内的子元素的对齐方式。 卡片能力: 从API…...
ShardingJdbc实战-分库分表
文章目录 基本配置分库分表的分片策略一、inline 行表达时分片策略algorithm-expression行表达式完整案例和配置如下 二、根据实时间日期 - 按照标准规则分库分表标准分片 - Standard完整案例和配置如下 基本配置 逻辑表 逻辑表是指:水平拆分的数据库或者数据表的相…...
51单片机-(定时/计数器)
51单片机-(定时/计数器) 了解CPU时序、特殊功能寄存器和定时/计数器工作原理,以定时器0实现每次间隔一秒亮灯一秒的实验为例理解定时/计数器的编程实现。 1.CPU时序 1.1.四个周期 振荡周期:为单片机提供定时信号的振荡源的周期…...
midjourney提示词语法
更高级的提示可以包括一个或多个图像URL、多个文本短语和一个或更多个参数 Image Prompts 可以将图像URL添加到提示中,以影响最终结果的样式和内容。图像URL总是位于提示的前面。 https://docs.midjourney.com/image-prompts Text Prompt 要生成的图像的文本描述。…...
【鸿蒙 HarmonyOS 4.0】路由router
一、介绍 页面路由指在应用程序中实现不同页面之间的跳转和数据传递。HarmonyOS提供了Router模块,通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。 二、页面跳转 2.1、两种跳转模式: router.pushUrl()&…...
AT24C1024的模拟IIC驱动
AT24C1024是基于IIC的EEPROM,容量为1024/8128k bytes。它的引脚如下: 其中A1,A2为硬件地址引脚 WP为写保护引脚,一般我们需要读写,需要接低电平GND,接高的话则仅允许读 SDA和SCL则为IIC通信引脚 芯片通信采用IIC&…...
Stable Diffusion生成式扩散模型代码实现原理
Stable Diffusion可以使用PyTorch或TensorFlow等深度学习框架来实现。这些框架提供了一系列的工具和函数,使得开发者可以更方便地构建、训练和部署深度学习模型。因此可以使用PyTorch或TensorFlow来实现Stable Diffusion模型。 安装PyTorch:确保您已经安…...
解决Keepalived “脑裂”(双VIP)问题
1. 检查广播情况 yum install tcpdump -y tcpdump -i ens33 vrrp -n master 192.168.80.130 与 backup: 192.168.80.131都在广播,正常情况下backup应该是不在广播的,所以可以判断存在防火墙屏蔽vrrp问题,需要设置VRRP过掉防火墙࿰…...
cAdvisor+Prometheus+Grafana 搞定Docker容器监控平台
cAdvisorPrometheusGrafana cAdvisorPrometheusGrafana 搞定Docker容器监控平台1、先给虚拟机上传cadvisor2、What is Prometheus?2.1、架构图 3、利用docker安装普罗米修斯4、安装grafana cAdvisorPrometheusGrafana 搞定Docker容器监控平台 1、先给虚拟机上传cadvisor cAd…...
java基础知识面试题
下面是关于java基础知识的一些常见面试题 equals 与区别 在Java中,""是一个比较操作符,用于比较两个变量的值是否相等。而"equals()"是Object类中定义的方法,用于比较两个对象是否相等。 具体区别如下: &…...
科技云报道:黑马Groq单挑英伟达,AI芯片要变天?
科技云报道原创。 近一周来,大模型领域重磅产品接连推出:OpenAI发布“文字生视频”大模型Sora;Meta发布视频预测大模型 V-JEPA;谷歌发布大模型 Gemini 1.5 Pro,更毫无预兆地发布了开源模型Gemma… 难怪网友们感叹&am…...
解决i18n国际化可读性问题,傻瓜式webpack中文支持国际化插件开发
先来看最后的效果 问题 用过国际化i18n的朋友都知道,天下苦国际化久矣,尤其是中文为母语的开发者,在面对代码中一堆的$t(abc.def)这种一点也不直观毫无可读性的代码,根本不知道自己写了啥 (如上图,你看得出…...
【Django】执行查询—F()表达式
F() F()可以实现将模型字段值与同一模型中的另一字段做比较。举个例子看一下: class Entry(models.Model):...number_of_comments models.IntegerField(default0)number_of_pingbacks models.IntegerField(default0)...找到所有 number_of_pingbacks 大于 numbe…...
202112CSPT4磁盘文件操作
题意:有n个id号,m段空间,k个操作: 0 0 0:从L开始到R或遇到第一个其他非空id号为止,写入 i d id id号以及值 v a l val val;如果成功写入则输出写入成功的最右位置,否则输出-1 1 1 1:若 [ L , …...
5GC SBA架构
协议标准:Directory Listing /ftp/Specs/archive/23_series/23.501/ (3gpp.org) NF描述说明NSSFNetwork Slice Selection Function网络切片选择,根据UE的切片选择辅助信息、签约信息等确定UE允许接入的网络切片实例。NEF Network Exposure Function网络开…...
《求生之路2》服务器如何选择合适的内存和CPU核心数,以避免丢包和延迟高?
根据求生之路2服务器的实际案例分析选择合适的内存和CPU核心数以避免丢包和延迟高的问题,首先需要考虑游戏的类型和对服务器配置的具体要求。《求生之路2》作为一款多人在线射击游戏,其服务器和网络优化对于玩家体验至关重要。 首先,考虑到游…...
精读服务器默认rsyslog的配置文件
rsyslog的配置文件 rsyslog.conf #### MODULES ####$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal #$ModLoad imklog # reads kernel messages (the same are read…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
