python之网络编程详解(一)

      python中进行网络编程主要用到了socket模块,在socket模块中提供了许多类方法和实例方法,供我们调用。在应用socket模块编写程序之前,我们需要了解一些有关网络的基础内容。

       在计算机网络中,OSI(Open System Interconnection)七层模型定义了计算机通信的基本框架。它是一种理想的模型,包含应用层、会话层、表示层、传输层、网络层、链路层和物理层。在实际使用过程中不会像OSI一样,对传输过程划分的十分细致,由此衍生出四层模型(应用层、传输层、网络层、物理链路层)和五层模型(应用层、传输层、网络层、链路层、物理层)。

        网络协议,是在网络通信中所有参与者都必须遵守的约定。比如在应用层包括TFTP协议、HTTP协议、SMTP协议(用于邮件传输)等,传输层包括TCP协议、UDP协议(在后续的编程过程中,主要是编写基于这两种协议的程序),网络层由IP协议。

        下面将介绍一些基本的网络指令,这些指令都是在ubuntu中python3的交互模式中进行的。打开终端,输入ipython3或者python3进入python的交互模式,可以输入一下代码观看输出的结果。    

import socket
socket.gethostname()  #获取主机名
socket.gethostbyname('localhost') #获取本机IP,一般输出的是本机测试IP,127.0.0.1
socket.inet_aton('192.168.1.2')  #将IP地址转换成二进制形式,输出结果是:b'\xc0\xa8\x01\x02'
socket.inet_ntoa(b'\xc0\xa8\x01\x02')  #将二进制转换为点分十进制
socket.inet_pton(socket.AF_INET,'192.168.1.1') #同socket.inet_aton只是参数代表转换的地址是IPv4还是IPv6,socket.AF_INET表示IPv4
socket.inet_ntop(socket.AF_INET,b'\xc0\xa8\x01\x02') #同socket.inet_ntoa,也需要参数设置IPv4,IPv6

        在网络中,IP地址用来区分不同的主机,在一台主机内,用不同的端口号(port)来区分不同的应用程序。端口号的范围是1-65535,其中1-1024是 一些知名端口,通常被系统使用或者被一些应用程序使用,比如FTP服务器使用21端口,telnet服务使用23端口。在python中查询一个应用使用哪个端口可以使用下面的指令:

socket.getservbyname('mysql')  #获取mysql数据库使用的端口号,输出为:3306
socket.getservbyname('telnet') #输出:23

        子网掩码通常配合IP一起使用,用来过滤网段,将IP地址划分为网络地址和主机地址。还有DNS,主要是用来进行域名解析,在此不做过多介绍。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值