一.OSI参考模型
OSI参考模型将数据的产生过程分为了七层,提出了分层的思想。而分层的目的在于,解释了不同层实现的不同的功能,集合起来定义了数据的产生过程。
分层具有如下几个优点:
OSI参考模型的具体内容如下:
层数 | 具体功能 |
---|---|
应用层 | 对应用程序提供接口,负责接收用户的数据,人机交互的接口,面向的应用程序。(可以理解为不同的软件产生定义,应用层定了这些服务例如HTTP,DHCP,DNS,SMTP等等) |
表示层 | 将逻辑语言(软件语言)转化为机器语言(二进制语言),翻译。(数据的编码解码,数据的加密解密,数据的压缩与解压缩等),即进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解。 |
会话层 | 在通信双方之间建立,管理和终止会话。 |
传输层 | 建立,维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据从源到目的地的转发。 |
网络层 | 定义逻辑地址,实现数据从源到目的地的转发。 |
数据链路层 | 将分组数据封装成帧,在数据链路上实现数据的点到点,或者点到多点方式的直接通信,差错检测。 |
物理层 | 在媒介上传输比特流,提供机械和电气的规约 |
上三层为控制层面,下四层为数据层面
传输层:
定义数据的传输方式:分为可靠与不可靠传输方式。
不同传输方式的特点分析:
传输方式 | 特点 |
---|---|
TCP | 面向连接,速度慢,但可靠,20字节头 |
UDP | 无连接,速度快,不可靠传输,8字节头。 |
使用不可靠传输方式数据特点:
1.大流量
2.同步性要求较高
3.对数据的丢失不敏感
TCP:传输控制协议,是一种面向连接的可靠的传输协议。
什么是可靠的传输协议?如何保障可靠传输?
什么是面向连接?如何保障面向连接?
面向连接是在传递数据前进行协商,确保数据在后续的収送过程中双方能够发送以及能够发送到数据。
保障面向连接:TCP三次握手机制
TCP协议
TCP三次握手
第一次握手: 客户端向服务器发送 SYN 报文 (SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认
第二次握手: 实际上是分两部分来完成的,即 SYN+ACK (请求和确认) 报文
服务器收到了客户端的请求,向客户端回复一个确认信息 (ack=x+1)
服务器再向客户端发送一个 SYN 包 (SEQ=y)建立连接的请求,此时服务器进入 SYN_RECV 状态
第三次握手: 客户端收到服务器的回复 (SYN+ACK 报文0);此时,客户端也要向服务器发送确认包 (ACK);此包发送完毕客户端和服务器进入 ESTABLISHED 状态,完成 3 次握手
几个重要的状态:
- 1.LISTEN: 正在侦听来自远方的 TCP 端口的连接请求,服务端启动后处于 LISTEN 状态用于监听不同客户端的 TCP 请求并建立连接
- 2.SYN_SEND / SYN_RCVD: 建立连接的中间过程,若连接顺利的话(建立连接过程也可能丢包),这两个状态就一瞬消失
- 3.ESTABLISHEN: 连接建立完毕 (验证了通信双方的发送和接受能力都正常),可以进行数据传输***
TCP会话断开机制:四次断开
- 第一次挥手: 客户端向服务器端发送断开 TCP 连接请求的 [FIN,ACK] 报文,在报文中随机生成一个序列号 SEQ=u,表示要断开 TCP 连接
此时,客户端进入FIN_WAIT_1 (终止等待1) 状态 - 第二次挥手: 当服务器端收到客户端发来的断开 TCP 连接的请求后,回复发送 ACK 报文,表示已经收到断开请求。回复时,随机生成一个序列号 SEQ=v;由于回复的是客户端发来的请求,所以在客户端请求序列号 SEQ=u 的基础上加 1,得到 ack=u+1
此时,服务端就进入了CLOSE_WAIT (关闭等待) 状态,客户端收到ACK后,就进入FIN_WAIT_2 (终止等待2) 状态 - 第三次挥手: 服务器端在回复完客户端的 TCP 断开请求后,不会马上进行 TCP 连接的断开。服务器端会先确认断开前,所有传输到客户端的数据是否已经传输完毕。确认数据传输完毕后才进行断开,向客户端发送 [FIN,ACK] 报文,设置字段值为 1。再次随机生成一个序列号 SEQ=w;由于还是对客户端发来的 TCP 断开请求序列号 SEQ=u 进行回复,因此 ack 依然为 u+1
此时,服务器就进入了LAST_ACK (最后确认) 状态 - 第四次挥手: 客户端收到服务器发来的 TCP 断开连接数据包后将进行回复,表示收到断开 TCP 连接数据包。向服务器发送 ACK 报文,生成一个序列号 SEQ=u+1;由于回复的是服务器,所以 ACK 字段的值在服务器发来断开 TCP 连接请求序列号 SEQ=w 的基础上加 1,得到 ack=w+1
此时,客户端就进入了TIME_WAIT (时间等待) 状态;注意此时TCP连接还没有释放,必须经过2MSL (最长报文段寿命) 的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态
两个重要的状态:
- CLOSE_WAIT: 表示在等待关闭; 四次挥手挥了一半了,当前可能剩下的两次不挥了(接收方没调用 close 方法,就会导致四次挥手只挥两次,从而没有正确关闭连接)
- TIME_WAIT: 谁主动断开连接,谁进入 TIME-WAIT 状态,此时该主机已经完成了四次挥手的过程,但仍不能立刻断开连接,而是要以 TIME-WAIT 状态来保持连接一段时间之后,再彻底释放连接 (处理最后一个 ACK 丢包之后重传的问题)
为了解决网络的丢包和网络不稳定所带来的其他问题,确保连接方能在时间范围内,关闭自己的连接
TCP数据结构:
TCP优化机制:
- 1.重排序
- 2.滑动窗口机制(当网络状况良好时,发送大量数据进行确认,当网络不好时,发送少量数据进行确认)
TCP主要应用环境:
- web浏览器
- 电子邮件
- FTP等协议当中
UDP协议
UDP:用户数据报协议,是一种非面向连接的丌可靠传输协议。
特点:
- 1.无连接(没有三次握手丌需要提前迚行协商)
- 2.不可靠传输(尽力而为)
- 3.简单
- 4.低开销
UDP数据结构:
UDP主要使用环境:视频流、IP语音(VOIP)
MTU:最大传输单元 默认为1500字节
PDU : 协议数据单元,数据在不同层的表现形式
4层PDU:segment 分段 分片
网络层:
网络层:编址、寻址(路由)
编址协议: IPV4、IPV6、IPX、Appletalk 等
IPV4:互联网协议版本4 ,采用了32个二进制进行标识
组成方式:32个二进制
书写方式:点分十进制
完整的IP地址:IP地址部分+网络掩码
IP地址:32个二迚制,0和1组成
网络掩码:32个二进制,连续的1和连续的0组成,连续的1代表网络位,连续的0代表主机位。
二层数据帧结构:
物理层: