Python网络编程基本概念

网络目的:数据传输

ISO(国际标准化组织)

OSI七层模型 ———>> 网络通信的标准化流程

开放性系统互联参考模型

Python网络编程基本概念

应用层:提供用户服务,具体的内容由特定的程序规定
表示层:提供数据的加密和压缩优化
会话层:确定建立应用连接,选择传输服务
传输层:提供数据传输服务,进行流量控制
网络层:路由选择,网络互联
链路层:提供链路狡猾,具体消息的发送
物理层:物理硬件,接口,网卡的规定

OSI模型优点:将功能分开,降低网络传输中的耦合度。流程更加清晰,每部分各司其职。

cookie:
高内聚:每个模块功能尽量单一,不会多个功能掺杂。
低耦合:尽量降低每个模块的关联性


网络协议

定义:在网络中协议各方必须遵守的规定。比如建立什么连接,消息结构如何解析等。

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

网络相关的一些概念

网络主机:在网络上确定一台主机

本地使用:’localhost’ 127.0.0.1

网络地址:’0.0.0.0’ ‘172.60.50.54’(本机网络IP)

如何查看IP
Linux命令:ifconfig
windows命令:ipconfig

通过计算机名获取匹配的ip:

In [17]: socket.gethostbyname(‘wake’)
Out[17]: ‘127.0.1.1’

In [18]: socket.gethostbyname(“localhost”)
Out[18]: ‘127.0.0.1’

IP地址
网络上确定一台主机的地址

IPV4:点分十进制 such as:192.168.1.3 0~255

IPV6:128位

网络连接测试:
ping + inet地址(使用ifconfig查看)

一些特殊的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 自用端口 —–建议使用 > 10000

获取应用程序端口:
socket.getservbyname(‘程序名称’)

传输层服务

可靠的书记处传输
可靠性:数据在传输中,无失序,无差错,无丢失,无重复

在数据传输前和传输结束后需要建立连接和断开连接

三次握手,四次挥手
Python网络编程基本概念

三次握手:在面向连接的传输服务中建立连接的过程
1、客户端向服务端发送连接请求
2、服务器接受到请求进行确认,返回确认报文
3、客户端收到服务器回复最终确认连接

四次挥手:在面向连接的传输服务中断开连接的过程
1、主动发送报文,告知被动方要断开连接
2、被动方回复报文,表示已经接受到请求,准备断开
3、被动方再次发送报文,表示准备处理就绪,可以断开连接
4、主动方发送确认报文,断开连接

应用情况:适用于传输较大的内容或文件,网络良好,需保证传输可靠性的情况
e.g.聊天信息 - 文件的上传下载 - 邮件处理 - 网页处理

面向无连接的传输服务 ———–>> udp协议

传输特点:
1、不保证传输的可靠性
2、没有连接和断开的过程
3、数据的收发比较*

适用情况:网络传输可能产生丢包,对传输可靠性要求低
e.g.: 网络视频,群聊,广播等