网络功能
数据传输
网络体系结构标准
OSI模型
- 1、网络信息传输比较复杂需要很多功能协同。
- 2、将功能分开,降低耦合度,让每个模块完成一定的功能。
- 3、将这些模块按照一定的顺序进行组合,完成功能,条理清晰。
按照规定功能、顺序排列的体系结构,即为OSI模型。
编程思想
- 高内聚 :模块功能尽可能单一,不要掺杂
- 低耦合 :模块之间尽可能减少关联和影响
OSI七层模型
网络通信工作流程的标准化
- 应用层
提供用户服务,具体功能由特定的程序而定,例如处理应用程序、文件传输、数据管理等。 - 表示层
数据的转换和压缩、解压的加密等。 - 会话层
建立应用级的连接,选择传输服务。 - 传输层
建立网络连接,提供合适的连接传输服务,提供流量控制。 - 网络层
控制分组传输,进行路由选择,网络互联。 - 链路层
进行数据转换,具体消息的发送,链路连接。 - 物理层
物理硬件,具体的传输条件和传输接口。
OSI七层模型优点
- 将工作流程标准化
- 降低了模块间的耦合度,使每一部分可以单独开发,单独工作
四层模型
- 应用层(应用层、表示层、会话层)
- 传输层
- 网路层
- 物理链路层(链路层、物理层)
五层模型(TCP/IP模型)
- 应用层(应用层、表示层、会话层)
- 传输层
- 网路层
- 链路层
- 物理层
数据传输流程
- 发送端由应用层到物理层逐层添加信息头(首部),最终在物理层发送。
- 中间经过节点(交换机,路由器等)转发,发送到接收端。
- 在接收端根据发送端的每个信息头进行解析,最终消息到应用层展示给用户。
网络协议
在网络通信中双方都遵循的规定。包括建立什么样的网络结构,消息结构,标识代表什么等。
- 应用层协议:TFTP、DNS、FTP、SMTP、HTTP
- 传输层协议:TCP、UDP
- 网络层协议:IP、ARP、ICMP
- 物理链路层协议:IEEE
网络相关概念
网络主机
在网络中标识一台计算机,HOST
- 本地使用:
localhost
或127.0.0.1
表示本机通信地址,只有本机的其他程序可以访问,网络访问不了,也可叫本机回环地址,可用于本地模拟测试。 - 网络使用:
0.0.0.0
或本机IP
表示本机在网络上的标识,可用于网络。0.0.0.0
:表示在局域网内的可用主机IP,如果不知道本机的IP,可用0.0.0.0表示给本主机分配一个局域网内随机可用IP。
相关函数
// 导入相关模块
import scoket
// 获取主机名称
socket.gethostname()
// 通过主机名称解析本机或主机服务器IP
socket.gethostbyname('hostname')
// 解析本机localhost回环IP
socket.gethostbyname('localhost')
/*
* 通过地址获取主机网络信息,返回一个元组
* 第一个参数表示主机名
* 第二个参数表示主机别名
* 第三个参数表示网络地址
* args可以是IP或域名
*/
socket.gethostbyaddr('args')
IP地址
网络上确定一台主机网络位置的地址
IPv4
- 点分十进制
三个点将IP分为四个部分,每部分取值0~255
例如:192.168.1.5
,192.121.10.23
,172.23.5.6
... - 二进制
32位二进制表示
IPv6
- 随着网络的发展,IPv4地址不够用了,为了扩展地址空间,研究出了IPv6。
- IPv6为128位,用十六进制表示,两个十六进制占一组,大大扩展了地址空间。
- 在我国,大部分的民用地址还是IPv4,有些商用地址是IPv6。
192.168.1.0
表示该网段
192.168.1.1
该网段的网关地址
192.16.1.255
广播地址
ping命令
测试和某台网络主机是否联通
特殊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
广播地址
IP地址的转换
/*
socket.pton()与socket.ntop()有第一个参数
AF_INET表示转化IPv4类地址
AF_INET6表示转化IPv6类地址
其余和socket.inet_aton()与socket.inet_ntoa()功能相同
*/
// 将点分十进制转换为二进制
socket.inet_aton('192.168.12.23') // b'\xc0\xa8\x0c\x17'
socket.inet_pton(socket.AF_INET,'192.168.12.23') // b'\xc0\xa8\x0c\x17'
// 将二进制转换为点分十进制
socket.inet_ntoa(b'\xc0\xa8\x0c\x17') // 192.168.12.23
socket.inet_ntop(socket.AF_INET,b'\xc0\xa8\x0c\x17') // 192.168.12.23
域名
网络服务器地址的名称
- 方便记忆
- 名称表达一定的含义
端口号
- 端口是网络地址的一部分,用于区分一个网络主机上的网络应用(应用层程序)
- 在一个操作系统中不同的网络应用监听不同的端口号
- 取值范围:
1~65536
-
1 ~ 255
众所周知的端口,一些特有的程序会占用这些端口 -
256 ~ 1023
系统程序占用的端口 -
1024 ~ 49151
登记端口(可以使用) -
49152 ~ 65535
私有端口或者动态端口 - 推荐使用
10000
以上的端口号
获取系统中某个网络服务程序的端口号
// 获取系统中某个网络服务程序的端口号
socket.getservbyname('ssh') // 22
socket.getservbyname('mysql') // 3306
socket.getservbyname('http') // 80
子网掩码
与IP配合使用,来确定当前的网段。
按位相与即可得到当前网段。
网络字节序
- 数据在网络中的传输格式
- 小端序:低序字节存在低地址位
- 大端序:高序字节存在低地址位
- 网络统一:网络字节序,保证不同的主机按照相同方式发送接收解析数据
TCP/UDP协议
传输层提供的通信协议
面向连接的可靠传输服务
基于tcp协议的数据传输
实现手段
数据传输断开前都需要进行传输和断开的确认
TCP协议规定
- 传输服务必须建立连接
- 传输结束必须断开连接
- 传输数据必须保证可靠
数据的可靠性
- 无重复
- 无丢失
- 无失序
- 无错误
建立连接(三次握手)
tcp传输在数据传输前建立连接的过程
- 客户端向服务端发送连接请求(发送一个试探性的标志字符给服务器)
- 服务器收到请求后,回复确认消息,表示允许连接
- 客户端收到服务器,进行最终标志发送确认连接
断开连接(四次挥手)
tcp传输在连接断开前进行断开确认的过程
- 主动方送标志告知被动方要断开来连接
- 被动方返回相应的标志信息告知主动方已经收到断开请求
- 被动方会再次发送标志位信息表示已经准备就绪可以断开
- 主动方断开连接告知被动方
适用情况
- 对传输质量要求较高,需要可靠的传输。
- 传输的数据量较大,不需要频繁的连接断开
比如:QQ消息、邮件收发、文件上传、账户登陆等
面向无连接的不可靠服务
基于udp协议的传输
传输特点
- 不保证数据的可靠性
- 数据的发送都是由发起端决定的,不考虑接收端的情况
- 没有三次握手和四次挥手的过程
- 数据收发自由
适用情况
- 对实时性要求较高
- 网络情况不佳的时候
- 对数据的准确性没有严格要求
- 建立必要的非连接的情况(比如:广播组播)
- 网络情况较差,对传输可靠性要求不高,需要提升传输效率。
- 不便连接,需要灵活收发消息
比如:网络视频,群聊,广播发送
要求 :
1. osi七层模型介绍一下,tcp/ip模型呢
2. tcp服务和udp服务有什么区别
3. 三次握手和四次挥手是什么意思,过程是怎样的
网友评论