20. 网络编程(上)
目标:掌握网络相关的基础知识并可以基于Python开发程序(基于网络进行数据传输)。
概要:
- 网络必备基础
- 网络编程(Python代码)
- B/S和C/S架构
1.必备基础
你必须了解的网络相关设备和基础概念。
1.1 网络架构
假设 vn 上了一个野鸡大学买了一台电脑,电脑里存了1部小电影,整宿整宿的在宿舍反复的看。
vn 如何想要和室友 提莫进行收发数据,可以通过一根网线来进行连接,并进行数据的传输。
1.1.1 交换机
其他2位室友如何也想和他们的电脑相互连接然后进行资源的共享,此时就需要一个设备 【二层交换机】组件一个局域网。
当电脑接入交换机之后,我们需要为每台电脑分配一个IP,例如:
- 电脑1:192.168.10.1
- 电脑2:192.168.10.2
- 电脑3:192.168.10.3
- 电脑4:192.168.10.4
局域网内容个电脑之间是基于ARP协议来进行通信,例如:A电脑向 IP为192.168.10.3的另一个电脑发送消息。
第一步:A封装数据包,此时只知道目标IP不知道目标mac地址(未知mac地址时默认会设置为FF)。
第二步:将数据包发送到交换机,交换机通过广播的形式将数据发送给所有电脑。
第三步:目标电脑接收到数据包后,监测自己是否是目标IP。
- 是,收到数据并回复。
- 不是,则丢弃包。
为防止每次发送消息都是广播形式,每台电脑的内部都为维护了一个ARP表,接受到数据时(无论是否自己的)都会记录自己了解的IP和MAC的对应关系,例如:
Internet地址 物理地址
192.168.10.1 14-9d-da-2a-dd-0a
192.168.10.3 14-9d-da-2a-dd-0c
...
以便于下次在发送消息时,就知道了目标的mac地址,直接让交换机转发给指定的电脑(单播)。
同时,当有消息发送经过二层交换机时他的内容也会维护记录了交换机接口和连接的电脑的mac地址的对应关系,例如:
接口(网卡) mac地址
接口1 14-9d-da-2a-dd-0A
接口2 14-9d-da-2a-dd-0B
接口3 14-9d-da-2a-dd-0C
...
这样一来,交换机在进行数据转发时,效率就更高了。
注意:每台电脑出厂时在网卡中都设置了唯一的mac地址(不重复),网卡集成在主板上,如果更换了主板则mac地址也会变更。
头部信息:xxx
数据:你好
头部信息:xxx
数据:收到
1.1.2 路由器
多个宿舍之间想想要组建一个相互可以通信网络,此时需要【二层交换机】和【企业路由器】配合组建稍微大一点的局域网(同时也可缓解广播风暴)。
划分好网络结构之后,其实会给各宿舍的电脑分配IP和网关,例如:
宿舍A:
- 电脑1:192.168.10.1 网关:192.168.10.254
- 电脑2:192.168.10.2 网关:192.168.10.254
- 电脑3:192.168.10.3 网关:192.168.10.254
- 电脑4:192.168.10.4 网关:192.168.10.254
宿舍B
- 电脑1:192.168.20.1 网关:192.168.20.254
- 电脑2:192.168.20.2 网关:192.168.20.254
- 电脑3:192.168.20.3 网关:192.168.20.254
- 电脑4:192.168.20.4 网关:192.168.20.254
然后再在路由器中配置路由表(包含网段和路由器上的接口的对应关系),例如:
接口 IP
eth0 192.168.10.254(192.168.10网段)
eth1 192.168.20.254(192.168.20网段)
想与外部网络通信,需要配置网关,网关就是路由表中配置的指向此网段的IP。其实就类似于贸易出口都需要经过海关。
数据通信的过程结合了APR协议和IP协议,例如:宿舍A的电脑1向宿舍B的电脑3发送消息(目标IP:192.168.20.3)。
简化过程:
- 宿舍A的电脑1,通过广播或单播将数据发送到网管(路由器)
- 路由器接收到数据之后,再通过对应的接口把数据通过广播的形式发送到宿舍B。
注意:各自局域网内通过学习并记录相关mac地址后,就可以不再使用广播形式,而是使用单播来发送消息了。
1.1.3 三层交换机
三层交换机集成了 交换机 & 路由器的功能(大部分路由器功能),上述的三个设备其实可以用一个三层交换机就可以搞定。
按照下图,在三层交换机上分别做如下几件事:
1. 划分两个vlan,模拟出来路由器的两个接口。
2. 将交换机的接口划分给指定的vlan,例如:
接口1、2、3划分给一个vlan,相当于交换机连接上了路由器。
接口4、5、6划分给一个vlan,相当于交换机连接上了路由器。
3. 电脑连接上交换机。
4. 进行相应的配置。
宿舍A(左边)电脑配置:
- 电脑1:192.168.10.1 网关:192.168.10.254 对应交换机接口:1
- 电脑2:192.168.10.2 网关:192.168.10.254 对应交换机接口:2
- 电脑3:192.168.10.3 网关:192.168.10.254 对应交换机接口:3
宿舍B(右边)电脑配置:
- 电脑1:192.168.20.1 网关:192.168.20.254 对应交换机接口:4
- 电脑2:192.168.20.2 网关:192.168.20.254 对应交换机接口:5
- 电脑3:192.168.20.3 网关:192.168.20.254 对应交换机接口:6
交换机中的路由配置:
接口 IP
左vlan 192.168.10.254(192.168.10网段)
右vlan 192.168.20.254(192.168.20网段)
通过上述的配置之后,就可以实现宿舍A和宿舍B的网络通信了。
1.1.4 小型企业基础网络架构
1.1.5 家庭网络架构
家用路由器集成了是交换机和路由的功能(性能差、价格便宜)。
1.1.6 互联网
1.2 网络核心词汇
1.2.1 子网掩码和IP
之前说过,接入网络设备后,需要一个IP来代指次电脑,例如:192.168.10.1 。
IP其是一个32位的二进制,为了便于记忆就将它分为4组,每组8位,由小数点分开,例如:
二进制表示:00000000.10010111.11111111.00001111
十进制表示:251.151.255.15
0~255
192.178.11.211
192.178.11.311
在网络中的每台电脑都会有一个IP与之绑定,这样通过IP就可以找到相应的电脑。
一个IP地址可以划分为两个部分,即:网络地址 + 主机地址。
-
问题1:如何确定网络地址和主机地址呢?
通过子网掩码就可以确定IP的网络地址和主机地址。 示例1: IP:192.168.1.199 11000000.10101000.00000001.11000111 子网掩码:255.255.255.0 11111111.11111111.11111111.00000000 此时,网络地址就是前24位 + 主机地址是后8位。你可能见过有些IP这样写 192.168.1.199/24,意思也是前24位是网络地址。 示例2: IP:192.168.99.254 11000000.10101000.01100011.11111110 子网掩码:255.255.240.0 11111111.11111111.11111100.00000000 此时,网络地址就是前22位 + 主机地址是后10位。你可能见过有些IP这样写 192.168.99.254/22,意思也是前22位是网络地址。
-
问题2:划分 网络地址 + 主机地址 的意义是什么?
网络地址相同的IP,也称为属于同一个网段。 在局域网内只有同一个网段的IP才能相互通信,不同网段IP想要通信需要借助路由的转发才能通信。 当了解子网掩码之后,其实就可以确定某个网段可以容纳的主机个数,例如: 【IP: 192.168.10.2 掩码:255.255.255.0】 和 【192.168.10.251 掩码:255.255.255.0】 数据同一个网段。 示例网段的主机范围:11000000.10101000.00001010. 00000001 ~ 11000000.10101000.00001010. 11111110 -------------------------- -------------------------- 网络地址 网络地址 192.168.10.1 ~ 192.168.10.254 【IP: 192.168.8.1 掩码:255.255.240.0】 和 【192.168.11.254 掩码:255.255.240.0】 数据同一个网段。 子网掩码:255.255.240.0 示例网段的