Python网络编程

网络编程

1. 引子

假如有两个脚本foo.py, bar.py,分别运行,都可以正常运行。但是现在想从两个程序间传递一个数据。

  • 同一台电脑:
    • 创建一个文件,将foo.py的数据读入文件中,bar.py从文件中读取数据。
  • 不同电脑间:
    • 该怎么做?

2. 软件的开发架构

C/S架构

C/S即Client和Server -----> 客户端和服务器端架构

B/S架构

B/S即Browser和Server -----> 浏览器端和服务器端架构

3. 什么是网络

网络就是一种辅助双方或者多方能够连接在一起的工具。

伴随着网络发展,人们使用了很多通信方法,有些已不再使用,现在使用最广泛的是TCP/IP(Transmission Control Protocol/Internet Protocol)

TCP/IP是标准的协议,其可以使世界范围内的计算机通过Internet或本地网络通信。

TCP/IP事实上是一些协议(protocols)的合集。当前大多数使用中的通信都使用TCP协议。

Internet是在一些共享的线路上发送数据’的。例如:在您的计算机上也许同时运行着几个应用程序,如Web浏览器、通讯软件等程序,而您只须通过一条单一的线路来连接互联网。上面所有的程序都共享这个连接,简单地说,用户往往不会觉察到这个共享的发生。

3.1 目的

  • 使用网络把多方连接在一起,然后,进行数据传输。
  • 为了让不同电脑的软件可以相互传递数据,借助网络的功能。

3.2 网络编程的定义

让不同电脑中的软件能够进行数据传递,即网络中不同主机进程间的通信。

4. 地址

4.1 生活中的地址与标识

不同的网络中,采用唯一的标识来区分不同的主体,比如车牌号、建筑物地址、电话号码、员工编号等等

一台电脑怎么找到很多电脑中的一台呢?

警察怎么找到嫌疑犯的?

4.2 ip地址的作用

ip地址:用来在网络中标记一台电脑,比如192.168.1.1;在同一网络中是唯一的。

同一网络:好比班级编号,球队编号。

同一网络:例如同一个局域网, 一个教室里。

4.3 IP地址的分类

目前ip主要分成两种

  • ipv4,32位二进制构成.分成4段,每段范围0-255(2的八次方,4个字节)
  • ipv6,128位二进制构成

每一个IP包含两部分:

  • 网络号
  • 主机号

类似电话号码由区号+电话主机号组成。

连接特定的 DNS 后缀 . . . . . . . :
   IPv6 地址 . . . . . . . . . . . . : 2001:250:6405:6005:41a8:5093:e5b5:96a7
   临时 IPv6 地址. . . . . . . . . . : 2001:250:6405:6005:534:6308:ecab:bcf4
   本地链接 IPv6 地址. . . . . . . . : fe80::41a8:5093:e5b5:96a7%4
   IPv4 地址 . . . . . . . . . . . . : 192.168.1.108
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::22a:6aff:fefa:ff3c%4
                                       192.168.1.1

(1) IPv4可提供4,294,967,296个地址,IPv6将原来的32位地址空间增大到128位,数目是2的128次方。能够对地球上每平方米提供6×1023个网络地址,在可预见的将来是不会耗尽的。   
(2) IPv4 使用地址解析通讯协议 (ARP) ,IPv6使用用多点传播 Neighbor Solicitation 消息取代地址解析通讯协议 (ARP) 。   
(3) IPv4 中路由器不能识别用于服务质量的QoS 处理的 payload。IPv6中路由器使用 Flow Label 字段可以识别用于服务质量的 QoS 处理的 payload。      
(4) IPv4的回路地址为: 127.0.0.1,IPv6的回路地址为 : 000:0000:0000:0000:0000:0000:0000:0001 可以简写为 ::1。   
(5) 在IPv4中,动态主机配置协议( Dynamic Host ConfigurationProtocol,DHCP)实现了主机IP地址及其相关配置的自动设置。一个DHCP服务器拥有一个IP地址池,主机从DHCP服务器租借IP地址并获得有关的配置信息(如缺省网关、DNS服务器等),由此达到自动设置主机IP地址的目的。IP v6继承了IPv4的这种自动配置服务,并将其称为全状态自动配置(stateful autoconfiguration)。 m.pcwenku.com 供稿   
(6) IPv4使用 Internet 群组管理通讯协议 (IGMP) 管理本机子网络群组成员身份,IPv6使用 Multicast Listener Discovery (MLD) 消息取代 IGMP。   
(7) 内置的安全性。IPSec由IETF开发是确保秘密、完整、真实的信息穿越公共IP网的一种工业标准。IPsec不再是IP协议的补充部分,在IPv6中IPsec是IPv6自身所具有的功能。IPv4选择性支持IPSec,IPv6自动支持IPSec。   
(8) 更好的QoS支持。QoS是网络的一种安全机制,通常情况下不需要QoS,但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。在IPv6 的包头中定义了如何处理与识别传输, IPv6 包头中使用 Flow Label 来识别传输,可使路由器标识和特殊处理属于一个流量的封包。流量是指来源和目的之间的一系列封包,因为是在 IPv6 包头中识别传输,所以即使透过 IPSec 加密的封包 payload,仍可实现对 QoS 的支持。

