第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。 第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。 要求:每个子课程(6位编码的课程)要求做一个这样的胶片,胶片文件命名为“课程编码 课程名称.ppt”。 此页胶片仅在授课时使用,胶片+注释中不使用。 封面页按产品分为4个,各产品使用自己的封面,把其他封面直接删除即可。
课程主要内容 TCP协议概述 UDP协议与应用 ICMP协议与应用 常见网络服务 常用网络命令使用 此页为了让学员和老师对课程安排有一个大致的了解。 此页列出本课程的主要培训标题,列出每章的名称即可。如果章下面的节不多,在此页可以一并列出。 此页胶片仅在授课时使用,胶片+注释中有专门的目录和标题,不需要重复使用该页面。
传输控制协议TCP TCP是一种面向连接的、可靠的传输层协议; TCP协议建立在不可靠的网络层IP协议之上,IP不能提供任何可靠性机制,TCP的可靠性完全由自己实现; TCP采用的最基本的可靠性技术是: 确认与超时重传; 流量控制。
TCP协议与其他协议的层次关系
TCP的端口号分配和Socket地址 TCP常用的熟知端口号
TCP报文的发送过程 TCP 端口 … 发送 TCP 报文段 接收缓存 发送缓存 报文段 发送端 接收端 向发送缓存 写入数据块 从接收缓存 读取数据块 应用进程
TCP报文段格式 目 的 端 口 检 验 和 选 项 (长 度 可 变) 源 端 口 紧 急 指 针 窗 口 保 留 32 bit 填 充 首部 20 字节的 固定首部 目 的 端 口 数据 偏移 检 验 和 选 项 (长 度 可 变) 源 端 口 序 号 紧 急 指 针 窗 口 确 认 号 保 留 F I N 32 bit S Y R T P H A C K U G 比特 0 8 16 24 31 填 充 TCP 数据部分 TCP 首部 TCP 报文段 IP 数据部分 IP 首部 发送在前
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
TCP报文各字段域的含义 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。 比特 0 8 16 24 31 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 数据偏移——占 4 bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit 字(4 字节为计算单位)
TCP报文各字段域的含义 保留字段——占 6 bit,保留为今后使用,但目前应置为 0。 比特 0 8 16 24 31 源 端 口 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 保留字段——占 6 bit,保留为今后使用,但目前应置为 0。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 紧急比特 URG —— 当 URG 为1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
TCP报文各字段域的含义 确认比特 ACK —— 只有当 ACK 为 1 时确认号字段才有效。当 ACK 为 0 时,确认号无效 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 确认比特 ACK —— 只有当 ACK 为 1 时确认号字段才有效。当 ACK 为 0 时,确认号无效
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 复位比特 RST (ReSeT) —— 当 RST 为1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
TCP报文各字段域的含义 同步比特 SYN —— 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 同步比特 SYN —— 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 终止比特 FIN (FINal) —— 用来释放一个连接。当FIN 为1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 窗口字段 —— 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
TCP报文各字段域的含义 紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
TCP报文各字段域的含义 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 选项字段 :TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
TCP报文各字段域的含义 填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。 比特 0 8 16 24 31 源 端 口 比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 TCP 首部 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 保 留 窗 口 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。
TCP协议的三次“握手”
TCP传输连接建立 主机 A 主机 B 主动打开 被动打开 SYN=1, SEQ = x 连接请求 SYN=1, ACK=1, SEQ = y, ACK= x 1 确认 ACK=1, SEQ = x + 1, ACK = y 1 确认
建立 TCP 连接 A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x。 B 的 TCP 收到连接请求报文段后,如同意,则发回确认。 B 在确认报文段中应将 SYN 置为 1,其确认号应为 x 1,同时也为自己选择序号 y。 A 收到此报文段后,向 B 给出确认,其确认号应为 y 1。 A 的 TCP 通知上层应用进程,连接已经建立。 当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。
TCP协议的四次“挥手”
至此,整个连接已经全部释放。 TCP 连接释放的过程 从 A 到 B 的连接就释放了,连接处于半关闭状态。相当于 A 向 B 说: 应用进程 释放连接 B 不再发送报文 ② 通知主机 应用进程 ① 应用进程 释放连接 A 不再发送报文 FIN=1,ACK=0, SEQ = x ACK=1, SEQ = y, ACK= x 1 确认 FIN=1, ACK, SEQ = y+1, ACK = x + 1 ACK=1, SEQ = x + 1, ACK = y 1 确认 至此,整个连接已经全部释放。 从 A 到 B 的连接就释放了,连接处于半关闭状态。相当于 A 向 B 说: “我已经没有数据要发送了。但你如果还发送数据,我仍接收。”
TCP传输连接建立举例 TCP传输连接建立:“三次握手 ”
TCP传输的连接释放举例 TCP传输连接释放:“四次挥手 ”
一次完整的FTP会话 首先开启目标主机的FTP服务。
一次完整的FTP会话 启动Sniffer,利用FTP连接目标主机上的FTP服务器
一次完整的FTP会话
一次完整的FTP会话 登录FTP的过程是一次典型的TCP连接,因为FTP服务使用的是TCP协议。其TCP报头的结构:
TCP协议的三次“握手” 这个过程在FTP的会话中也明显的显示出来
第一次“握手”
第二次“握手” SYN为1,开始建立请求连接,需要对方计算机确认,对方计算机确认返回的数据包。
第三次“握手” 对方计算机返回的数据包中ACK为1并且SYN为1,说明同意连接。 这个时候需要源计算机的确认就可以建立连接了
第一次“挥手”
第二次“挥手” 第一次交互中,首先发送一个FIN=1的请求,要求断开,目标主机在得到请求后发送ACK=1进行确认
第三次“挥手” 之后就发送了一个FIN=1的包,与源主机断开
第四次“挥手” 随后源主机返回一条ACK=1的信息,一次完整的TCP会话就结束
用户报文协议UDP UDP协议的主要特点 UDP是一种无连接的、不可靠的传输层协议; 在完成进程到进程的通信中提供了有限的差错检验功能;
UDP 用户数据报的首部格式 伪首部 源端口 目的端口 长 度 检验和 数 据 首 部 UDP长度 源 IP 地址 目的 IP 地址 17 长 度 检验和 数 据 首 部 UDP长度 源 IP 地址 目的 IP 地址 17 IP 数据报 字节 4 1 2 12 发送在前 UDP 用户数据报
UDP 用户数据报的首部格式 伪首部 源端口 目的端口 长 度 检验和 数 据 首 部 UDP长度 源 IP 地址 目的 IP 地址 17 IP 数据报 字节 4 1 2 12 发送在前 UDP 用户数据报 用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。
UDP 用户数据报的首部格式 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。 伪首部 源端口 目的端口 长 度 检验和 数 据 首 部 UDP长度 源 IP 地址 目的 IP 地址 17 IP 数据报 字节 4 1 2 12 发送在前 UDP 用户数据报 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
UDP检验和的检验范围: 伪头部 、UDP头、 应用层数据
UDP端口号 TCP/IP协议族中用端口号来标识进程; 端口号(16bit)是在0到65535之间的整数; 客户程序随机选取的临时端口号; 每一种服务器程序被分配了确定的全局一致的熟知端口号; 每一个客户进程都知道相应的服务器进程的熟知端口号。
UDP使用的熟知端口号
UDP和TCP传递数据的差异 UDP和TCP传递数据的差异类似于电话和明信片之间的差异。
UDP和TCP传递数据的比较 UDP协议 TCP协议 无连接的服务;在主机之间不建立会话。 面向连接的服务;在主机之间建立会话。 UDP 和 TCP 都使用端口标识每个 TCP/IP 程序的通讯。
UDP数据报分析 常用的网络服务中,DNS使用UDP协议。DNS是域名系统 (Domain Name System)的缩写 当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与此名称相关的IP地址。
设置DNS解析
设置DNS解析
UDP报头
UDP报头的分析
因特网控制报文协议 ICMP 为了提高 IP 数据报交付成功的机会,在网际层使用了ICMP (Internet Control Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 ICMP 不是高层协议,而是 IP 层的协议。 ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
因特网控制报文协议 ICMP ICMP 不是一个独立的协议,而是IP协议的一部分,在每个 IP 模块中都包含了 ICMP 的实现代码。 ICMP报文实际上也是一个IP数据报,唯一不同的是:在 ICMP 报文的 IP 数据报头部有一个“协议”字段,它指明这是一个ICMP报文。
Internet控制报文协议ICMP 当 ICMP 报文在传输出错时,它会立即向“差错处理过程”产生一个“异常中断”,告诉系统这个出错的 IP 数据报是一个 ICMP 报文,不需要再产生另一个 ICMP 报文来向主机报告 IP 数据报传输出错情况。 ICMP 报文的接收方不是目的主机的应用程序或其用户,而是目的主机上的IP层(IP模块),在 IP 模块中有一部分程序专门用来处理ICMP 报文。
谁可以产生和发送ICMP报文? 最初设计 ICMP 协议的目的是: 使得路由器能向主机报告数据报传输失败的原因。
ICMP 报文的格式 首 部 ICMP 报文 数 据 部 分 检验和 类型 代码 (这 4 个字节取决于 ICMP 报文的类型) 8 16 首 部 ICMP 报文 数 据 部 分 检验和 类型 代码 (这 4 个字节取决于 ICMP 报文的类型) 8 16 31 IP 数据报 前 4 个字节 都是一样的 ICMP 的数据部分(长度取决于类型)
ICMP报文的分类 超时报文 目的端不可达报文 参数出错报文 差错报文 控制报文 请求/应答 报文 源抑制报文 重定向报文 回应请求/应答报文 时戳请求/应答报文 地址掩码请求/应答报文
差错报文 作用:用于路由器或主机向出错数据报的源端报告出错情况。 单向传输。 超时报文 目的端不可达报文 参数出错报文 分为 3 类:
差错报文 1)超时报文: 当路由器收到生存时间为 0 的数据报时: 把该数据报丢弃 同时向源主机发送超时ICMP报文
差错报文 2)目的端不可达报文: 当出现以下情况时,向源站点发送“目的端不可达报文”。 网络不可达(0) 主机不可达(1) 协议不可达(2) 端口不可达(3) 需要分片但DF为 1(4) 源路由失败(5)
差错报文 3)参数出错报文: 当路由器或目的端主机收到的数据报的首部中,如果某个字段的值不正确,则丢弃该报文,并向源站点发送“参数出错报文”。
控制报文 作用:用于拥塞控制和路由控制。 单向传输。 源抑制报文 重定向报文 分为 2 类:
控制报文 1)源抑制报文: 用于拥塞控制。 当由于网络拥塞而丢弃报文时,就向源主机发送源抑制报文,使源站点知道应该放慢发送报文的速度。
控制报文 2)重定向报文: 用于路由控制。 路由器使用该报文来告诉主机到达目的地可以走的一条最优路径。
请求/应答报文 回应请求/应答报文 时戳请求/应答报文 地址掩码请求/应答报文 目的:获得有关网络状态的一些信息。 双向传输。 分为 3 类:
请求/应答报文 1)回应请求/应答 报文: 用于测试目的端主机是否可达。 以IP报文的形式在Internet中传输。 如果成功接收到一个应答报文,而且应答报文中的数据和原来请求报文中的数据完全相同,则说明: 目的主机可达,发送主机和接收主机中的ICMP软件、IP软件处于正常工作状态,途中的路由器也处于正常工作状态。
请求/应答报文 2)时戳请求/应答报文: 用于Internet上各个机算计进行时钟同步。 3)地址掩码请求/应答报文: 主机使用该报文可以获得路由器的地址掩码模式,从而根据地址掩码来解释子网地址。
ICMP 差错报告报文的数据字段的内容 IP 数据报的数据字段 收到的 IP 数据报 IP 数据报 首部 8 字节 ICMP 的 前 8 字节 IP 数据报 首部 8 字节 ICMP 差错报告报文 首部 ICMP 差错报告报文 装入 ICMP 报文的 IP 数据报 IP 数据报
不应发送 ICMP 差错报告报文的几种情况 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
Ping (Packet InterNet Gopher) 因特网包(分组)探索程序 PING 用来测试两个主机之间的连通性。 PING 使用了 ICMP 回送请求与回送应答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
ICMP数据报分析 使用Ping命令发送ICMP回应请求消息,可以检测网络或主机通讯故障并解决常见的TCP/IP连接问题
FTP服务 FTP的缺省端口是20(用于数据传输)和21(用于命令传输)。 在TCP/IP中FTP是非常独特的,因为命令和数据能够同时传输,而数据传输是实时的,其他协议不具有这个特性。 FTP客户端可以是命令界面的也可以是图形界面的。
登录FTP服务器 在浏览器中输入“ftp://主机IP地址
Telnet服务 Telnet是TELecommunications NETwork的缩写,其名字具有双重含义,既指应用也是指协议自身。
开启Telnet服务 Telnet要求有一个Telnet服务器,此服务器驻留在主机上,等待着远端机器的授权登录。要使用Telnet服务首先需要在虚拟机上开启Telnet服务,选择进入Telnet服务管理器。
开启Telnet服务 在Telnet服务管理器中选择4,启动Telnet服务器
连接Telnet服务器
Email服务 目前Email服务用的两个主要的协议是:简单邮件传输协议SMTP(Simple Mail Transfer Protocol)和邮局协议POP3(Post Office Protocol)。 SMTP默认占用25端口,用来发送邮件,POP3占用110端口,用来接收邮件。 在Windows平台下,主要利用Microsoft Exchange Server作为电子邮件服务器。
Web服务 Web服务是目前最常用的服务,使用HTTP协议,默认Web服务占用80端口 在Windows平台下一般使用IIS(Internet Information Server)作为Web服务器。
常用的网络服务端口 端口 协议 服务 21 TCP FTP服务 25 SMTP服务 53 TCP/UDP DNS服务 80 Web服务 135 RPC服务 137 UDP NetBIOS域名服务 138 NetBIOS数据报服务 139 NetBIOS会话服务 443 基于SSL的HTTP服务 445 Microsoft SMB服务 3389 Windows终端服务
常用的网络命令 常用的网络命令有: 判断主机是否连通的ping指令 查看IP地址配置情况的ipconfig指令 查看网络连接状态的netstat指令 进行网络操作的net指令 进行定时器操作的at指令。
ping
ping ping 对方计算机名或者IP地址
ipconfig指令 ipconfig指令显示所有TCP/IP网络配置信息、刷新动态主机配置协议(DHCP)和域名系统(DNS)设置。
netstat指令 netstat指令显示活动的连接、计算机监听的端口、以太网统计信息、IP 路由表、IPv4统计信息(IP、ICMP、TCP和UDP协议)。 使用“netstat -an”命令可以查看目前活动的连接和开放的端口,是网络管理员查看网络是否被入侵的最简单方法。
net指令 net指令的功能非常的强大,net指令在网络安全领域通常用来查看计算机上的用户列表、添加和删除用户、和对方计算机建立连接、启动或者停止某网络服务等。利用“net user”查看计算机上的用户列表
net指令 利用“net user 用户名 密码”给某用户修改密码,比如把管理员的密码修改成“123456” 。
举例: 建立用户并添加到管理员组
和对方计算机建立信任连接 只要拥有某主机的用户名和密码,就可以用“IPC$(建立信任连接,建立完信任连接后,可以在命令行下完全控制对方计算机。 比如得到IP为172.18.25.109计算机的管理员密码为123456。
和对方计算机建立信任连接 之后就可以操作对方的计算机,比如查看对方计算机上的文件
at指令 创建定时器