1.1 OSI模型
OSI模型是国际标准化组织提出的一个试图是各种计算机在世界范围内互联为网络的标准框架。
1.2 OSI模型设计
OSI模型设计时遵循以下原则
(1)各层之间有清晰的边界,便于理解。
(2)每个层实现特定的功能,且相互不影响
(3)每个层是服务者又是被服务者,即为上一层服务,又被下一层服务。
(4)层次的划分有利于国际标准协议的制定。
(5)层次的数目应该足够多,以避免各个层功能重复。
3.1.3 OSI模型分层
OSI 七层模型中,给每一个对等层数据起一个统一的名字为:协议数据单元( PDU , Protocol Data Unit )。相应地,应用层数据称为应用层协议数据单元( APDU , Application Protocol Data Unit ),表示层数据称为表示层协议数据单元( PPDU , Presentation Protocol Data Unit ),会话层数据称为会话层协议数据单元( SPDU , Session Protocol Data Unit )。通常,我们把 传输层数据称为段 ( Segment ), 网络层数据称为数据包 ( Packet ), 数据链路层称为帧(Frame),物理层数据称为比特流(Bit) 。
封装(Encapsulation)是指网络节点(Node)将要传送的数据用特定的协议头打包 ,来传送数据,同样在某些层进行数据处理时,也会在数据尾部加上报文,这时候也称为封装。 OSI 七层模型的每一层都对数据进行封装,以保证数据能够正确无误的到达目的地,被终端主机接受、执行。
1.4 OSI模型的优点
OSI模型的优点如下:
(1)简化了相关网络操作。
(2)提供即插即用的兼容性和不同厂商之间的标准接口。
(3)使各个厂商能够设计出互操作的网络设备,加快数据通信网络发展。
(4)防止一个区域网络的变化影响另一个区域的网络,因此,每一个区域的网络都能单独快速升级。
(5)把复杂的网络问题分解为小的简单问题,易于学习和操作。
TCP/IP协议基础
2.1 TCP/IP和OSI的对应关系
TCP/IP协议栈具有简单的分层设计,与OSI参考模型有清晰的对应关系。
2.2 ICP/IP协议栈各层作用
TCP/IP协议每一层都有对应的相关协议 ,且均为达成某一网络应用而产生,对于某些协议在分层上还不能严格对其定义。比如 ICMP 、 IGMP 、 ARP 、 RARP 协议我们把他们放在与网络层 IP 协议同一层。但在某些场合我们可能会把 ICMP 、 IGMP 放在 IP 协议的上层,而把 ARP 、 RARP 放在 IP 协议的下层。
应用层
HTTP (超文本传输协议):用来访问在 WWW 服务器上的各种页面。
FTP (文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。
DNS (域名服务系统): 用于实现从主机域名到IP地址之间的转换。
传输层
TCP (传输控制协议) : 为应用程序提供可靠的面向连接的通信服务 ,适用于要求得到响应的应用程序。目前,许多流行的应用程序都使用 TCP 。
UDP (用户数据报协议):提供了 无连接通信,且不对传送数据包进行可靠的保证。 适合于一次传输小量数据,可靠性则由应用层来负责。
网络层
IP (互联网协议): IP 协议和路由协议协同工作 , 寻找能够将数据包传送到目的端的最优路径。 IP 协议不关心数据报文的内容,提供无连接的、不可靠的服务。
ARP(地址解析协议): 把已知的IP地址解析为MAC地址。
RARP (反向地址解析协议):用于数据链路层地址已知时,解析 IP 地址。
ICMP (网际控制消息协议): 定义了网络层控制和传递消息的功能。
IGMP (网际组管理协议):用于组播组成员管理。
数据链路层
数据链路层分为两个子层:逻辑链路控制子层( LLC, Logic Link Control Sublayer ),介质访问控制子层( MAC, Media Access Control Sublayer )。
2.3 TCP/IP协议栈封装与解封
1、发送方将用户数据提交给应用程序把数据送达目的地,整个数据封装流程如下:
用户数据首先传送至应用层,添加应用层信息;
完成应用层处理后,数据将往下层传输层继续传送,添加传输层信息(如 TCP 或 UDP ,应用层协议已规定是 TCP 还是 UDP );
完成传输层处理后,数据将往下层网络层继续传送,添加网络层信息(如 IP )。
2、完成网络层处理后,数据将往下层数据链接层继续传送,添加数据链层信息(如 Ethernet 、 802.3 、 PPP 、 HDLC 等),而后以比特流方式传输至对端(中间根据不同类型设备处理方式不同,交换机一般只进行数据链路层信息处理,而路由器进行更高层网络层处理,只有到达最终目的地才能恢复原用户数据);
3、用户数据到达目的地后,将完成解封装流程:
数据包先传送至数据链路层,经过解析后数据链路层信息被剥离,并根据解析信息知道网络层信息,比如为 IP ;
网络层接收数据包后,经过解析后网络层信息被剥离,并根据解析信息知道上层处理协议,比如 TCP ;
传输层 (TCP) 接收数据包后,经过解析后传输层信息被剥离,并根据解析信息知道上层处理协议,比如 HTTP ;
应用层接收到数据包后,经过解析后应用层信息被剥离,最终展示的用户数据与发送方主机发送的数据完全相同。
4、应用层和传输层提供端到端服务,网络层和数据链路层提供段到段服务。
2.4五元组
1、五元组构成:源 IP 地址、目的 IP 地址、协议、源端口、目的端口。其中协议信息,如 TCP 为 6 , UDP 为 17 。
目的端口:一 般知名的应用服务均会有标准的端口 ,比如 HTTP 、 FTP 、 Telnet 等,其中有些应用因非流行等原因,其端口一般由开发厂商自行定义,但要保证在同一台服务器注册的服务端口是唯一的。
源端口: 一般都采用1024及以上端口进行递增分配 ,但某些操作系统可能会使用更高的端口号做为其初始端口进行递增分配。因源端口不可预知性,所以在 ACL 策略中比较少涉及。
2、五元组是一个概念,任何应用服务器要想对外提供业务服务,均需在服务启动期间在 TCP/UDP 上进行端口注册,以便响应业务服务请求。通过五元组,应用服务器可响应任何并发服务请求,且能保证每一链接在本系统内是唯一的。
2.5 TCP/IP 连接建立与终止
建立TCP连接
TCP 的连接建立是一个三次握手过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行。主要步骤如下:
连接开始时,连接建立方 (Client) 发送SYN包 ,并包含了自己的 初始序号a ;
连接接受方 (Server) 收到 SYN 包以后会 回复一个SYN+ACK包 ,其中包含了 对上一个a包的回应信息ACK ,回应的序号为下一个 希望收到包的序号 ,即 a+1 ,然后还包含了自己的 初始序号b;
连接建立方 (Client) 收到回应的 SYN 包以后, 回复一个ACK包做响应 ,其中 包含了下一个希望收到包的序号即b+1。
断开 TCP 连接
TCP 终止连接的四次挥手过程如下:
客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部, FIN=1,其序列号为seq=a ( 等于前面已经传送过来的数据的最后一个字节的序号加1 ),此时,客户端进入 FIN-WAIT-1 (终止等待 1 )状态;
服务器收到连接释放报文, 发出确认报文,ACK=1,ack=a+1,并且带上自己的序列号seq=b, 此时,服务端就进入了 CLOSE-WAIT (关闭等待)状态;
p 客户端收到服务器的确认请求后,此时,客户端就进入 FIN-WAIT-2 (终止等待 2 )状态,等待服务器发送连接释放报文;
服务器将最后的数据发送完毕后,就向客户端发送连接释放报文, FIN=1 , ack =a+1 ,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为 seq =c ,此时,服务器就进入了 LAST-ACK (最后确认)状态,等待客户端的确认;
客户端收到服务器的连接释放报文后,必须发出确认, ACK=1 , ack =c+1 ,而自己的序列号是 seq =a+1 ,此时,客户端就进入了 TIME-WAIT (时间等待)状态;
p 服务器只要收到了客户端发出的确认,立即进入 CLOSED 状态,就结束了这次的 TCP 连接。
3.1 常见网络协议介绍
常见应用层协议
SIP 协议:信令控制会议,用于语音、视频等多媒体应用。
HTTP/HTTPS 协议:超文本传输协议,即用于浏览 web 网页的协议。
FTP 协议:文件传输协议,用于上传下载文件资源。
DNS 协议:域名解析协议,当用户访问网站时,需要获取网站的公网 IP 地址,此时需要向
DNS 服务器进行询问。
FTP原理
FTP 提供了一种在服务器和客户机之间上传和下载文件的有效方式。
使用FTP传输数据时,需要在服务器和客户机之间建立控制连接和数据连接。
1、 使用FTP进行文件传输时,会使用两个TCP连接 。第一个连接是 FTP 客户端和 FTP 服务器间的控制连接。 FTP 服务器开启 21 号端口,等待 FTP 客户端发送连接请求。 FTP 客户端随机开启端口,向服务器发送建立连接的请求。控制连接用于在服务器和客户端之间传输控制命令。
2、 第二个连接是FTP客户端和FTP服务器间的数据连接 。服务器使用 TCP 的 20 号端口与客户端建立数据连接。通常情况下,服务器主动建立或中断数据连接。
3、由于 FTP 为多通道协议,数据通道的建立使用随机端口,如果中间有防火墙存在时,可能会出现通道不能建立的情况,详情请参照后续章节。
主动模式下 ,当客户端存在防火墙时,由于数据连接是由服务器发起,数据连接可能会发生问题。被动模式下,这个问题得到了解决。主动模式有利于对 FTP 服务器的管理,不利于对客户端的管理;被动模式则相反。
缺省情况下,服务器的端口 21 用于传输控制命令,端口 20 用于传输数据。
FTP 连接主动模式建立过程:
服务器打开端口 21 启动监听,等待连接。 启动监听,等待连接。
客户端发起控制连接的建立请求,服务器响应。
客户端通过控制连接发送 PORTPORT PORT 命令,将客户端数据连接的临时口号告诉服务器。 命令,将客户端数据连接的临时口号告诉服务器。
服务器的 20 号端口与客户建立起数据连接。
FTP 连接被动模式建立过程 :
服务器打开端口 21 启动监听,等待连接。 启动监听,等待连接。
客户端发起控制连接的建立请求,服务器响应。
客户端通过控制连接发送命令字 PASVPASV ,告知服务器处于被动模式。
服务器回应,将数据连接的临时端口号告诉客户。
客户端与服务器的临时口建立起数据连接。
HTTP/HTTPS - web应用基本组成部分
DNS工作原理
常见网络层协议
ARP :用于报文转发到同一网段的主机或网关时,已知目的地址,获取目的地址对应的 MAC 地址,同一网段内使用 MAC 地址进行通信。
ICMP : ICMP 一般用于测试网络的连通性,典型应用为 Ping 和 Tracert 。
路由协议:用于网络中不同网段之间用户相互通信。
SNMP :是一种网络设备管理协议。
NetStream :是一种信息采样统计协议,通常与其他设备进行联动使用,如 Anti-DDoS 。
通过 ARP协议,网络设备可以建立目标IP地址和MAC地址之间的映射 。网络设备通过网络层获取到目的 IP 地址之后,还要判断目的 MAC 地址是否已知。
本例中, 主机A的ARP缓存表中不存在主机C的MAC地址,所以主机A会发送ARP Request来获取目的MAC地址 。 ARP Request 报文封装在以太帧里。帧头中的源 MAC 地址为发送端主机 A 的 MAC 地址。此时,由于主机 A 不知道主机 C
的 MAC 地址,所以目的 MAC 地址为广播地址 FF-FF-FF-FF-FF-FF 。 ARP Request 报文中包含源 IP 地址、目的 IP 地址、源 MAC 地址、目的 MAC 地址,其中目的 MAC 地址的值为 0 。 ARP Request 报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此 ARP Request 报文。网关将会阻止该报文发送到其他网络上。
ICMP是TCP/IP协议簇的核心协议之一,它用于在IP网络设备之间发送控制报文,传递差错、控制、查询等信息。