4.3.1 A类IP地址

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

地址范围1.0.0.1-126.255.255.254

二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

8位二进制全1就是255

可用的A类网络有126个,每个网络能容纳1677214个主机

4.3.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主机

4.3.3 C类IP地址

一个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.3.4 D类地址用于多点广播

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

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

多点广播地址用来一次寻址一组计算机

地址范围224.0.0.1-239.255.255.254

网上视频会议、网上视频点播就是采用多点广播

广播地址 (Broadcast Address) 是专门用于同时向同一网络中所有主机发送数据的一个地址。在使用TCP/IP 协议的网络中, 主机标识段 HOST ID 为全1 的IP 地址为广播地址,广播分组传送给 HOST ID 段所涉及的所有计算机. 例如, 对于 192.168.50.26(255.255.255.0) 网段,其广播地址为192.168.50.255, 当发出一个目的地址为 192.168.50.255 的数据时, 它将被分发给该网段上的所有计算机. 飞秋,内网通就是通过广播地址来广播数据的

4.3.5 E类IP地址

以“1111”开始,为将来使用保留

E类地址保留,仅作实验和开发用

4.3.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
4.3.7 回路地址

IP地址127.0.0.1~127.255.255.255用于回路测试,

如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。

进制转换

二进制八进制十进制十六进制
0000 00000000 000000000 0000
0000 00010000 000110000 0001
0000 00100000 000220000 0002
0000 00110000 000330000 0003
0000 01000000 000440000 0004
0000 01010000 000550000 0005
0000 01100000 000660000 0006
0000 01110000 000770000 0007
0000 10000000 001080000 0008
0000 10010000 001190000 0009
0000 10100000 0012100000 000a
0000 10110000 0013110000 000b
0000 11000000 0014120000 000c
0000 11010000 0015130000 000d
0000 11100000 0016140000 000e
0000 11110000 0017150000 000f

5. 网络通信过程

5.1 2台电脑的网络

说明
  1. 如果两台电脑之间通过网线连接是可以直接通信的,但是需要提前设置好ip地址以及网络掩码
  2. 并且ip地址需要控制在同一网段内,例如 一台为192.168.1.1另一台为192.168.1.2则可以进行通信

5.2 使用集线器组成一个网络

说明
  1. 当有多台电脑需要组成一个网时,那么可以通过集线器(Hub)将其链接在一起
  2. 一般情况下集线器的接口较少
  3. 集线器有个缺点,它以广播的方式进行发送任何数据,即如果集线器接收到来自A电脑的数据本来是想转发给B电脑,如果此时它还连接着另外两台电脑C、D,那么它会把这个数据给每个电脑都发送一份,因此会导致网络拥堵

5.3 使用交换机组成一个网络

说明
  1. 克服了集线器以广播发送数据的缺点,当需要广播的时候发送广播,当需要单播的时候又能够以单播的方式进行发送
  2. 它已经替代了之前的集线器
  3. 企业中就是用交换机来完成多态电脑设备的链接成网络的

5.4 使用路由器连接多个网络

说明
  1. 在浏览器中输入一个网址时,需要将它先解析出ip地址来
  2. 当得到ip地址之后,浏览器以tcp的方式3次握手链接服务器
  3. 以tcp的方式发送http协议的请求数据 给 服务器
  4. 服务器tcp的方式回应http协议的应答数据 给浏览器

