python网络编程、套接字、HTTP协议

网络目的 : 数据的传输

网络数据传输是一个复杂的过程

OSI 七层模型 --》 网络通信标准化流程

应用层 : 提供用户服务,具体内容由特定程序规定

表示层 : 数据的压缩优化 

会话层 : 建立应用连接,选择传输层服务

传输层 : 提供不同的传输服务,流量控制

网络层 : 路由选择,网络互连

链路层 : 提供链路交换,具体消息以帧发送

物理层 : 物理硬件,接口,网卡,线路

osi七层模型优点 : 将功能分开,降低了网络传输中的耦合性,每一部分完成自己的功能。可以在开发和实施的过程中各司其职。实现高内聚和低耦合的功能。

高内聚 : 单个模块功能尽量单一
低耦合 : 模块之间尽量减少关联和影响

四层 

应用层 : 应用层 表示层 会话层

传输层 : 传输层

网络层 : 网络层

物理链路层: 链路层和物理层

五层(tcp/ip模型)

应用层 : 应用层 表示层 会话层

传输层 : 传输层

网络层 : 网络层

链路层 : 链路层

物理层 : 物理层

 

协议(网络协议):在网络通信中,各方必须遵守的规定。包括建立什么样的连接,消息结构等

应用层 : TFTP HTTP DNS SMTP
传输层 : TCP UDP
网络层 : IP 
物理层 : IEEE

 

网络基本概念

1、主机: "localhost" 表示本台计算机

  网络上 : 只在本地测试使用
    'localhost' '127.0.0.1'

  如果想在网络上进行测试(自动使用本地可用网卡IP)
    '0.0.0.0' '' '172.60.50.93'

  查看本地 IP 网络信息
    linux上:    ifconfig 
    win上查看本地IP: ipconfig

    ping   --->14.215.177.38(百度的IP地址)

  获取计算机名称
    socket.gethostname()
    'tedu'

  获取主机IP
    socket.gethostbyname('localhost')
    '127.0.0.1'

2、IP地址
  在网络上用于区分一台计算 

  IPv4 : 点分十进制 e.g. 192.168.1.72 0-255
    32位二进制表示

  IPv6 : 128

  网络连接测试命令: ping 172.60.50.92

  特殊IP
    127.0.0.1 本地测试IP
    0.0.0.0 本地网卡通用IP
    192.168.1.0 表示当前网段
    192.168.1.1 表示网关
    192.168.1.255 广播地址

  获取服务器主机信息
    socket.gethostbyaddr("www.baidu.com")
    ('127.0.0.1', [], ['119.75.213.61'])
      主机    别名    IP地址

  将ip十进制转化为二进制
    socket.inet_aton("192.168.1.2")
    b'\xc0\xa8\x01\x02'

  将ip二进制转化为十进制
    socket.inet_ntoa(b"\xc0\xa8\x01\x02")
    '192.168.1.2'

  域名 : 网络服务器IP地址的名称
  url : 在网络上定位某个资源位置

3、端口号 :端口号是网络地址的一部分,在一个系统中每个网络应用监听不同的端口,以获取对应端口传输的信息

  数字范围 : 1--65535

    1--255 : 一些众所周知的端口
    256--1023 : 系统应用
    1024---65535 : 自用 
    推荐用  >10000 8888 9999 7777 6666

  测试一个软件端口号
    socket.getservbyname('mysql')
    3306
    socket.getservbyname('http')
    80
    socket.getservbyname('ssh')
    22

传输层服务 

面向连接的传输服务 ---》 tcp协议 

传输特征:提供可靠的传输服务
可靠性表现: 数据在传输过程中,无失序,无差错,无重复,无丢失

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzdxp.html