610 likes | 852 Views
第 5 章 网络协议. 一 问题的提出. 1. 可靠性是我们追求的目标 单机用户: 应用程序依赖于底层系统的可靠性,系统保证数据传送到底层后不会丢失和重复 网络用户: 希望互联网能够提供迅速、准确、可靠的通信功能,保证不发生丢失、重复、错序等可靠性问题 2. 传输层:保证端对端数据传输的可靠性 传输控制协议 TCP 用户数据报协议 UDP. 点对点通信与端对端通信. 互联层:点对点通信 传输层:端对端通信. 端对端通信与虚拟通信平台. 二 TCP 提供的服务. 1.TCP 为其用户提供的服务
E N D
一 问题的提出 1.可靠性是我们追求的目标 单机用户:应用程序依赖于底层系统的可靠性,系统保证数据传送到底层后不会丢失和重复 网络用户:希望互联网能够提供迅速、准确、可靠的通信功能,保证不发生丢失、重复、错序等可靠性问题 2.传输层:保证端对端数据传输的可靠性 传输控制协议TCP 用户数据报协议UDP
点对点通信与端对端通信 互联层:点对点通信 传输层:端对端通信
二 TCP提供的服务 1.TCP为其用户提供的服务 面向连接的、可靠的(没有数据重复或丢失)、全双工的数据流传输服务 2.TCP的通信过程 建立连接(可靠地建立) 发送数据 关闭连接(优雅地关闭)
三 TCP提供的服务特征 面向连接(Connection Orientation) 完全可靠性(Complete Reliability) 全双工通信(Full Duplex Communication) 流接口(Stream Interface) 连接的可靠建立与优雅关闭(Reliable Connection Startup & Graceful Connection Shutdown)
TCP的可靠性实现 1.必要性 TCP建立在IP协议提供的面向非连接、不可靠的数据报投递服务基础之上 2.TCP需要解决的可靠性问题 丢失数据的恢复问题 可靠建立与关闭连接问题
四 数据丢失与重发 数据丢失的解决方案:重发
TCP重发机制需要解决的主要问题 1.重发之前应该等待多长时间? 互联网上的传输延迟不固定 2.解决方案:自适应 根据互联网当时的通信状况,计算合适的数据重发时间 计算往返时间RTT 利用获得的多个RTT和统计学原理计算重发时间
TCP连接的优雅关闭 目的:保证关闭连接之前所有数据都可靠地到 达了目的地 方法:三次握手法 TCP连接的双方都可以发起关闭连接操作
六 TCP的流量控制 1.TCP使用窗口机制进行流量控制 2.什么是窗口? 连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端。 接收方发送的确认信息中包含了自己剩余的缓冲区尺寸。 剩余缓冲区空间的数量叫做窗口
七 TCP端口 TCP端口:一个TCP连接两端的端点 TCP端口的表示:16位的二进制数 利用TCP端口可以提供多路复用功能
八 用户数据报协议UDP 1.UDP提供的服务 面向非连接的、不可靠的传输服务 2.UDP的特点 面向非连接,数据直接封装在IP数据报中投递 不确认,不排序 运行效率高,实现简单 3.利用UDP的应用程序额外要承担可靠性方面的全部工作
UDP的端口 UDP使用端口对给定主机上的多个目标进行区分 UDP端口使用16位二进制数表示 TCP和UDP各自拥有自己的端口号
九 IP数据报选项 功能:主要用于控制和测试 用户可以使用也可以不使用IP选项。但所有实现IP协议的设备必须能处理IP选项 IP数据报选项由选项码、长度和选项数据三部分组成
1. 源路由选项 源路由:IP数据报穿越互联网所经过的路径是由源主机指定的。 应用场合:测试某特定网络吞吐率,使数据报绕开出错网络等。 源路由选项分为: 严格源路由选项:规定IP数据报要经过路径上的每一个路由器 松散源路由选项:只给出IP数据报必须经过的一些“要点”
2. 记录路由选项 (1)记录路由:记录IP数据报从源主机到目的主机所经过路径上各个路由器的IP地址 (2)应用场合 查看IP数据报传输过程中所经过的路径 测试路由器的路由配置是否正确
3. 时间戳选项 时间戳:记录IP数据报经过每一路由器时的当地时间 应用场合:分析网络吞吐率、拥塞情况、负载情况等
1. 差错与控制报文 十 ICMP报文分析与Ping命令实践 IP互联网利用ICMP传输控制报文和差错报文 ICMP报文的封装:封装在IP数据报中
2. ICMP差错控制 (1)ICMP的基本功能之一是提供差错报告; (2)ICMP协议不严格规定对出现的差错采取的处理方式; (3)ICMP差错报告都是采用路由器到源主机的模式: IP数据报本身只包含源主机地址和目的主机地址,错误报告给目的主机没有意义(有时也不可能)。 路由器独立选路,发现错误的路由器不知道该数据报经过的路径,无法将错误通知相应路由器。
3. ICMP差错报文的主要特点 ICMP差错报告作为一般数据传输,不享受特别优先权和可靠性; ICMP差错报告数据中除包含故障IP数据报报头外,还包含故障IP数据报数据区的前64bit数据; ICMP差错报告是伴随着抛弃出错IP数据报而产生的。
4. ICMP主要差错报告类型 (1)目的地不可达报告:网络不可达、主机不可达、协议和端口不可达等。 (2)超时报告 (3)参数出错报告
5.ICMP控制报文 (1)拥塞控制与源抑制报文 (2)路由控制与重定向报文 (3)ICMP请求/应答报文对
(1)拥塞控制与源抑制报文 • 拥塞 什么是拥塞? 路由器被大量涌入的IP数据报“淹没”的现象。 拥塞产生的原因? 路由器处理速度太慢,不能完成数据报排队等日常工作; 路由器传入数据速率大于传出数据速率。 • 拥塞控制:源站抑制 利用ICMP源抑制报文抑制源主机发送数据报的速率。
发送源站抑制报文策略 路由器的某输出队列溢出后,抛弃新来的数据报,发送ICMP源抑制报文; 为路由器的输出队列设置阈值,超过域值后抛弃新来的数据报,发送ICMP源抑制报文; 有选择地抑制IP数据报发送率较高的源主机。 • 接收源站抑制报文 收到源抑制报文后,源主机可以降低发送IP数据报的速率。 注意:拥塞解除后路由器不主动通知源主机
(2)路由控制与重定向报文 • ICMP 重定向机制主机在启动时具有一定的路由信息,但不一定是最优的路由器检测到IP数据报经非优路由传输,就通知主机去往该目的地的最优路径。 功能:保证主机拥有动态的、既小且优的路由表。 • ICMP重定向机制只能在同一网络的路由器与主机之间使用。
(3)ICMP请求/应答报文对 • 回应请求与应答 测试目的主机或路由器可达性 • 时戳请求与应答 获取其他设备的当前时间 • 掩码请求与应答 从路由器获取本网的子网掩码
回应请求与应答 机理: 请求者向特定目的IP地址发送包含任选数据区的回应请求报文 目的主机或路由器收到,响应回应应答报文(包含请求报文中任选数据的复制) 请求者成功收到应答则说明: 目的主机(或路由器)可以到达 源主机与目的主机(或路由器)的ICMP软件和IP 软件工作正常 回应请求与应答ICMP报文经过的中间路由器路由选择功能正常
6. ICMP实现 ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP的重要性 ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团“悬赏”50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视! 比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起 “Ping of Death”(死亡之Ping)攻击。 “Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。 此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。
7. 应对ICMP攻击 虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。 对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。
设置ICMP数据包处理规则的方法也有两种,一种是在操作系统上设置包过滤;另一种是在主机上安装防火墙。具体如下: (1)在Windows 2000 Server中设置ICMP过滤 Windows 2000 Server提供了“路由与远程访问”服务,但是默认情况下是没有启动的,因此首先要启动它:点击“管理工具”中的“路由与远程访问”,启动设置向导。在其中选择“手动配置服务器”项,点击[下一步]按钮。稍等片刻后,系统会提示“路由和远程访问服务现在已被安装。要开始服务吗?”,点击[是]按钮启动服务。 服务启动后,在计算机名称的分支下会出现一个“IP路由选择”,点击它展开分支,再点击“常规”,会在右边出现服务器中的网络连接(即网卡)。用鼠标右键点击你要配置的网络连接,在弹出的菜单中点击“属性”,会弹出一个网络连接属性的窗口 中两个按钮,一个是“输入筛选器”(指对此服务器接受的数据包进行筛选),另一个是“输出筛选器”(指对此服务器发送的数据包进行筛选),这里应该点击[输入筛选器] 按钮,会弹出一个“添加筛选器”窗口,再点击[添加]按钮,表示要增加一个筛选条件。
在“协议”右边的下拉列表中选择“ICMP”,在随后出现的“ICMP类型”和“ICMP编码”中均输入“255”,代表所有的ICMP类型及其编码。ICMP有许多不同的类型(Ping就是一种类型),每种类型也有许多不同的状态,用不同的“编码”来表示。因为其类型和编码很复杂,这里不再叙述。 点击[确定]按钮返回“输入筛选器”窗口,此时会发现“筛选器”列表中多了一项内容(如图2所示).点击[确定]按钮返回“本地连接”窗口,再点击[确定]按钮,此时筛选器就生效了,从其他计算机上Ping这台主机就不会成功了。
(2)用防火墙设置ICMP过滤 现在许多防火墙在默认情况下都启用了ICMP过滤的功能。如果没有启用,只要选中“防御ICMP攻击”、“防止别人用ping命令探测”就可以了.
实践:ping命令剖析与使用 功能:测试网络的连通性和可达性 工作机理:回应请求/应答ICMP报文对的具体实现 UNIX、Linux、Windows等网络操作系统都支持ping命令 不同网络操作系统对ping命令的实现稍有不同
Windows 2000的ping命令形式 ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] 目的IP地址
ping对目的地不可达的屏幕响应 1.目的网络不可达(Destination net unreachable) 没有到目的地的路由 原因:通常是“Reply from”中列出的路由器路由错误造成的 2.请求超时(Request timed out) 在指定的超时时间内没有对探测报文作出响应 原因:路由器关闭、目标主机关闭、没有路由返回到主机或响应的等待时间大于指定的超时时间等