Python和网络编程

本文介绍了Python中的网络编程,涵盖网络的基本概念、IP地址分类、网络通信过程、Socket编程及TCP/IP协议。讲解了TCP与UDP的区别,以及TCP的三次握手和四次挥手过程。还探讨了网络中MAC地址、ARP协议、路由器和局域网的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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台电脑的网络

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

2. 使用集线器组成一个网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值