Python网络编程&并发编程(上)

1.1网络架构

1.1.1 交换机(二层)

交换机的作用是用来干什么用呢?先举个例子:假设小明电脑里有一部漫威电影,他想要让舍友小华可以在自己的电脑上看到小明电脑里的电影,最简单的办法,就是用一根网线把两台电脑连接,实现两台电脑之间的数据的收发,那如果他们宿舍的人,都想与小明的电脑的数据进行收发,那岂不是需要连接很多根网线,而且电脑的网线接口也不够。这时交换机的作用就出来了。

其他的舍友想要和他们的电脑进行资源共享,这时,就需要一台二层交换机来组成一个局域网。

当电脑接入交换机后,交换机会给每台电脑分配一个IP。局域网内通信是通过ARP协议来进行通信。通信的过程如下:

1.PC1要向PC2发送数据,那么PC1先把数据包封装好,发送到交换机,
此时只知道目标的IP地址,不知道MAC地址(位置MAC地址会默认设为FF);

2.数据包到达交换机,交换机通过广播的形式的将数据包发送到各台PC上;

3.目标PC接受到数据包后,查看数据包的信息,监管自己是否为该数据包的目标IP

                ===>是,收到数据包并且回复

                ===>不是,丢弃数据包

*MAC地址:是物理地址,生产该PC时分配的,存在于网卡中,网卡集成在主板上,是独一的标识。

*广播:把数据发到全部与交换机连接的PC上。

*数据包构成:源IP+目标IP+协议类型+数据包大小+服务类型(QoS相关信息)+生存时间(TTL,用于控制数据包在网络中的生存周期,防止数据包在网络中无限循环)+校验和(用于检验数据包头部信息的完整性)等。

但是如果每次发送信息,都使用广播形式,费时费力,为此,每台电脑的内部都维护了一个ARP表,每次接受到数据时,都会记录自己了解的IP和MAC的对应关系

        IP                MAC

         ...                ...

这样,每次发送信息时,就方便很多了,知道了目标的MAC地址,直接让交换机转发给指定的电脑(单播)

与此同时,每次有信息经过二层交换机时,交换机也会记录端口和MAC地址的对应关系,我们把这种关系存在“MAC地址表/转发表”

        端口                MAC地址

           ....                  .......

那么这么一来,交换机在转发数据的时候,效率更高了。

1.1.2 路由器

企业路由器(和家用的不一样)

路由器(Router)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。路由器是互联网络的枢纽,也被称为网关设备(Gateway)。

在企业里,通信的规模很大,不能再依靠网线直连来进行数据通信,于是依靠路由器进行大规模的数据通信。数据的通信过程是这样的:

        假设PC1要向PC5发送数据包,首先,PC1将数据包发送到交换机(上图左侧交换机),交换机进行广播,路由器接收到数据包后,会查看数据包的目标IP所属的网段,再查看自己的路由表,将数据包转发到其网段所对应的接口,也就是转发到右侧交换机,右侧交换机再广播(交换机也可以根据自己的学习,以单播的形式发送数据包),把数据包转发到各个端口,这就是路由器和交换机构造出来的局域网之间的相互通信。

*在配置路由器的时候,需要配置网关,网关就是路由表里配置的指向此网段的IP。

PC1:        192.168.10.12               网关:192.168.10.254

PC5:     192.168.20.23               网关:192.168.20.254  

*路由器里也配置好了路由表(网段与路由器接口的对应关系),例如:

                接口                                         IP   

                A                                192.168.10.254(192.168.10网段)

                B                                192.168.20.254(192.168.20网段)

    

1.1.3三层交换机

可以实现局域网内收发消息以及不同局域网之间的收发消息

三层交换机集成了交换机和路由器的功能(路由器的大部分功能)

要想两端电脑进行通信,三层交换机要做这些事情:

1.划分两个vlan,模拟路由器的两个端口;

2.讲交换机的接口划分给指定vlan,比如说左侧的接口划分给左侧vlan,右侧同理;

3.电脑连接上交换机;

4.配置三层交换机:

左侧电脑1:192.168.10.1        网关:192.168.10.254        接口1

               2:......

右侧电脑1:192.168.20.1        网关:192.168.20.254        接口4

               2:.....

接口:左vlan        IP:192.168.10.254(192.168.10网段)

           右vlan        IP:192.168.20.254(192.168.20网段)

配置完毕,两侧可通信

1.2网络核心词解释

1.2.1子网掩码和IP

