网络编程
网络目的:数据传输
OSI七层模型:网络通信的标准化流程
应用层: 提供用户服务,具体的内容由特定的程序规定
表示层: 提供数据的加密和压缩优化
会话层: 确定建立应用连接,选择传输服务
传输层: 提供数据传输服务,进行流量的控制
网络层: 路由选择,网络互联
链路层: 提供链路交互,具体消息的发送
物理层: 物理硬件,接口,网卡规定
五层模型(tcp/ip协议)
应用层(包含了表示层,会话层)
传输层
网络层
链路层
物理层
osi模型优点:将功能分开,降低网络传输中的耦合度,使用开发流程
更加清晰,每部分各司其职
高内聚:每个模块功能尽量单一,不会多个功能掺杂
低耦合:尽量降低每个模块之间的关联性 (方便调用和使用)
要求:能够顺序说出七层模型 五层模型
知道每层干什么
理解消息传输流程
网络协议:在网络通信中协议各方必须遵守的规定。如建立什么连接
消息结构如何解析等
应用层: TFTP HTTP DNS SMTP
传输层: TCP UDP
网络层: IP
物理层: IEEE
网络相关概念
网络主机:在网络上确定一台主机
本地使用:'localhost' 127.0.0.1
网络地址:'0.0.0.0' '192.168.10.1'(本机ip)
查看ip地址 ifconfig(linux)
***********
socket模块*
***********
ipython3 进入交互模式
socket.gethostname()
'tedu'
socket.gethostbyname('localhist')
'127.0.0.1'
查询
socket.gethostbyaddr('www.baidu.com')
二进制转16进制
socket.inet_aton('192.168.1.2')
b'\xc0\xa8\x01\x02'
十六进制转2进制
socket.inet_ntoa('b'\xc0\xa8\x01\x02'')
'192.168.1.2'
IP地址
网络上确定一台主机的地址
IPv4: 点分十进制
IPv6: 128位
网络连接测试
ping 192.168.10.2
特殊ip
127.0.0.1 本机测试IP
0.0.0.0 自动使用本地可用网卡IP
192.168.1.0 表示当前网段
192.168.1.1 通常为网关地址
192.168.1.255广播地址
域名:网络服务器地址在网络上的名称
端口号: 端口号是地址的一部分,在一个系统中每个网络应用监听不同的端口,以获取对应端口传递的信息
取值范围(1-65535)
1-255通用端口(众所周知的程序占用)
256-1023 系统端口
1024-65535 自用端口
获取应用程序端口
In [3]: socket.getservbyname('mysql')
Out[3]: 3306