Python和网络编程
引子
假如有两个脚本,foo.py,bar.py,分别运行,都可以正常运行。但是现在想从两个程序间传递数据。
- 同一台电脑
- 创建一个文件,将foo.py的数据读入文件中,bar.py从文件中读取数据。
- 不同电脑间
- 该怎么做?
软件开发架构
C/S架构
C/S 即 Client 和Server —>客户端和服务器端架构
B/S架构
B/S 即 Browser 和 Server —> 浏览器端和服务器端架构
什么是网络
网络就是一种辅助双方或者多方能够连接在一起的工具
伴随着网络发展,人们使用了很多通信方法,有些已不再使用,现在使用最广泛的是TCP/IP(Transmission Control Protocol/Internet Protocol)
TCP、IP 是标准的协议,其可以使世界范围内的计算机通过Internet 或本地网络通信。
TCP/IP事实上是一些协议(protocols)的合集。当前大多数使用中的通信都使用TCP协议。
Internet是在一些共享的线路上发送数据’的。例如:在您的计算机上也许同时运行着几个应用程序,如Web浏览器、通讯软件等程序,而您只须通过一条单一的线路来连接互联网。上面所有的程序都共享这个连接,简单地说,用户往往不会觉察到这个共享的发生。
目的
- 使用网络把多方连接再一起,然后进行数据传输
- 为了让不同电脑上的软件可以互相传递数据,借助网络功能
网络编程的定义
让不同电脑中的软件能够进行数据传递,即网络中不同主机进程间的通信
地址
1. 生活中的地址与标识
不同的网络中,采用唯一的标识来区分不同的主体,比如车牌号、建筑物地址、电话号码、员工编号等等
一台电脑怎么找到很多电脑中的一台呢?
警察怎么找到嫌疑犯的?
2. ip地址的作用
ip地址:用来在网络中标记一台电脑,比如192.168.1.1;在同一网络中是唯一的。
同一网络:好比班级编号,球队编号。
同一网络:例如同一个局域网, 一个教室里。
3.IP地址分类
目前IP主要分为两种
- IPv4,32位二进制构成 分成四段,每段范围0-255(2的八次方,四个字节)
- IPv6,128位二进制构成
每一个IP包含两部分:
- 网络号
- 主机号
类似电话号码由区号+电话主机号组成
[外链图片转存失败(img-FCp0Yb5N-1565138244109)(/Users/xujiaqi/Library/Application Support/typora-user-images/image-20190805094830739.png)]
(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 的支持。
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个主机
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主机
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个主机
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 的数据时, 它将被分发给该网段上的所有计算机. 飞秋,内网通就是通过广播地址来广播数据的
3.5 E类IP地址
以“1111”开始,为将来使用保留
E类地址保留,仅作实验和开发用
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
3.7 回路地址
IP地址127.0.0.1~127.255.255.255用于回路测试,
如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1
就可以测试本机中配置的Web服务器。
###进制转换
二进制基数:0,1 以ob开头
八进制:0-7 以O开头
十进制:0-9 默认
十六进制:0-9,ABCDEF(0-15) 以OX开头
二进制 | 八进制 | 十进制 | 十六进制 |
---|---|---|---|
0000 0001 | 0000 0001 | 1 | 0000 0001 |
0000 0010 | 0000 0002 | 2 | 0000 0002 |
0000 0011 | 0000 0003 | 3 | 0000 0003 |
0000 0100 | 0000 0004 | 4 | 0000 0004 |
0000 0101 | 0000 0005 | 5 | 0000 0005 |
0000 0110 | 0000 0006 | 6 | 0000 0006 |
0000 0111 | 0000 0007 | 7 | 0000 0007 |
0000 1000 | 0000 0010 | 8 | 0000 0008 |
0000 1001 | 0000 0011 | 9 | 0000 0009 |
0000 1010 | 0000 0012 | 10 | 0000 000A |
0000 1011 | 0000 0013 | 11 | 0000 000B |
0000 1100 | 0000 0014 | 12 | 0000 000C |
0000 1101 | 0000 0015 | 13 | 0000 000D |
0000 1110 | 0000 0016 | 14 | 0000 000E |
0000 1111 | 0000 0017 | 15 | 0000 000F |
####8421码
#####十进制二进制转换
-
Ob10011101 转十进制
128 64 32 16 8 4 2 1
1 0 0 1 1 1 0 1
1+4+8+16+128=157
-
136转二进制
128 64 32 16 8 4 2 1
1 0 0 0 1 0 0 0
136 = 128+8
二进制和八进制转换
把三位的二进制看出一位的八进制
Ob100 110
4 6
Ob010 010 011 001 100
2 2 3 1 4
7 6 5 4
Ob111 110 101 100
二进制和十六进制转换
把四位二进制看成一位十六进制
Ob10 0110
2 6
Ob100 1111 0101
4 f 5
Ox f a 3 6 5
1111 1010 0011 0110 0101
网络通信过程
1. 2台电脑的网络
说明
- 如果两台电脑之间通过网线连接是可以直接通信的,但是需要提前设置好ip地址以及网络掩码
- 并且ip地址需要控制在同一网段内,例如 一台为
192.168.1.1
另一台为192.168.1.2
则可以进行通信