网络编程
网络功能: 数据传输
OSI七层模型--->网络通信工作流程的标准化
应用层:提供用户服务,集体功能由特定的功能而定
表示层:提供数据的压缩优化,加密
会话层:建立应用级的连接,选择传输服务
传输层:提供不同的传输服务,流量控制
网络层:路由选择,网络互联
链路层:进行数据转换,具体消息的发送,链路的连接
物理层:物理硬件,接口设定,网卡路由交换机等
cookie
高内聚:模块功能尽可能单一,不要掺杂
低耦合:模块之间尽可能减少关联和影响
OSI七层模型的优点:
1.将工作流程标准化
2.降低了模块间的耦合度,使每一部分可以单独开发,单独工作
四层模型
应用层
传输层
网络层
物理链路层
五层模型(TCP/IP)
应用层:应用层,表示层,会话层 三合一形成应用层
传输层
网络层
链路层
物理层
数据传输流程
1.发送端由应用层到物理层逐层添加信息头(首部)最终在物理层发送
2.中间经过节点(交换机,路由器等)转发,发送到接受端
3.在接受端根据发送端的每一个信息头进行解析,最终消息到应用层展示给客户
网络协议:在网络通信中双方都遵循的规定,包括建立什么样的网络结构,消息判断,标识代表什么等
应用层:TFTP HTTP DNS SMTP
传输层:TCP UDP
网络层:IP
物理层:IEEE
网络相关概念
网络主机:在网络中标识一台计算机 HOST
本地使用:'localhost'
'127.0.0.1'
网络使用: 0.0.0.0 可用网卡地址
'172.60.50.42'
获取计算机名:
import socket
In [4]: socket.gethostname()
Out[4]: 'tedu'
In [7]: socket.gethostbyname('localhost')
Out[7]: '127.0.0.1'
IP地址
网络上确定一台主机网络位置的地址
IPv4:点分十进制 192.168.1.2 0--255 32位
IPv6:128位2进制
ping ip:测试和某一个主机的IP地址是否联通
特殊IP地址
127.0.0.1 本机测试IP
0.0.0.0 使用本机可用IP
192.168.1.0 表示网段IP
192.168.1.1 网关IP
192.168.1.255 广播地址
通过地址获取主机网络信息
In [3]: socket.gethostbyaddr('localhost')
Out[3]: ('localhost', [], ['127.0.0.1'])
主机名 别名 网络地址
点分十进制转换为二进制
In [2]: socket.inet_aton('192.168.1.2')
Out[2]: b'\xc0\xa8\x01\x02'
点分二进制转换为十进制
In [5]: socket.inet_ntoa(b'\xc0\xa8\x01\x02')
Out[5]: '192.168.1.2'
域名: 网络服务器地址的名称
1.方便记忆
2.名称表达一定的含义
网络端口号:
端口是网络地址的一部分,用于区分一个网络主机上的网络应用
在一个操作系统中不同的网络应用监听不同的端口号
取值范围:1--65535
1--255 一些众所周知的通用端口
256--1023 系统应用端口
1024--65535 自用端口
建议使用 >10000的端口
获取一个应用的端口信息
In [7]: socket.getservbyname('mysql')
Out[7]: 3306
网络字节序:数据在网络中的传输格式