python网络编程 IP地址与端口的作用

学习python网络编程首先需要知道以下基本知识:

1.IP地址

IP地址是指互联网协议地址(Internet Protocol Address),用来给Internet上的电脑一个编号。

IP地址的作用:用来在网络中标记一台电脑。

私有IP:有一部分地址用于局域网使用,属于私网IP,范围:

10.0.0.0~10.255.255.255 (内网,虚拟机中常出现,A类)

172.16.0.0~172.31.255.255(内网、子网,B类)

192.168.0.0~192.168.255.255(内网、子网,C类)

特殊的IP地址:127.0.0.1

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

特殊的域名:localhost

localhost是本机域名,用来解析到本机127.0.0.1 ip地址上。

IPv4与IPv6:

IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。采用“点分十进制”表示(如:192.168.1.100),一共有2^32-1个,估算约为42.9亿个,除去一些特用的IP和一些不能用的IP,剩下可用的不到40亿。IPv4发展到现在,最大的问题是网络地址严重不足。

IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。采用“点分十六进制”表示(如:2031:0000:1F1F:0000:0000:0100:11A0:ADDF),而IPv6中IP地址的长度为128,即有2^128-1个地址,号称能够为“地球上每一粒沙子分配一个IP地址”

查看或配置网卡信息:

    Linux下在终端里输入:ifconfig ,会显示所有网卡信息

    修改局域网内某一网卡的ip:sudo ifconfig 网卡名 修改后的ip

测试远程主机的连通性:ping IP/域名

ping 127.0.0.1 检查本地网卡是否正常

ping www.baidu.com 检查网卡是否能上公网

ping 当前局域网内的ip地址 检查是否在同一个局域网内

2.端口

一个电脑上运行着多个应用程序,都需要收发数据,通过给每个程序分配一个端口,使程序数据收发正常。由于有很多端口,OS为了统一管理,所以进行了编号。

端口号:使用唯一一个编号来标识端口,就是标识端口的一个编号,在Linux中共有65536个。

    端口号是OS按照一定的规定进行分配,分为知名端口号和动态端口号:

    知名端口号:系统程序使用的端口号,0~1023

    如:80端口分配给HTTP服务,21端口分给FTP服务

   动态端口号:开发应用程序使用的端口号,因为它不固定分配某一种服务,而是动态分配,所以称为动态端口,1024~65535。      

查看端口号:

netstat -an

查询80端口的使用情况:

netstat -an | grtp 80  

查看端口号被哪个程序占用:

sudo lsof -i :80

查看服务器socket:

netstat -ntl

需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电

脑通信,但你的电脑则可能使用“9054”这样的端口。

ip地址相当于一栋房子的地址,应用程序相当于房子里的房间,而端口就相当于进入该房子的门,端口号就是门牌号。

网络通信的流程是先通过ip地址找到网络中的设备,再通过端口号来找到对应的端口,然后把数据传输给对应的应用程序。

IP地址与网络服务的关系是一对多的关系,网络服务实际上是通过IP地址+端口号来区分不同的服务。

3.数据的编码和解码

python3编码转换:文本总是Unicode,由str类型进行表示,二进制数据使用bytes进行表示,

网络中数据的传输是以二进制(字节码)的方式来进行的,所以,我们需要通过对Unicode字符串内容ji进行编码和解码

才能达到数据传输的目的。在python中:可以通过encode()和decode()来对数据进行编码和解码。

声明格式为:

str.encode(encoding="utf-8",errors="struct")

bytes.decode(encoding="utf-8",errors="strict")

encoding是指在编码解码过程中使用的编码,errors是指错误的处理方案。

  • encoding -- 可选参数,要使用的编码,默认编码为 'utf-8'。
  • errors -- 可选参数,设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore',表示忽略不合适的编码数据。 

猜你喜欢

转载自blog.csdn.net/w18306890492/article/details/82860352