python上的网络编程

网络编程

![image-20210220091551058](assets/image-20210220091551058.png)

课程目标:掌握网络相关的基础知识并可以基于Python开发程序(基于网络进行数据传输)。

课程概要:

- 网络必备基础

- 网络编程(Python代码)

- B/S和C/S架构

## 1.必备基础

你必须了解的网络相关设备和基础概念。

### 1.1 网络架构

假设 **alex** 上了一个野鸡大学买了一台电脑,电脑里存了1部小电影,整宿整宿的在宿舍反复的看。

![image-20210204184431053](assets/image-20210204184431053-3881170.png)

**alex** 如何想要和室友 **于超** 进行收发数据,可以通过一根网线来进行连接,并进行数据的传输。

![image-20210204185417337](assets/image-20210204185417337-3881170.png)

#### 1.1.1 交换机

其他2位室友如何也想和他们的电脑相互连接然后进行资源的共享,此时就需要一个设备 【二层交换机】组件一个局域网。

```python

当电脑接入交换机之后,我们需要为每台电脑分配一个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地址也会变更。

```

<img src="assets/image-20210221142111266.png" alt="image-20210221142111266" style="zoom:33%;" />

![image-20210205143317465](assets/image-20210205143317465-3881170.png)

```

头部信息: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。其实就类似于贸易出口都需要经过海关。

```

```python

数据通信的过程结合了APR协议和IP协议,例如:宿舍A的电脑1向宿舍B的电脑3发送消息(目标IP:192.168.20.3)。

简化过程:

    - 宿舍A的电脑1,通过广播或单播将数据发送到网管(路由器)

    - 路由器接收到数据之后,再通过对应的接口把数据通过广播的形式发送到宿舍B。

注意:各自局域网内通过学习并记录相关mac地址后,就可以不再使用广播形式,而是使用单播来发送消息了。

```

![image-20210204205902286](assets/image-20210204205902286-3890545.png)

<img src="assets/image-20210221145506980.png" alt="image-20210221145506980" style="zoom:33%;" />

#### 1.1.3 三层交换机

三层交换机集成了 交换机 & 路由器的功能(大部分路由器功能),上述的三个设备其实可以用一个三层交换机就可以搞定。

```python

按照下图,在三层交换机上分别做如下几件事:

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

     

    交换机中的路由配置:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值