第二章:两种参考模型
一、OSI参考模型(网络互连模型)—开放系统互联参考模型
(1)产生背景
1.各大厂商都有自己的协议
2.各大产商之间的产品不兼容
3.用户购买维护设备的成本高
(2)网络互连的七层框架
( 物理层 、 数据链路层 、 网络层 、 传输层 、 会话层 、 表示层 和 应用层 )
每层作用:每层功能独立,故障可以快速定位2
应用层:把人类语言转化成编码,为各种应用程序提供网络服务
OSI参考模型最高层,也是最靠近用户的一层,为计算机用户、各种应用程序以及网络提供接口,也为用户直接提供各种网络服务。
表示层:定义一些数据的格式,对数据进行加密,解密,编码,解码,压缩,解压缩
提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。
会话层:对通信双方之间的会话做一些建立、维护、拆除(session id:session_id() 可以用来获取/设置 当前会话 ID。)
接收来自传输层的数据,负责建立、管理和终止表示层实体之间的通信会话,支持它们之间的数据交换。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
传输层:建立端到端的连接(逻辑连接)-端口号
端口号:数据链路层和IP中的地址,分别是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有地址,就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序,也被称为程序地址。
TCP/IP或UDP/IP通信通常采用5个信息来识别一个通信。分别为:源IP地址、目标IP地址、协议号、源端口号、目标端口号。
端口号范围:0-65535(0不能用)
知名端口号:1-1023-应用—应用标定特殊的服务
DNS(域名解析系统):端口号53
HTTP-(超文本传输链接)---80
SMTP(简单邮件传输协议)--发邮件-25
Pop3—收协议-110
FTP(文件传输协议)-20、21
TFTP(简单文件传输协议)
动态端口号:1024-65535—用来分配给一些不固定的服务
建立主机端到端的链接,为会话层和网络层提供端到端可靠的和透明的数据传输服务,确保数据能完整的传输到网络层。
网络层:路由器,提供路由,转发数据
通过路由选择算法,为报文或通信子网选择最适当的路径。控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备
数据链路层:MAC地址寻址、封装成帧、差错检测、流量检测
LLC子层:逻辑链路控制子层,为传输可靠性提供一个保障,减少出现帧丢失,重复、失序的情况(CRC-循环余计算码)
MAC子层:媒体控制子层,负责识别网络层的协议,然后对他们进行封装,解封装,MAC寻址,流量控制
MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
接收来自物理层的位流形式的数据,封装成帧,传送到网络层;将网络层的数据帧,拆装为位流形式的数据转发到物理层;负责建立和管理节点间的链路,通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
物理层:传输比特流,定义一些参数(电压,接口,缆线标准、传输距离、传输介质、物理拓扑、信号传输模式)
信号传输模式:
单工模式:同一时间内,通信双方只能有一方有收或发消息
半双工模式:同一时间内,通信双方可以同时有收或发消息
全双工模式:同一时间内,通信双方可以同时有收发消息
传输介质为数据链路层提供物理连接,实现比特流的透明传输。实现相邻计算机节点之间比特流的透明传送,屏蔽具体传输介质和物理设备的差异
物理层:网卡、网线、集线器、中续器、调制解调器
数据链路层:网桥、交换机
网络层:路由器
网关工作在第四层传输层以上
(3)通讯过程(封装与解封装)
封装:在原始数据的基础上,额外加了一些信息,形成新的格式
解封装:拆封掉封装的额外信息,还原成原始数据
过程:
数据发送过程:从上到下层层封装
数据接收过程:从下到上层层解封装
二、TCP/IP参考模型(传输控制协议/互联网协议)
(1)产生背景
1.OSI参考模型抢占市场失败,
2.OSI划分层次多
(2)模型类型及区别
(3)通讯过程(封装与解封装)
PDU:协议数据单元
三、TCP/IP协议簇及抓包分析
- TCP协议-传输控制协议
TCP头部固定的字节:20byte 32*5/8
Source port:源端口
Destination port:目的端口
Sequence number:序列号,标识本机发送的数据报文的编号
Ack:ACK=1,确认号,标识请求对方下次发送的数据报文的编号
Date offset:数据偏移,标识数据分段在完整数据中的位置
Reserved:保留,给为开发的功能
Urg:当位置为1,urgent pointer 紧急指针位会发挥作用,优先发送数据
PSH:TCP的推送位,在缓冲区未填满的情况下,尽快的将缓冲区的数据推送上前,交付给接收的应用进程
RST:复位开关
SYN:连接建立的标志位
FIN:
WINDOW:窗口,通告其他的人本机接受能力
Checksum: 校验和
TCP的可靠机制:
TCP的三次握手:三次握手文字总结
三次握手是 TCP 连接的建立过程。在握手之前,主动打开连接的客户端结束 CLOSE 阶段,被动打开的服务器也结束 CLOSE 阶段,并进入 LISTEN 阶段。随后进入三次握手阶段:
① 首先客户端向服务器发送一个 SYN 包,并等待服务器确认,其中:
- 标志位为 SYN,表示请求建立连接;
- 序号为 Seq = x(x 一般取随机数);
- 随后客户端进入 SYN-SENT 阶段。
② 服务器接收到客户端发来的 SYN 包后,对该包进行确认后结束 LISTEN 阶段,并返回一段 TCP 报文,其中:
- 标志位为 SYN 和 ACK,表示确认客户端的报文 Seq 序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接;
- 序号为 Seq = y;
- 确认号为 Ack = x + 1,表示收到客户端的序号 Seq 并将其值加 1 作为自己确认号 Ack 的值,随后服务器端进入 SYN-RECV 阶段。
③ 客户端接收到发送的 SYN + ACK 包后,明确了从客户端到服务器的数据传输是正常的,从而结束 SYN-SENT 阶段。并返回最后一段报文。其中:
- 标志位为 ACK,表示确认收到服务器端同意连接的信号;
- 序号为 Seq = x + 1,表示收到服务器端的确认号 Ack,并将其值作为自己的序号值;
- 确认号为 Ack= y + 1,表示收到服务器端序号 seq,并将其值加 1 作为自己的确认号 Ack 的值。
- 随后客户端进入 ESTABLISHED。
当服务器端收到来自客户端确认收到服务器数据的报文后,得知从服务器到客户端的数据传输是正常的,从而结束 SYN-RECV 阶段,进入 ESTABLISHED 阶段,从而完成三次握手。
四次挥手:第一次挥手:
- 客户端向服务器发送一个 FIN 数据包(FIN = 1,seq = u)主动断开连接,报文中会指定一个序列号。
- 告诉服务器:我要跟你断开连接了,不会再给你发数据了;
- 客户端此时还是可以接收数据的,如果一直没有收到被动连接方的确认包,则可以重新发送这个包。
- 此时客户端处于 FIN_WAIT1 状态。
第二次挥手:
- 服务器收到 FIN 数据包之后,向客户端发送确认包(ACK = 1,ack = u + 1),把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了
- 这是服务器在告诉客户端:我知道你要断开了,但是我还有数据没有发送完,等发送完了所有的数据就进行第三次挥手
- 此时服务端处于 CLOSE_WAIT 状态,客户端处于 FIN_WAIT2 状态
第三次挥手:
- 服务器向客户端发送FIN 数据包(FIN=1,seq = w),且指定一个序列号,以及确认包(ACK = 1, ack = u + 1),用来停止向客户端发送数据
- 这个动作是告诉客户端:我的数据也发送完了,不再给你发数据了
- 此时服务端处于LAST_ACK状态,客户端处于TIME_WAIT状态
第四次挥手:
- 客户端收到 FIN数据包 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值
- 此时客户端处于 TIME_WAIT 状态。
- 需要过一了一定时间(2MSL)之后,客户端发送确认包(ACK = 1, ack = w + 1),此时客户端才会进入 CLOSED 状态,以确保发送方的ACK可以到达接收方,防止已失效连接请求报文段出现在此连接中。
- 至此,完成四次挥手。
确认机制:
Ack=上一次seq+上一次的len
Seq=上一次的Ack
滑动窗口机制:
通过滑动窗口来通告本机的接收能力,实现流量控制
完整性校验机:
通过checksum来校正数据的完整性
TCP的协议特点:
可以实现流量控制;
进行数据分段;
面向连接的可靠协议;
使用场景:对传输效率要求不高,对准确性要求高,占用带宽高
- UDP协议—用户数据协议
UDP的协议特点:
不能实现流量控制
无连接的不可靠协议
使用场景:对传输效率要求高,对准确性要求不高,占用带宽不高
- IP协议—互联网协议
version:版本(4或6)
IHL:IP地址的头部长度—20byte
Type of service:服务类型
Total length:IP头部+从传输层下来的数据
Identification:标识
FLAGS:标识符,保证数据分段后,区别于网络中的其他IP数据报文
fragment:片偏移,标识数据分片在完整数据中的位置
TTL:生存周期,32,64,128,256
Protocol:描述上层所使用的协议
Header checksum:头部校验和
Source address:源IP地址
Destination address:目标IP地址
TCP分段:受MSS的影响(最大数据分段长度)
IP分片;受MTU的影响(最大传输单元)
例如:以太网接口(通过光纤上网),默认的MTU是1500字节
PPPOE(宽带拨号上午,网线上网),默认的MTU是1492字节
- ICMP协议
- 以太网帧协议