网络协议介绍.doc_第1页
网络协议介绍.doc_第2页
网络协议介绍.doc_第3页
网络协议介绍.doc_第4页
网络协议介绍.doc_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

协议介绍协议介绍 1 1HTTP HTTP 超文本传输协议超文本传输协议 3 1 1HTTP 简介 3 1 2HTTP 术语 3 1 3总体操作 5 1 4内容编码 6 1 5传输编码 6 1 6请求 7 1 6 1方法 7 1 6 2请求 URL 8 1 7应答 9 2 2FTPFTP 文件传输协议 文件传输协议 9 2 1FTP 和 TCP 端口号 9 2 2FTP PORT模式和 FTP PASSIVE模式 10 2 2 1FTP Port 模式 10 2 2 2FTP Passive 模式 13 2 2 3用户名和口令的明文传输 17 3 3SMTPSMTP 简单邮件传输协议 简单邮件传输协议 18 3 1SMTP 的基本结构 18 3 1 1SMTP 的模型 19 3 1 2SMTP 的基本命令 20 3 2电子邮件的工作原理 22 3 3电子邮件的信头结构及分析 22 3 3 1邮件的结构 22 3 3 2邮件的信头 23 4 4POP3 POP3 邮局协议邮局协议 版本版本 3 3 31 4 1简介 31 4 2基本操作 31 4 3状态及操作 32 4 3 1 确认 状态 32 4 3 2 操作 状态 33 4 3 3 更新 状态 34 4 4可选的 POP3 命令 35 4 5POP3 命令总结 36 4 5 1基础的 POP3 命令 36 4 5 2可选的 POP3 命令 36 4 6POP3 会话实例 37 4 7消息格式 37 4 8安全性考虑 38 5 5MSNMSN 38 5 1概要介绍 38 5 2MSN 行为 39 5 2 1启动msn 39 5 2 2语音对话 40 5 2 3发送文件 41 5 2 4视频对话 42 5 2 5发送即时消息 42 5 2 6启动白板 43 5 2 7启用应用程序共享 43 5 3问题及解决方法 43 5 3 1发现问题 43 5 3 2解决方法 44 6TELNET 45 6 1TELNET 协议简介 45 6 2TELNET 的操作方式 46 6 2 1半双工 46 6 2 2一次一个字符方式 46 6 2 3一次一行方式 46 6 2 4行方式 47 6 3TELNET 命令 47 7 7MMSMMS 49 7 1流媒体简介 49 7 2流媒体技术的应用 50 7 3MMS 原理 51 7 3 1MMS 的通信过程 51 7 3 2MMS 报文解析 54 8 8RTSPRTSP REALTIMEREALTIME STREAMINGSTREAMING PROTOCOLPROTOCOL 实时流协议 实时流协议 54 8 1简介 57 8 1 1目的 57 8 1 2协议特点 57 8 1 3扩展RTSP 58 8 1 4操作模式 58 8 1 5RTSP状态 59 8 1 6与其他协议关系 59 8 2RTSP 信息 59 8 3实体 60 8 4连接 60 8 5方法定义 60 8 6流水线操作 61 9 9WEBMAILWEBMAIL 61 3 1 1 HTTP HTTP 超文本传输协议超文本传输协议 1 11 1 HTTPHTTP 简介简介 超文本传输协议 HTTP 是一种为分布式 合作式 多媒体信息系统服务 面向应用 层的协议 在 1990 年 WWW 全球信息刚刚起步的时候 HTTP 就得到了应用 HTTP 的第一个版 本叫做 HTTP 0 9 是一种为互联网原始数据传输服务的简单协议 由 RFC 1945 6 定义的 HTTP 1 0 进一步完善了这个协议 它允许消息以类似 MIME 的格式传送 包括有关数据传 输的维护信息和关于请求 应答的句法修正 但是 HTTP 1 0 没有充分考虑到分层代理 高速缓存的作用以及对稳定连接和虚拟主机的需求 并且随着不完善的进程应用的激增 HTTP 1 0 迫切需要一个新的版本 以便使两个通信应用程序能够确定彼此的真实性能 这里规定的协议叫做 HTTP 1 1 这个协议与 HTTP 1 0 相比 要求更为严格 以确保 各项功能得到可靠实现 实际的信息系统除了简单的检索外 要求更多的功能性 functionality 包括查找 search 前端更新 front end update 和注解 annotation HTTP 允许可扩充的方法集和报头集以指示请求的目的 47 它是建立在统一资源标识符 URI 3 提供的地址 URL 4 和名字 URN 上 20 以指出方法应用于哪个资源的 消息以类似于一种叫做多用途网络邮件扩展 MIME 7 的互联网邮件的格式传送 HTTP 也是用于用户代理之间及代理 网关到其他网络系统的通用通信协议 这样的网 络系统可能由 SMTP 16 NNTP 13 FTP 18 Gopher 2 和 WAIS 10 协议支持 这样 HTTP 允许不同的应用程序对资源进行基本的超媒体访问 1 21 2 HTTPHTTP 术语术语 本说明用到了若干术语 以表示 HTTP 通信中各参与者和对象扮演的不同角色 连接 Connection 为通信而在两个程序间建立的传输层虚拟电路 消息 Message HTTP 通信中的基本单元 它由一个结构化的八比特字节序列组成 与第 4 章定义的句 法相匹配 并通过连接得到传送 请求 Request 从客户机到服务器的请求 其首行包括利用资源的方式 区分资源的标识 以及协议的版 本号 应答 Response 接收和翻译一个请求信息后 服务器发出一个 HTTP 应答信息 资源 Resource 一种网络数据对象或服务 可以用第 3 2 节定义的 URI 描述 资源可以以多种表现方 式 4 例如多种语言 数据格式 大小和解决方案 或其他不同的途径获得 实体 Entity 作为请求或应答的有效负荷而传输的信息 一个实体包含报头形式的维护信息和消息体 形式的内容 表示方法 Representation 一个应答包含的实体是由内容协商决定的 内容协商 Content Negotiation 为请求服务时选择适当表示方法的机制 mechanism 任何应答里实体的表示方法都 是可协商的 包括出错应答 变量 Variant 在任何给定时刻 与一个资源对应的表示方法可以有一个或更多 每个表示方法称作一 个变量 使用变量这个术语并不必然意味着资源是由内容协商决定的 客户机 Client 为发送请求建立连接的程序 用户代理 User agent 初始化请求的客户端程序 常见的如浏览器 编辑器 蜘蛛 网络穿越机器人 或其他的 终端用户工具 服务器 Server 同意连接以便通过发回应答为请求提供服务的应用程序 任何给定的程序都有可以既做 客户端又做服务器 我们使用这些术语仅指特定连接中程序完成的任务 而不是指通常意义 上程序的性能 同样 任何服务器都可以基于每个请求的性质扮演原服务器 代理 网管 或者 隧道等诸角色之一 原服务器 Origin server 给定的资源驻留或创建的地方 代理服务器 Proxy 一个既做服务器又做客户端的中介程序 其用途是代表其他客户发送请求 请求在内部 得到服务 或者经过一定的翻译转至其他服务器 一个代理服务器必须能同时履行本说明中 客户端和服务器要求 透明代理 transparent proxy 是一种除了必需的验证和鉴定外 不修改请求或相应的代理 非透明代理 non transparent proxy 是一种修改请求或应 答以便为用户代理提供附加服务的代理 附加服务包括类注释服务 媒体类型转换 协议简化 或 者匿名滤除等 除非经明确指出 HTTP 代理要求对两种代理都适用 网关 gateway 为其他服务器充当中介的服务器 与代理服务器不同 网关接收请求 仿佛它就是被请求 资源所在的原服务器 提出请求的客户可能觉察不到它正在同网关通信 一个在两个连接之间充当盲目中继 blind relay 的中间程序 一旦有效 隧道便不再 被认为是 HTTP 通信的用户 虽然隧道可能已经被 HTTP 请求初始化了 当两端的中继连接都 关闭的时候 隧道不再存在 高速缓存 Cache 一个程序应答信息的本地存储和控制此信息存储 检索和删除的子系统 一个高速缓冲 存储器存储应答为的是减少对将来同样请求的应答时间和网络带宽消耗 任一客户或服务器 都可能包含一个高速缓存 但高速缓存不能应用于一个充当隧道的服务器 可缓存 Cacheable 如果一个高速缓存允许存储应答信息的一份拷贝运用于应答后继请求的拷贝 一个应答 就是可缓存的 用来确定 HTTP 应答的缓存能力 cacheability 的规则在 13 节中有定义 5 即使一个资源是可缓存的 也可能对一个高速缓存能否将缓存拷贝用于某特定请求存在附加 的约束 直接 first hand 如果一个应答直接到来并且没有缘于原服务器 或若干代理服务器的不必要的延时 那 么这个应答就是直接的 如果它的有效性已经被原服务器直接认证 那么这个应答也同样是 第一手的 明确终止时间 explicit expiration time 原服务器预算一个实体在无需进一步确认的情况下不再被高速缓存返回的时间 探索终止时间 heuristic expiration time 当没有外在的终止时间可利用时 由高速缓存所指定的终止时间 年龄 Age 一个应答的年龄是从它被发送 或被原服务器成功确认到现在的时间 保鲜寿命 Freshness lifetime 一个应答生成和过期之间的时间长度 保鲜 Fresh 如果一个应答的年龄还没有超过保鲜寿命 它就是保鲜的 陈旧 Stale 一个应答的年龄已经超过了它的保鲜寿命 就是陈旧的 语义透明 semantically transparent 当它的使用除了改善性能外既未影响请求客户机也未影响原服务器时 高速缓存对于 某特定的应答就是工作于语义透明方式了 当高速缓存语义透明时 客户恰好收到与原服务 器直接处理请求后得到的应答 除了逐段转接的报头部分 完全相同的应答 有效性判别器 Validator 一个用来查找一个高速缓存记录是否是一个实体的等效拷贝的协议元素 例如 一个实 体标记 entity tag 或最终更改时间 Last Modified time 上游 下游 upstream downstream 上游和下游描述了消息的流动 所有消息都从上游流到下游 向内 向外 inbound outbound 向内和向外指的是消息的请求和应答路径 向内 即 移向原服务器 向外 即 移向用 户代理 1 31 3 总体操作总体操作 HTTP 协议是一种请求 应答协议 与主机建立连接后 客户以请求方法 URI 和协议 版本的形式向服务器发送请求 继以类 MIME 信息 其中包括请求修改 客户信息和可能的 正文内容 服务器用包括消息协议版本和成功或错误代码的状态进行应答 继以包括服务 器信息 实体维护信息和可能的实体内容的类 MIME 消息 当一个或一个以上的中介在请求 应答链中出现的时候 会出现更复杂的情形 常见的 中介形式有三种 代理 网关和隧道 代理是一种转送工具 它接收绝对形式的 URI 请求 重写全部或部分消息 然后把重新格式化后的请求发送到 URI 确定的服务器上 网关是一 种接收工具 它充当其他服务器的上层 必要时将请求翻译为下层服务器的协议 隧道不 改变消息而充当两个连接之间的中继点 它用于通信需要穿过中介 如防火墙 甚至中介 不能理解信息内容的时候 6 实际上 目前万维网上有多种结构和配置的高速缓存和代理被实验或使用 这些系统 包括节省越洋带宽的全国代理层 广播或多点通信缓存接口 通过 CD ROM 分配子缓存数 据的机构 等等 HTTP 系统应用在宽频带连接的企业局域网中 通过 PDAs 的低耗无线连 接和断续连接的访问 HTTP1 1 的目标是支持各种各样的应用配置 引进协议结构满足那 些需要较高可靠性 可以排除故障或至少指示故障的网络应用的要求 HTTP 通信在通常发生在 TCP IP 连接上 默认端口是 TCP 80 不过其它端口也可以使用 在互联网或其他网络上 这并不妨碍 HTTP 应用在其他协议的顶端 http 仅仅期望可靠的 传输 任何提供这种保证的协议都可以使用 协议传输数据单元的 HTTP 1 1 请求和应答结 构的映象已经超出了本说明书的范围 在 http 1 0 中 大部分的实现为每个请求 应答交换使用了新连接 而 http 1 1 中 一个连接可以用于一个或更多请求 应答交换 1 41 4 内容编码内容编码 内容编码值表示一种已经或可以应用于实体的编码变换 内容编码主要用来允许文档 压缩 换句话说 有效的变换而不损失它的基本媒体类型的特性 也不丢失信息 经常地 实体以编码形式储存 直接传送 只能由接收者译码 content coding token 所有内容编码值都是不区分大小写的 HTTP 1 1 在接收译码和内容译码的头域里使用 内容编码值 尽管该值描述了内容编码 更重要的是它指出需要什么编码机制 来除去编码 互联网赋值机构 IANA 充当内容编码值标记的注册处 最初 注册表包含下列标记 gzip 压缩程序 一种由文件压缩程序 gzip GNU zip 如 RFC 1952 所描述 生成的编码格式 这种 格式是一种 32 位 CRC Lempel Ziv 编码 LZ77 译者注 CRC 循环冗余校验 compress 压缩 由通用 UNIX 文件压缩程序 compress 生成的编码格式 这种格式是一种具有可适应性 的 Lempel Ziv Welch 编码 对未来的编码来说 用程序名识别编码格式是不可取 令人气馁 的 在这里他们的用处是作为历史实践的代表而不是好的方案 为了同以前的 HTTP 实现相兼 容 应用应该将 x gzip 和 x compress 分别等同于 gzip 和 compress deflate 缩小 RFC 1950 31 定义的 zlib 格式与 RFC 1951 29 描述的 deflate 压缩机制的组合 Identity 标识 缺省 标识 编码 无论如何 不进行转化的应用 这种内容译码仅被用于接受译码报头 并且不能被用在内容编码报头 新的内容译码值的标记应该注册 为了允许客户和服务器间的互用性 内容译码运算的 规范需要实现一个可被公开利用并能独立实现的新值 并且与这节中内容译码定义的目的相 一致 1 51 5 传输编码传输编码 传输编码值被用来表示一个已经 能够 或可能需要应用于一个实体的编码转化 为的是 能够确保通过网络安全传输 这不同于内容译码 传输译码是消息的特性而不是原始实体的 7 特性 transfer coding chunked transfer extension transfer extension token parameter 参数采用属性 值对的形式 参数 属性 值 属性 标记 值 标记 引用 串 quoted string 所有传输译码值是不直观的 HTTP 1 1 在 TE 头域和传输译码头域运用传输译码 无论何时一个传输译码都被应用于一个消息体 传输译码的设置必须包括 大块 除非 消息被结束连接停止 当 大块 传输译码被应用时 它必须是应用于消息体的最后传输译码 这些规则允许接受从而确定消息的传输长度 传输译码与 MINE 7 的内容传输译码值相类似 它被定义能够实现传送服务器超过 7 位 的二进制数据的安全传输 不过 安全传输对纯 8 位传输协议有不同的焦点 在 HTTP 中 消息 体唯一不安全的特性是确定确切的体的长度的这个难点 或在共享传输上加密的要求 网络分配数字权威 IANA 担任了传输译码值标记注册处的角色 起初 注册包含如下标 记 大块 身份 gzip 压缩 和 缩小 新的传输译码值标记应和新的内容译码值标记以相同的方式注册 服务器接收到一个不能理解的传输译码实体时应返回 501 不实现 并且切断联系 服 务器不能向 HTTP 1 0 客户发送传输译码 1 61 6 请求请求 从客户机到服务器的请求 其首行包括利用资源的方式 区分资源的标识 以及协议的版本号 1 6 1 方法方法 方法标记指的是在请求 URI 所指定的资源上所实现的方式 这种方式是条件敏感的 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT 扩展方式 extension method 扩展方式 标记 资源允许的方法列表能由允许 Allow 报头域详细指定 既然被允许方法的设置可以动 态的改变 返回的应答码总是通知客户机当前方法是否被允许 如果原服务器知道方法 但 方法不被请求的资源允许 原服务器应当返回状态码 405 方法不允许 如果方法不被原 服务器承认和实现 原服务器应当返回状态码 501 没有实现 获取 GET 和报头 HEAD 方 法应当被所有的多功能服务器支持 8 1 6 1 11 6 1 1 GETGET 获取 获取 GET 方法重建信息的内容 正文的形式 由请求 URI 来确定 如果请求 URI 指数据产生的 过程 它是在应答中产生 被当作正文返回的数据 而不是过程的源文本 除非文本碰巧是过 程的输出 如果请求信息包括 If Modified Since If Unmodified Since If Match If None Match or If Range 报头域 GET 的语义将变成 条件 conditial GET 只有在 条件报头域 conditional header 所描述的环境下 条件 GET 方法请求实体被传输 条件 GET 方法用于减少不必要的网络使用 这种使用允许在没有多种请求或客户机已经获传输数 据的情况下刷新缓存实体 1 6 1 21 6 1 2 POSTPOST 张贴 张贴 在 POST 方法适用的请求中 原服务器接收附加在请求后的实体 该实体后作为请求行 里请求 URI 指定的资源的次要部分 POST 被设计为具有如下的功的统一的方法 已有资源的注解 在电子布告版 新闻组 邮箱或类似的主题组贴一些信息 提供数据块 像确认表单数据处理的结果 通过附加的操作扩充数据库 POST 方法实现的实际功能取决于服务器 且往往取决于请求 URI POST 实体属于 URI 就 像文档属于包括它的目录 新闻主题属于它所在的新闻组 或纪录属于数据库 POST 方法实现的操作不会作用于 URI 可以鉴识别的资源 在这种情况下 无论 2000 OK 还是 2004 无目录 是合适的应答状态 取决于应答是否包括描述结果的实体 如果原服务器上已经建立了资源 应答将是 201 建立 且包括描述请求状态 指向新的资源 的实体和一个本地报头 1 6 2 请求请求 URLURL 请求 URL 是一种全球统一的应用于资源请求的资源标识符 请求 URL 绝对 URL 绝对路径 主机 authotity 请求 URI 的四个选项在一般情况下是互相关联的 星号 表示请求不是应用于某种特 别的资源 而是服务器本身 只有当所用的方法不是资源必要的方法才是允许的 举例如下 选项 OPTIONS HTTP 1 1 当代理服务器产生请求时 绝对 URI 地址是不可缺少的 代理服务器被要求转寄来自 高速缓冲存储器有效的请求或服务 返回应答 注意到代理服务器可以把请求转发给另一台 代理服务器或直接转发给绝对 URI 地址说明的服务器 为了避免请求循环 代理服务器必 须识别所有的服务器名字 包括任何别名 本地变异名 数字 IP 地址 请求行举例如下 ET http www w3 org pub www TheProject html HTTP 1 1 为了在未来的 HTTP 版本的所有请求中转换绝对 URL 地址 所有基于 TTP 1 1 的服务 器必须接受绝对 URL 地址的组成 虽然基于 HTTP 1 1 的客户机将只产生请求发给代理服务 器 主机 authority 组成部分只是在连接方法 CONNECT 中用到 最通用形式的请求 I 用于标识在原服务器或网关上的资源 这种情况下 绝对 9 路径必须作为请求 传送 局域网地址 authority 必须输入主机报头 域 例如 希望直接得到原服务器顶层资源的客户机将在 主机的 端口 建立 连接发送以下行 GET pub WWW TheProject html HTTP 1 1 Host www w3 org 接下来是请求的其他部分 注意绝对路径不能是空的 假如没有初始的 URI 必须给 出 服务器根目录 1 71 7 应答应答 接收和翻译一个请求信息后 服务器发出一个 HTTP 应答信息 应答 状态行 常规报头 general header 应答报头 response header 实体报头 entity header CRLF CRLF 应答正文 2 2 FTPFTP 文件传输协议 文件传输协议 2 12 1 FTPFTP 和和 TCPTCP 端口号端口号 根据是使用 Port 模式还是 Passive 模式 FTP 使用不同的 TCP 端口号 在详细描述 FTP 前 我们来简单讨论一下 TCP 端口号的一些基本概念 TCP 使用端口号来标识所发送和 接收的应用 端口号可以帮助 TCP 来分离字节流并且帮相应字节传递给正确的应用程序 TCP 端口号可以是半永久的和暂时的 服务器端监听在半永久的端口上来让客户端访 问 客户端使用暂时的端口在本地标识一个对话 客户端端口只在使用 TCP 服务时候才存 在 而服务器端口只要服务器在运行就一直在监听 TCP 端口可以归为 3 类 1 众所周知的端口来标识在 TCP 上运行的标准服务 包括 FTP HTTP TELNET SMTP 等 这些端口号码范围为 0 1023 2 注册端口号用来标识那些已经向 IANA Internet Assigned Numbers Assigned NumbersAuthority 注册的应用 注册端口号为 1024 49151 3 私有端口号是非注册的并且可以动态地分配给任何应用 私有端口为 49152 65535 注册的端口号本来打算只给注册的应用使用 可近年来端口号已经陷入了到达极限的 困境 你可能会看到本来应该是给注册应用使用的注册端口被非注册应用用做暂时的端口 RFC1700 详细标注了众所周知的和注册的端口号 然而不幸的是 这个 RFC 文档自从 1994 年以来一直没有被更新 然后你仍可以从 IANA 得到一个及时更新的端口列表 详细 URL 为 http www iana org assignments port numbers 10 2 22 2 FTPFTP PortPort 模式和模式和 FTPFTP PassivePassive 模式模式 当你对一个 FTP 问题进行排错时候 你首先要问的一个问题是使用的是 port 模式的还 是 passive 模式 因为这两种行为迥异 所以这两种模式引起的问题也不同 在过去 客 户端缺省为 active port 模式 近来 由于 Port 模式的安全问题 许多客户端的 FTP 应 用缺省为 Passive 模式 2 2 1 FTPFTP PortPort 模式模式 Port 模式的 FTP 步骤如下 1 客户端发送一个 TCP SYN TCP 同步 包给服务器段众所周知的 FTP 控制端口 21 客 户端使用暂时的端口作为它的源端口 2 服务器端发送 SYN ACK 同步确认 包给客户端 源端口为 21 目的端口为客户端上 使用的暂时端口 3 客户端发送一个 ACK 确认 包 客户端使用这个连接来发送 FTP 命令 服务器端使 用这个连接来发送 FTP 应答 4 当用户请求一个列表 List 请求或者发起一个要求发送或者接受文件的请求 客户端 软件使用 PORT 命令 这个命令包含了一个暂时的端口 客户端希望服务器在打开一个数据 连接时候使用这个暂时端口 PORT 命令也包含了一个 IP 地址 这个 IP 地址通常是客户自 己的 IP 地址 而且 FTP 也支持第三方 third party 模式 第三方模式是客户端告诉服 务器端打开与另台主机的连接 5 服务器端发送一个 SYN 包给客户端的暂时端口 源端口为 20 暂时端口为客户端在 PORT 命令中发送给服务器端的暂时端口号 6 客户端以源端口为暂时端口 目的端口为 20 发送一个 SYN ACK 包 7 服务器端发送一个 ACK 包 8 发送数据的主机以这个连接来发送数据 数据以 TCP 段 注 segment 第 4 层的 PDU 形式发送 一些命令 如 STOR 表示客户端要发送数据 RETR 表示服务器段发送数据 这 些 TCP 段都需要对方进行 ACK 确认 注 因为 TCP 协议是一个面向连接的协议 9 当数据传输完成以后 发送数据的主机以一个 FIN 命令来结束数据连接 这个 FIN 命 令需要另一台主机以 ACK 确认 另一台主机也发送一个 FIN 命令 这个 FIN 命令同样需要 发送数据的主机以 ACK 确认 10 客户端能在控制连接上发送更多的命令 这可以打开和关闭另外的数据连接 有时候 客户端结束后 客户端以 FIN 命令来关闭一个控制连接 服务器端以 ACK 包来确认客户端 的 FIN 服务器同样也发送它的 FIN 客户端用 ACK 来确认 下图图示了 FTP PORT 模式前几步步骤 ftp Client ftp Server TCP 21 连接初始化 控制端口 SYN Port xxxx Port 21 TCP 11 SYN ACK Port xxxx Port 21 控制操作 用户列目录或传输文件 Port IP Port yyyy Port xxxx Port 21 Port Seccussful Port xxxx Port 21 TCP 20 连接初始化 数据端口 SYN Port yyyy Port 20 ACK Port yyyy Port 20 数据操作 数据传输 Data ACK Port yyyy Port 20 FTP Port 模式会给网络管理人员在许多方面带来很多问题 首先 在 PORT 命令消息 中的 IP 地址和端口号的编码不是直白地显示 另外 应用层的协议命令理论上不应该包含 网络地址信息 注 IP 地址 因为这打破了协议层的原则并且可能导致协同性和安全性 方面的问题 下图是 WildPackets EtherPeek 协议分析仪解码了 PORT 命令的地址参数 地址参数后 是端口号 见 PORT192 168 10 232 6 127 6 127 部分的第一个阿拉伯数字乘以 256 然 后加上第 2 个阿拉伯数字就得到端口号 所以客户端指定了端口号为 6 256 127 1663 IP Header Internet Protocol Datagram Version 4 Header Length 5 20 bytes 12 Time To Live 128 Protocol 6 TCP Transmission Control Protocol Header Checksum 0 xAA36 Source IP Address 192 168 0 1 DEMO Dest IP Address 192 168 0 3 VI No IP Options TCP Transport Control Protocol Source Port 2342 manage exec Destination Port 21 ftp Sequence Number 2435440100 Ack Number 9822605 Offset 5 20 bytes Reserved 000000 Flags 011000 0 No Urgent pointer 1 Ack 1 Push 0 No Reset 0 No SYN 0 No FIN Window 65150 Checksum 0 x832A Urgent Pointer 0 No TCP Options FTP Control File Transfer Protocol Line 1 PORT 192 168 0 1 9 39 FCS Frame Check Sequence FCS Calculated 0 xF4C04A4F 下图验证了服务器端的确从端口 20 打开到端口 1663 的 TCP 连接 TCP Transport Control Protocol Source Port 20 ftp data Destination Port 1663 Sequence Number 2578824336 Ack Number 0 Offset 6 24 bytes Reserved 000000 13 Flag s 000010 0 No Urgent pointer 0 No Ack 0 No Push 0 No Reset 1 SYN 0 No FIN Window 3731 Checksum 0 x8A4C Urgent Pointer 0 No TCP Options TCP Options Options Type 2 Maxinum Segment Size Length 4 MSS 1460 FCS Frame Check Sequence FCS Calculated 0 x5A1BD023 当使用 FTP 时候 网络中的防火墙必须要声明相应的端口 防火墙必须要跟踪 FTP 对 话然后检查 PORT 命令 防火墙必须要参与从服务器端到客户端在 PORT 命令中指定的端口 连接的建立过程 如果网络中使用了 NAT 注 网络地址翻译 那么 NAT 的网关同样也需要声明相应的 端口 网关需要把在 PORT 命令中指定的 IP 地址翻译成分配给客户的地址 然后重新计算 TCP 的 Checksum 如果网关没有正确地执行这个操作 FTP 就失败了 黑客可能会利用 FTP 支持第三方特性这一特点 在 PORT 命令中设置 IP 地址和端口号 参数来指定一台目标主机的地址和端口号 有时候称这种攻击为 FTP 反弹攻击 例如黑客 可以让一台 FTP 服务器不断地从它的源端口 20 发送 TCP SYN 包给一系列目的端口 让 FTP 服务器看起来正在进行端口扫描 目的主机不知道攻击来自黑客的主机 看起来攻击象是 来自 FTP 服务器 一些常用的 FTP 应用在 PORT 命令中设置地址为 0 0 0 0 这样做的意图 是让 FTP 服务器只需要与打开控制连接的相同客户进行数据连接 设置地址为 0 0 0 0 可 能会让防火墙不知所措 例如 CISCO PIX IOS6 0 以上版本的 PIX 注 CISCO 硬件防火 墙设备 6 0 以上版本为其修正了相关的 FTP 协议 要求数据连接的 IP 地址与已经存在的 控制连接的 IP 地址必须相同 这样做的原因是防止黑客用 PORT 命令来攻击别的机器 虽 然一些 FTP 应用设置 IP 地址为 0 0 0 0 不是有意图的攻击 但在 PIX 修正协议环境下的确 引起了一些问题 同时对其他不允许第三方模式和避免 FTP 反弹攻击的防火墙来说 这也 会引起相同的问题 2 2 2 FTPFTP PassivePassive 模式模式 14 下面的列表描述了 Passive 模式的 FTP 的步骤 步骤 1 到 3 和 Port 模式 FTP 相同 步 骤 9 到 11 同样与 Port 模式 FTP 最后三步相同 1 客户端发送一个 TCP SYN TCP 同步 包给服务器段众所周知的 FTP 控制端口 21 客户 端使用暂时的端口作为它的源端口 2 服务器端发送 SYN ACK 同步确认 包给客户端 源端口为 21 目的端口为客户端上使 用的暂时端口 3 客户端发送一个 ACK 确认 包 客户端使用这个连接来发送 FTP 命令 服务器端使用 这个连接来发送 FTP 应答 4 当用户请求一个列表 List 或者发送或接收文件时候 客户端软件发送 PASV 命令给服 务器端表明客户端希望进入 Passive 模式 5 服务器端进行应答 应答包括服务器的 IP 地址和一个暂时的端口 这个暂时的端口是 客户端在打开数据传输连接时应该使用的端口 6 客户端发送一个 SYN 包 源端口为客户端自己选择的一个暂时端口 目的端口为服务器 在 PASV 应答命令中指定的暂时端口号 7 服务器端发送 SYN ACK 包给客户端 目的端口为客户端自己选择的暂时端口 源端口为 PASV 应答中指定的暂时端口号 8 客户端发送一个 ACK 包 9 发送数据的主机以这个连接来发送数据 数据以 TCP 段 注 segment 第 4 层的 PDU 形式发送 一些命令 如 STOR 表示客户端要发送数据 RETR 表示服务器段发送数据 这 些 TCP 段都需要对方进行 ACK 确认 10 当数据传输完成以后 发送数据的主机以一个 FIN 命令来结束数据连接 这个 FIN 命 令需要另一台主机以 ACK 确认 另一台主机也发送一个 FIN 命令 这个 FIN 命令同样需要 发送数据的主机以 ACK 确认 11 客户端能在控制连接上发送更多的命令 这可以打开和关闭另外的数据连接 有时候 客户端结束后 客户端以 FIN 命令来关闭一个控制连接 服务器端以 ACK 包来确认客户端 的 FIN 服务器同样也发送它的 FIN 客户端用 ACK 来确认 下图图示了 Passive 模式 FTP 的开始几个步骤 ftp Client ftp Server TCP 21 连接初始化 控制端口 SYN Port xxxx Port 21 TCP SYN ACK Port xxxx Port 21 PASV 操作 被动连接数据端口初始化 PASV Port xxxx Port 21 PASV OK IP Port yyyy 15 Port xxxx Port yyyy SYN ACK Port zzzz Port yyyy 数据操作 数据传输 List Retr or Stor Port xxxx Port 21 Data ACK Port zzzz Port yyyy 一个 PASV 请求要求服务器在服务器选择的一个新的端口上接受数据连接 PASV 命令 没有任何参数 服务器端的回应只是一行显示服务器 IP 地址和服务器接受连接的 TCP 端口 号 下图显示了服务器对 PASV 命令的回应 服务器告诉客户端它在端口 5365 192 168 179 100 20 245 上进行监听 计算端口的方法是 20 256 245 5365 TCP Transport Control Protocol Source Port 21 ftp Destination Port 1249 Sequence Number 4239887193 Ack Number 36925357 Offset 5 20 bytes Reserved 000000 Flags 011000 0 No Urgent pointer 1 Ack 1 Push 0 No Reset 0 No SYN 0 No FIN Window 8760 Checksum 0 x3EAB Urgent Pointer 0 No TCP Options 16 FTP Control File Transfer Protocol Line 1 PASV 192 168 0 1 100 20 245 FCS Frame Check Sequence FCS Calculated 0 xBED4346D 当收到 PASV 命令的回应后 客户端打开一个 TCP 连接 源端口为一个暂时的端口 目的端 口为服务器提供的暂时端口 下图显示了客户端的 TCP 连接建立过程 正如上面所说 目的端口为 5365 TCP Transport Control Protocol Source Port 1250 Destination Port 5365 Sequence Number 36931503 Ack Number 0 Offset 7 28 bytes Reserved 000000 Flags 000010 0 No Urgent pointer 0 No Ack 0 No Push 0 No Reset 1 SYN 0 No FIN Window 8192 Checksum 0 x1A57 Urgent Pointer 0 No TCP Options TCP Options Options Type 2 Maxinum Segment Size Length 4 MSS 1460 FCS Frame Check Sequence FCS Calculated 0 x5A1BD023 大多数人认为在防火墙网络环境中 Passive 模式比 Port 模式的问题小 但我们注意到在 Passive 模式下 客户端打开一个暂时的目的端口连接 一些防火墙或者 CISCO 设备的访 17 问列表 ACL 可能会阻止这种连接 同样服务器的回应也是从一个暂时的端口到一个暂时的 端口 防火墙或者 CISCO 的访问列表也会阻止这种连接 在 CISCO 路由器上你可以用访问 列表关键字 established 来避免第二个问题 established 关键字告诉路由器允许带 ACK 字端的包通过 服务器端的 SYN ACK 包带有 ACK 字端 在新版本 PIX IOS 中也可以通 过 fixit 关键字建立针对 ftp 协议的深层状态检测过滤 其他大多数状态检测防火墙例如 LinuxNetfilters 也支持 ftp 协议的状态检测 进行准确的 PASV 动态端口过滤 2 2 3 用户名和口令的明文传输用户名和口令的明文传输 FTP 另一个声名狼藉的问题是它以明文方式发送用户名和口令 也就是不加密地发送 任何人只要在网络中合适的位置放置一个协议分析仪就可以看到用户名和口令 FTP 发送 的数据也是以明文方式传输 通过对 ftp 连接的监控和数据收集就可以收集和重现 ftp 的 数据传输并实现协议连接回放 事实上很多用户把相同的用户名和口令用在不同的应用中 这样这个问题可能看起来更为糟糕 如果黑客收集到 FTP 口令 他们也可能就得到了你在 线帐号或者其他一些机密数据的口令 下面是通过 tcpdump 一个著名的网络协议分析程序抓取的 ftp 的完整通讯过程 21 55 36 682402 IP 192 168 0 1 2323 192 168 0 3 21 S 2047626269 2047626269 0 win 65535 DF 21 55 36 682792 IP 192 168 0 3 21 192 168 0 1 2323 S 3917547047 3917547047 0 ack 2047626270 win 65535 DF 21 55 36 682855 IP 192 168 0 1 2323 192 168 0 3 21 ack 1 win 65535 DF 21 55 36 854899 IP 192 168 0 3 21 192 168 0 1 2323 P 1 115 114 ack 1 win 65535 DF 0 x0000 4500 009a d570 4000 8006 a398 c0a8 0003 E p 0 x0010 c0a8 0001 0015 0913 e981 0628 7a0c 4c1e z L 0 x0020 5018 ffff cd50 0000 3232 302d 5468 6973 P P 220 This 0 x0030 2073 6572 7665 7220 6973 2066 6f72 2070 server is for p 0 x0040 7269 7661 7465 2075 7365 206f 6e6c 790d rivate use only 0 x0050 0a32 2 21 55 37 016115 IP 192 168 0 1 2323 192 168 0 3 21 ack 115 win 65421 DF 0 x0000 4500 0028 b8d0 4000 8006 c0aa c0a8 0001 E 0 x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 069a z L 0 x0020 5010 ff8d 6f83 0000 P o 21 55 37 016471 IP 192 168 0 3 21 192 168 0 1 2323 P 115 154 39 ack 1 win 65535 DF 0 x0000 4500 004f d586 4000 8006 a3cd c0a8 0003 E O 0 x0010 c0a8 0001 0015 0913 e981 069a 7a0c 4c1e z L 18 0 x0020 5018 ffff 074f 0000 3232 3020 506c 6561 P O 220 Plea 0 x0030 7365 2065 6e74 6572 2079 6f75 7220 6c6f se enter your lo 0 x0040 6769 6e20 6e61 6d65 206e 6f77 2e0d 0a gin name now 21 55 37 022282 IP 192 168 0 1 2323 192 168 0 3 21 P 1 12 11 ack 154 win 65382 DF 0 x0000 4500 0033 b8d2 4000 8006 c09d c0a8 0001 E 3 0 x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 06c1 z L 0 x0020 5018 ff66 c4eb 0000 5553 4552 2065 6c6c P f USER ell 0 x0030 790d 0a y 21 55 37 059430 IP 192 168 0 3 21 192 168 0 1 2323 P 154 188 34 ack 12 win 65524 DF 0 x0000 4500 004a d58b 4000 8006 a3cd c0a8 0003 E J 0 x0010 c0a8 0001 0015 0913 e981 06c1 7a0c 4c29 z L 0 x0020 5018 fff4 b343 0000 3333 3120 5061 7373 P C 331 Pass 0 x0030 776f 7264 2072 6571 7569 7265 6420 666f word required fo 0 x0040 7220 656c 6c79 202e 0d0a r elly 21 55 37 060301 IP 192 168 0 1 2323 192 168 0 3 21 P 12

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论