总结

  • MAC地址:在设备与设备之间数据通信时用来标记收发双方(网卡的序列号)
  • IP地址:在逻辑上标记一台电脑,用来指引数据包的收发方向(相当于电脑的序列号)
  • 网络掩码:用来区分ip地址的网络号和主机号
  • 默认网关:当需要发送的数据包的目的ip不在本网段内时,就会发送给默认的一台电脑,成为网关
  • 集线器:已过时,用来连接多态电脑,缺点:每次收发数据都进行广播,网络会变的拥堵
  • 交换机:集线器的升级版,有学习功能知道需要发送给哪台设备,根据需要进行单播、广播
  • 路由器:连接多个不同的网段,让他们之间可以进行收发数据,每次收到数据后,ip不变,但是MAC地址会变化
  • DNS:用来解析出IP(类似电话簿)
  • http服务器:提供浏览器能够访问到的数据

6. 开放式系统互联参考模型(Open System Interconnection Reference Model)---->简称OSI

这个标准定义了网络的七层框架,试图使得计算机在整个世界范围内实现互联。
在OSI中,网络体系结构被分成下面的七层。

  • 物理层
    • 定义了通信设备的传输规范,规定了激活、维持和关闭通信节点之间的机械特性、电气特性和功能特性等。此层为上层协议提供了一个传输数据的物理媒介。
  • 数据链路层
    • 定义了数据封装以及传送的方式。这个层次的数据单位称为“帧”。数据链路层包括两个重要的子层:逻辑链路控制层(Logic Link Control,LLC)和介质访问控制层(Media Access Control,MAC)。LLC用来对节点间的通信链路进行初始化,并防止链路中断,确保系统的可靠通信。而MAC则用来检测包含在数据帧中的地址信息。这里的地址是链路地址或物理地址,是在设备制造的时候设置的。网络上的两种设备不能有相同的物理地址,否则会造成网络信息传送失败。
  • 网络层
    • 定义了数据的寻址和路由方式。这一层负责对子网间的数据选择路由,并实现网络互连等功能。
  • 传输层
    • 为数据提供端到端传输。这是比网络层更高的层次,是主机到主机的层次。传输层将对上层的数据进行分段并进行端到端传输。另外,还提供差错控制和流量控制机制。
  • 会话层
    • 用来为通信的双方制定通信方式,包括建立和拆除会话。另外,此层将会在数据中插入校验点来实现数据同步。
  • 表示层
    • 为不同的用户提供数据和信息的转换。同时还提供解压缩和加解密服务。这一层保证了两个主机的信息可以互相理解。
  • 应用层
    • 控制着用户绝大多数对于网络应用程序的访问,提供了访问网络服务的接口。

按照分工不同把互联网协议从逻辑上划分了层级:

[外链图片转存失败(img-doQXZXLB-1565005195568)(C:\Users\Administrator\Desktop\QQ图片20190805102516.jpg)]

7. 端口

整个网络通信通过IP地址+端口来标识不同的网络服务。

端口号是用来表示区别网络中不同的应用,操作系统会对端口进行编号,即端口号

  • 端口号使用16位,也就是2个字节的数字来表示,范围是0到2^(16)-1
  • 端口的分配是基于一定规则的,而不是随意分配的。

知名端口

80,分配给http服务的
21,分配给ftp服务的

动态端口(Dynamic Ports)

一般不固定分配某种服务,动态分配。范围1024-65535

所谓的动态分配,是指一个程序需要网络通信时,他向主机申请一个端口,主机从可用端口号中分配一个供其使用。关闭程序时,同时释放占用端口。

端口查看:

netstat -ano
同的应用,操作系统会对端口进行编号,即端口号

- 端口号使用16位,也就是2个字节的数字来表示,范围是0到2^(16)-1
- 端口的分配是基于一定规则的,而不是随意分配的。

知名端口

80,分配给http服务的
21,分配给ftp服务的


动态端口(Dynamic Ports)

一般不固定分配某种服务,动态分配。范围1024-65535

所谓的动态分配,是指一个程序需要网络通信时,他向主机申请一个端口,主机从可用端口号中分配一个供其使用。关闭程序时,同时释放占用端口。

端口查看:

netstat -ano

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值