IP也就是IP地址,IP地址是计算机网络中用于标识和定位设备的数字标识,是一个独一无二的地址,用于在互联网上找到和识别设备。其实就是一个网络设备的标识。IP地址是区分类型的,分为IPv4和IPv6两种类型。

                        IPv4地址由32位(4个字节)二进制数组成,为了方便记忆,就分为4组,每组8位,通常以点分十进制形式表示(如192.168.1.1)。

                        IPv6地址则更长,由128位二进制数组成,以冒号十六进制形式(每一个数字都是以16进制表示的)表示(如2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

子网掩码,又称网络掩码、地址掩码或子网络遮罩,它是一个32位地址,与IP地址一起使用,其中对应于网络地址的所有位都置为1,对应于主机地址的所有位都置为0,用于区分IP地址中的网络部分和主机部分,从而确定一个IP地址是属于哪个网络以及该网络中的哪台主机。

网络地址是IP地址中用于标识整个网络或子网的部分。它告诉网络中的设备,数据包应该被发送到哪个网络或子网。

主机地址是IP地址中用于标识网络内特定设备(即主机)的部分。它告诉网络中的设备,数据包应该被发送到网络内的哪台具体设备。

示例

一个IP可以划分为两个部分,也就是:网络地址+主机地址,那么如何确定网络地址和主机地址呢?通过子网掩码就可以确定网络地址和主机地址。例如: 

IP:192.168.88.134                                                           子网掩码:255.255.255.0

*(192.168.88.134/24)

则子网掩码是24位(一组八位且前三组全为255),那么此IP的网络地址就是前24位,也就是前IP的前三组,即网络地址为192.168.88.0,主机地址则为.134

1.2.2 DHCP服务                                                                                                      

DHCP服务,全称Dynamic Host Configuration Protocol(动态主机配置协议),是一种网络管理协议,主要用于局域网(LAN)中动态地分配和管理IP地址及相关配置信息。DHCP服务器能够自动为网络中的客户端设备分配IP地址,而无需网络管理员手动配置。

1.2.3内网和公网IP

内网IP

内网IP,也被称为私有IP地址或局域网IP地址,是在局域网(LAN)内部使用的IP地址。这些IP地址主要用于内部网络中的设备之间的通信,例如家庭网络、企业内网或学校网络等。通常遵循RFC 1918标准中定义的私有地址范围,这些范围包括:

-10.0.0.0 - 10.255.255.255

-172.16.0.0 - 172.31.255.255

-192.168.0.0 - 192.168.255.255

内网IP地址不能直接用于互联网上的通信,因为它们是私有地址,并且可能在多个不同的网络中使用相同的内网IP地址段,而不会发生冲突。

外网IP

外网IP,也被称为公网IP地址或广域网IP地址,是互联网上唯一标识一台设备的IP地址。它允许设备在互联网上进行通信,即与任何连接到互联网的设备交换数据。外网IP地址是由互联网服务提供商(ISP,例如中国移动中国电信)分配的,每个连接到互联网的设备都会获得一个或多个公网IP地址

例如,你想用电脑访问某个公司服务器上部署的网站:

1.公司先去运营商拉专线,申请固定的公网IP,运营商将你的这个专线和这个固定的公网IP进行绑定;

2.配置好公网IP和指定服务器的转发规则

3.你在浏览器输入想要访问的这个网站的IP,那么运营商会根据IP找到其绑定的专线,并通过这个专线、公司的路由器、防火墙等设备找到指定服务器。

*按理说,每台接入互联网的用户都可以有一个公网IP,但是全球太多用户了,IP不够分,于是运营商会将网络进行划分,让多个家庭宽带用户共用同一个公网IP(动态的,每次上网都可能不一样),家庭用户想要通过网络访问其他IP时,先发给运营商,再由运营商向外转发到其他IP,但是要注意,外界想要访问家庭宽带IP时,运营商不会转发这个请求到我们的电脑

1.2.4云服务器

简单来说就是企业造了个机房,买了很多很多的服务器(类似高性能的电脑),然后企业通电拉网,对外租赁这些服务器资源,用户租赁这些服务器,就不用自己拉网线、配置网络、买服务器,常见服务器有阿里云、腾讯云、亚马逊等等,使用说明不多赘述。

1.2.5 端口

端口(Port)在计算机网络中是一个逻辑概念,它是指网络层以上传输层的服务访问点(SAP, Service Access Point)。在OSI(Open Systems Interconnection,开放系统互连)模型中,传输层为网络中的两个主机之间提供端到端的数据传输服务,而端口就是传输层提供给上层应用的一个服务接口。通过这个接口,上层应用(如Web服务、FTP服务、SMTP服务等)可以访问网络,实现数据的发送和接收。

举个例子,假设电脑就是一栋教学楼,电脑上的每个程序,就是教学楼的每一个课室,那么端口号就是每个课室的编号,比如说我要访问电脑上的一个程序,那我就需要知道端口号才能与这个程序进行数据的接发,你要去课室上课,就要知道去课室的编号,不然就去错课室上错课了。

1.2.6 域名与域名系统

域名(Domain Name)是互联网上的一个地址名称,用于识别和定位互联网上的计算机、服务或组织。域名与公网IP相互绑定,方便记忆和访问该IP对应的网站。域名通常由字母、数字、连字符(-)和点(.)组成,并且有一定的结构和规则。一个完整的域名通常包括顶级域名(TLD, Top-Level Domain)、二级域名(SLD, Second-Level Domain)、三级域名等部分,通过点(.)分隔。例如,在域名www.example.com中,com是顶级域名,example是二级域名,而www则是三级域名(有时也称为子域名)。不过,在实际使用中,顶级域名前面常常还会有国家代码等更高层级的域名,比如.cn代表中国,.uk代表英国等。

域名系统(DNS, Domain Name System)是一个分布式数据库,它提供了域名和IP地址之间的映射关系,使得人们可以使用易于记忆和理解的域名来访问互联网上的资源,而不需要记住复杂的IP地址。其实可以理解为就是一个记录本,假设域名是名字,IP是身份证,那么DNS就记录着名字和身份证号的对应关系。

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值