Python网络编程

发布 : 2017-07-21 分类 : Python 浏览 :
1
2
网络能够把多方链接在一起,然后进行数据传递
网络编程就是,让不同的电脑上的软件能够有进行数据传递,即进程之间的通信

Tcp/IP简介

1
为了解决不同语言之间的沟通障碍,规定通用语言,这个规定就是协议

1
为了把全世界的所有不同类型的计算机都连接起来,就必须规定⼀套全球通 ⽤的协议,为了实现互联⽹这个⽬标,互联⽹协议簇(Internet	Protocol Suite)就是通⽤协议标准

1
2
国际层:网络层
网络接口层:链路层

端口

1
2
端口=房子的门,出入房子的必经之路
Linux系统中,端口可以有65536(2的16次方)

端口号

1
端口号只有整数,范围是从0到65535

动态端口

1
2
3
动态端口是从1024到65535

动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用,当这个进程关闭时,同时也就是释放了所占用的端口号

IP地址

1
用来在网络中标记一台电脑的数字
1
网络地址和主机地址

A类IP地址

1
2
3
4
一个A类IP地址由1字节的网络地址和3字节的主机地址组成,网络地址的最高位必须是"0"
地址范围1.0.0.1-126.255.255.254
⼆进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110
可⽤的A类⽹络有126个,每个⽹络能容纳1677214个主机

B类IP地址

1
2
3
4
⼀个B类IP地址由2个字节的⽹络地址和2个字节的主机地址组成,⽹络地址 的最⾼位必须是“10”,
地址范围128.1.0.1-191.255.255.254
⼆进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
可⽤的B类⽹络有16384个,每个⽹络能容纳65534主机

C类IP地址

1
2
3
4
⼀个C类IP地址由3字节的⽹络地址和1字节的主机地址组成,⽹络地址的最 ⾼位必须是“110”
范围192.0.1.1-223.255.255.254
⼆进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
C类⽹络可达2097152个,每个⽹络能容纳254个主机

D类地址⽤于多点⼴播

1
2
3
4
D类IP地址第⼀个字节以“1110”开始,它是⼀个专⻔保留的地址。
它并不指向特定的⽹络,⽬前这⼀类地址被⽤在多点⼴播(Multicast)中
多点⼴播地址⽤来⼀次寻址⼀组计算机
地址范围224.0.0.1-239.255.255.254

E类IP地址

1
2
"1111"开始,为将来使⽤保留
E类地址保留,仅作实验和开发⽤

私有ip

1
2
3
4
5
在这么多⽹络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
1
2
3
IP地址127.0.0.1~127.255.255.255⽤于回路测试,
如:127.0.0.1可以代表本机IP地址
⽤http://127.0.0.1就可以测试本机 中配置的Web服务器。

子网掩码

1
2
3
4
5
6
7
8
将某个IP地址划分成⽹络地址和主机地址两部分
与IP地址相同,⼦⽹掩码的⻓度也是32位
左边是⽹络位,⽤⼆进制数字"1"表示; 右边是主机位,⽤⼆进制数字"0"表示
假设IP地址为"192.168.1.1"⼦⽹掩码为"255.255.255.0"
"1"有24个,代表与此相对应的IP地址左边24位是⽹络号
"0"有8个,代表与此相对应的IP地址右边8位是主机号
这样,⼦⽹掩码就确定了⼀个IP地址的32位⼆进制数字中哪些是⽹络号、哪些是主机号
这对于采⽤TCP/IP协议的⽹络来说⾮常重要,只有通过⼦⽹掩码,才能表明⼀台主机

Socket

本地的进程间通信(IPC)

  • 队列
  • 同步(互斥锁、条件变量)

网络中进程如何通信

  • 在本地可以通过进程PID来唯⼀标识⼀个进程
  • ⽹络层的”ip地址”可以唯⼀ 标识⽹络中的主机,传输层的”协议+端⼝”可以唯⼀标识主机中的应⽤程序(进程) -> ip地址/协议/端⼝可以标识⽹络的进程

什么是socket

  • 实现不同主机间的进程间通信
  • 浏览⽹⻚、QQ聊天、收发email都是基于socket通信
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/07/21/Python网络编程/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