学习TCPIP协议必须死记的东东_第1页
学习TCPIP协议必须死记的东东_第2页
学习TCPIP协议必须死记的东东_第3页
学习TCPIP协议必须死记的东东_第4页
学习TCPIP协议必须死记的东东_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

学习学习 TCP IP 协议必须死记的东东协议必须死记的东东 TCP IP 的通讯协议的通讯协议 这部分简要介绍一下 TCP IP 的内部结构 为讨论与互联网有关的安全问题打下基础 TC P IP 协议组之所以流行 部分原因是因为它可以用在各种各样的信道和底层协议 例如 T 1 和 X 25 以太网以及 RS 232 串行接口 之上 确切地说 TCP IP 协议是一组包括 TC P 协议和 IP 协议 UDP User Datagram Protocol 协议 ICMP Internet Control Me ssage Protocol 协议和其他一些协议的协议组 TCP IP 整体构架概述整体构架概述 TCP IP 协议并不完全符合 OSI 的七层参考模型 传统的开放式系统互连参考模型 是一 种通信协议的 7 层抽象的参考模型 其中每一层执行某一特定任务 该模型的目的是使各种 硬件在相同的层次上相互通信 这 7 层是 物理层 数据链路层 网路层 传输层 话路层 表示层和应用层 而 TCP IP 通讯协议采用了 4 层的层级结构 每一层都呼叫它的下一 层所提供的网络来完成自己的需求 这 4 层分别为 应用层 应用程序间沟通的层 如简单电子邮件传输 SMTP 文件传输协议 FTP 网络远程访问协议 Telnet 等 传输层 在此层中 它提供了节点间的数据传送服务 如传输控制协议 TCP 用户数 据报协议 UDP 等 TCP 和 UDP 给数据包加入传输数据并把它传输到下一层中 这一 层负责传送数据 并且确定数据已被送达并接收 互连网络层 负责提供基本的数据封包传送功能 让每一块数据包都能够到达目的主机 但不检查是否被正确接收 如网际协议 IP 网络接口层 对实际的网络媒体的管理 定义如何使用实际网络 如 Ethernet Serial Lin e 等 来传送数据 TCP IP 中的协议 以下简单介绍 TCP IP 中的协议都具备什么样的功能 都是如何工作的 1 IP 网际协议 IP 是 TCP IP 的心脏 也是网络层中最重要的协议 IP 层接收由更低层 网络接口层例如以太网设备驱动程序 发来的数据包 并把该数据包 发送到更高层 TCP 或 UDP 层 相反 IP 层也把从 TCP 或 UDP 层接收来的数据包传送 到更低层 IP 数据包是不可靠的 因为 IP 并没有做任何事情来确认数据包是按顺序发送 的或者没有被破坏 IP 数据包中含有发送它的主机的地址 源地址 和接收它的主机的地 址 目的地址 高层的 TCP 和 UDP 服务在接收数据包时 通常假设包中的源地址是有效的 也可以这样 说 IP 地址形成了许多服务的认证基础 这些服务相信数据包是从一个有效的主机发送来 的 IP 确认包含一个选项 叫作 IP source routing 可以用来指定一条源地址和目的地址 之间的直接路径 对于一些 TCP 和 UDP 的服务来说 使用了该选项的 IP 包好像是从路 径上的最后一个系统传递过来的 而不是来自于它的真实地点 这个选项是为了测试而存 在的 说明了它可以被用来欺骗系统来进行平常是被禁止的连接 那么 许多依靠 IP 源地 址做确认的服务将产生问题并且会被非法入侵 2 TCP 如果 IP 数据包中有已经封好的 TCP 数据包 那么 IP 将把它们向 上 传送到 TCP 层 TCP 将包排序并进行错误检查 同时实现虚电路间的连接 TCP 数据包中包括序号和确认 所 以未按照顺序收到的包可以被排序 而损坏的包可以被重传 TCP 将它的信息送到更高层的应用程序 例如 Telnet 的服务程序和客户程序 应用程序轮 流将信息送回 TCP 层 TCP 层便将它们向下传送到 IP 层 设备驱动程序和物理介质 最 后到接收方 面向连接的服务 例如 Telnet FTP rlogin X Windows 和 SMTP 需要高度的可靠性 所以它们使用了 TCP DNS 在某些情况下使用 TCP 发送和接收域名数据库 但使 用 UDP 传送有关单个主机的信息 3 UDP UDP 与 TCP 位于同一层 但对于数据包的顺序错误或重发 因此 UDP 不被应用于那些 使用虚电路的面向连接的服务 UDP 主要用于那些面向查询 应答的服务 例如 NFS 相对于 FTP 或 Telnet 这些服务需要交换的信息量较小 使用 UDP 的服务包括 NTP 网 落时间协议 和 DNS DNS 也使用 TCP 欺骗 UDP 包比欺骗 TCP 包更容易 因为 UDP 没有建立初始化连接 也可以称为握手 因为在两个系统间没有虚电路 也就是说 与 UDP 相关的服务面临着更大的危险 4 ICMP ICMP 与 IP 位于同一层 它被用来传送 IP 的的控制信息 它主要是用来提供有关通向目 的地址的路径信息 ICMP 的 Redirect 信息通知主机通向其他系统的更准确的路径 而 Un reachable 信息则指出路径有问题 另外 如果路径不可用了 ICMP 可以使 TCP 连接 体 面地 终止 PING 是最常用的基于 ICMP 的服务 5 TCP 和和 UDP 的端口结构的端口结构 TCP 和 UDP 服务通常有一个客户 服务器的关系 例如 一个 Telnet 服务进程开始在系统 上处于空闲状态 等待着连接 用户使用 Telnet 客户程序与服务进程建立一个连接 客户 程序向服务进程写入信息 服务进程读出信息并发出响应 客户程序读出响应并向用户报 告 因而 这个连接是双工的 可以用来进行读写 两个系统间的多重 Telnet 连接是如何相互确认并协调一致呢 TCP 或 UDP 连接唯一地使 用每个信息中的如下四项进行确认 源 IP 地址 发送包的 IP 地址 目的 IP 地址 接收包的 IP 地址 源端口 源系统上的连接的端口 目的端口 目的系统上的连接的端口 端口是一个软件结构 被客户程序或服务进程用来发送和接收信息 一个端口对应一个 16 比特的数 服务进程通常使用一个固定的端口 例如 SMTP 使用 25 Xwindows 使用 60 00 这些端口号是 广为人知 的 因为在建立与特定的主机或服务的连接时 需要这些地 址和目的地址进行通讯 相信大家都听说过 TCP IP 这个词 这个词好像无处不在 时时都会在你面前跳出来 那 TCP IP 到底是什么意思呢 TCP IP 其实是两个网络基础协议 IP 协议 TCP 协议名称的组合 下面我们分别来看看 这两个无处不在的协议 IP 协议协议 IP Internet Protocol 协议的英文名直译就是 因特网协议 从这个名称我们就可以 知道 IP 协议的重要性 在现实生活中 我们进行货物运输时都是把货物包装成一个个的纸 箱或者是集装箱之后才进行运输 在网络世界中各种信息也是通过类似的方式进行传输的 IP 协议规定了数据传输时的基本单元和格式 如果比作货物运输 IP 协议规定了货物打 包时的包装箱尺寸和包装的程序 除了这些以外 IP 协议还定义了数据包的递交办法和 路由选择 同样用货物运输做比喻 IP 协议规定了货物的运输方法和运输路线 TCP 协议协议 我们已经知道了 IP 协议很重要 IP 协议已经规定了数据传输的主要内容 那 TCP T ransmission Control Protocol 协议是做什么的呢 不知大家发现没有 在 IP 协议中定 义的传输是单向的 也就是说发出去的货物对方有没有收到我们是不知道的 就好像 8 毛 钱一份的平信一样 那对于重要的信件我们要寄挂号信怎么办呢 TCP 协议就是帮我们寄 挂号信 的 TCP 协议提供了可靠的面向对象的数据流传输服务的规则和约定 简单的说 在 TCP 模式中 对方发一个数据包给你 你要发一个确认数据包给对方 通过这种确认来 提供可靠性 TCP IP Transmission Control Protocol Internet Protocol 的简写 中文译名为传 输控制协议 互联网络协议 协议是 Internet 最基本的协议 简单地说 就是由底层的 IP 协议和 TCP 协议组成的 TCP IP 协议的开发工作始于 70 年代 是用于互联网的第一套 协议 1 1 TCP IP 参考模型参考模型 TCP IP 协议的开发研制人员将 Internet 分为五个层次 以便于理解 它也称为互联网分层 模型或互联网分层参考模型 如下表 应用层 第五层 传输层 第四层 互联网层 第三层 网络接口层 第二层 物理层 第一层 物理层 对应于网络的基本硬件 这也是 Internet 物理构成 即我们可以看得见的硬设备 如 PC 机 互连网服务器 网络设备等 必须对这些硬设备的电气特性作一个规范 使这些设备 都能够互相连接并兼容使用 网络接口层 网络接口层 它定义了将资料组成正确帧的规程和在网络中传输帧的规程 帧是指一串资 料 它是资料在网络中传输的单位 互联网层 互联网层 本层定义了互联网中传输的 信息包 格式 以及从一个用户通过一个或多个路 由器到最终目标的 信息包 转发机制 传输层 传输层 为两个用户进程之间建立 管理和拆除可靠而又有效的端到端连接 应用层 应用层 它定义了应用程序使用互联网的规程 1 2 网间协议网间协议 IP Internet 上使用的一个关键的底层协议是网际协议 通常称 IP 协议 我们利用一个 共同遵守的通信协议 从而使 Internet 成为一个允许连接不同类型的计算机和不同操作系 统的网络 要使两台计算机彼此之间进行通信 必须使两台计算机使用同一种 语言 通 信协议正像两台计算机交换信息所使用的共同语言 它规定了通信双方在通信中所应共同 遵守的约定 计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节 例如 每台计算机发 送的信息格式和含义 在什么情况下应发送规定的特殊信息 以及接收方的计算机应做出 哪些应答等等 网际协议 IP 协议提供了能适应各种各样网络硬件的灵活性 对底层网络硬件几乎没 有任何要求 任何一个网络只要可以从一个地点向另一个地点传送二进制数据 就可以使 用 IP 协议加入 Internet 了 如果希望能在 Internet 上进行交流和通信 则每台连上 Internet 的计算机都必须遵 守 IP 协议 为此使用 Internet 的每台计算机都必须运行 IP 软件 以便时刻准备发送或接 收信息 IP 协议对于网络通信有着重要的意义 网络中的计算机通过安装 IP 软件 使许许多多的 局域网络构成了一个庞大而又严密的通信系统 从而使 Internet 看起来好像是真实存在的 但实际上它是一种并不存在的虚拟网络 只不过是利用 IP 协议把全世界上所有愿意接入 Internet 的计算机局域网络连接起来 使得它们彼此之间都能够通信 1 3 传输控制协议传输控制协议 TCP 尽管计算机通过安装 IP 软件 从而保证了计算机之间可以发送和接收资料 但 IP 协议还 不能解决资料分组在传输过程中可能出现的问题 因此 若要解决可能出现的问题 连上 Internet 的计算机还需要安装 TCP 协议来提供可靠的并且无差错的通信服务 TCP 协议被称作一种端对端协议 为了实现这种端到端的可靠传输 TCP 协议必须规定传 输层的连接建立与拆除的方式 数据传输格式 确认的方式 目标应用进程的识别以及差 错控制和流量控制机制等 与所有网络协议类似 TCP 将自己所要实现的功能集中体现在 TCP 的协议数据单元中 1 4 TCP 连接的建立和拆除连接的建立和拆除 TCP 连接包括建立连接 数据传输和拆除连接三个过程 TCP 通过 TCP 端口提供连 接服务 最后通过连接服务来接收和发送数据 TCP 连接的申请 打开和关闭必须遵守 T CP 协议的规定 TCP 使用三次握手协议来建立连接 连接可以由任何一方发起 也可以 由双方同时发起 一旦一台主机上的 TCP 软件已经主动发起连接请求 运行在另一台主机 上的 TCP 软件就被动地等待握手 下面给出了三次握手建立 TCP 连接的简单示意图 1 建立连接建立连接 在源主机想和目的主机通信时 目的主机必须同意 否则 TCP 连接无法建立 为了 确保 TCP 连接的成功建立 TCP 采用了一种称为三次握手的方式 三次握手方式使得 序 号 确认号 系统能够正常工作 从而使它们的序号达成同步 如果三次握手成功 则连接 建立成功 可以开始传送数据信息 其三次握手分别为 第一步 源主机 A 的 TCP 向主机 B 发出连接请求报文段 其首部中的 SYN 同步 标 志位应置为 1 表示想与目标主机 B 进行通信 并发送一个同步序列号 X 例 SEQ 100 进行同步 表明在后面传送数据时的第一个数据字节的序号是 X 1 即 101 第二步 目标主机 B 的 TCP 收到连接请求报文段后 如同意 则发回确认 在确认 报中应将 ACK 位和 SYN 位置 1 确认号应为 X 1 图 15 5 中为 101 同时也为自己选择 一个序号 Y 第三步 源主机 A 的 TCP 收到目标主机 B 的确认后要向目标主机 B 给出确认 其 A CK 置 1 确认号为 Y 1 而自己的序号为 X 1 TCP 的标准规定 SYN 置 1 的报文段 要消耗掉一个序号 运行客户进程的源主机 A 的 TCP 通知上层应用进程 连接已经建立 当源主机 A 向 目标主机 B 发送第一个数据报文段时 其序号仍为 X 1 因为前一个确认报文段并不消 耗序号 当运行服务进程的目标主机 B 的 TCP 收到源主机 A 的确认后 也通知其上层应用进 程 连接已经建立 至此建立了一个全双工的连接 2 传送数据传送数据 位于 TCP IP 分层模型的较上层的应用程序传输数据流给 TCP TCP 接收到字节流并且 把它们分解成段 假如数据流不能被分成一段 那么每一个其它段都被分给一个序列号 在目的主机端 这个序列号用来把接收到的段重新排序成原来的数据流 1 主机 A 使用滑动窗口发送全部的四个段到主机 B 这是第一步 不幸的是 只有 段 l03 105 和 106 成功地到达了生机 B 2 因为段 103 和 104 是连续的 所以主机 B 返回一个确认给主机 A 通知主机 A 它只成功地接收到了第 103 段 在它的确认中主机 B 使用它期待得到的下一个序列号作为 确认 参看 通过给出序列号 104 3 主机 A 接到主机 B 的报文后 重新发送段 104 105 和 106 参看 虽然主机 B 已经成功地收到了段 105 和 106 但是根据协议规定 也必须重新发送 4 当主机 2 成功地收到这些段以后 主机 B 返回一个确认给主机 A 参看 并根 据序列号把它们重组成原来的数流 把它传输到高层应用程序 3 关闭连接关闭连接 一个 TCP 连接建立之后 即可发送数据 一旦数据发送结束 就需要关闭连接 由 于 TCP 连接是一个全双工的数据通道 一个连接的关闭必须由通信双方共同完成 当通信 的一方没有数据需要发送给对方时 可以使用 FIN 段向对方发送关闭连接请求 这时 它 虽然不再发送数据 但并不排斥在这个连接上继续接收数据 只有当通信的对方也递交了 关闭连接的请求后 这个 TCP 连接才会完全关闭 在关闭连接时 既可以由一方发起而另一方响应 也可以双方同时发起 无论怎样 收到关闭连接请求的一方必须使用 ACK 段给予确认 实际上 TCP 连接的关闭过程也是 一个三次握手的过程 在关闭连接之前 为了确保数据正确传递完毕 仍然需要采用 三次握手 的方式来关 闭连接 如图所示 其三次握手分别为 第一步 源主机 A 的应用进程先向其 TCP 发出连接释放请求 并且不再发送数据 T CP 通知对方要释放从 A 到 B 这个方向的连接 将发往主机 B 的 TCP 报文段首部的终止 比特 FIN 置 1 其序号 X 等于前面已传送过的数据的最后一个字节的序号加 1 第二步 目标主机 B 的 TCP 收到释放连接通知后即发出确认 其序号为 Y 确认号 为 X 1 同时通知高层应用进程 如图 15 7 中的箭头 这样 从 A 到 B 的连接就释放 了 连接处于半关闭状态 相当于主机 A 向主机 B 说 我已经没有数据要发送了 但如 果还发送数据 我仍接收 此后 主机 B 不再接收主机 A 发来的数据 但若主机 B 还有 一些数据要发送主机 A 则可以继续发送 主机 A 只要正确收到数据 仍应向主机 B 发送 确认 第三步 若主机 B 不再向主机 A 发送数据 其应用进程就通知 TCP 释放连接 如图 15 7 中的箭头 主机 B 发出的连接释放报文段必须将终止比特 FIN 和确认比特 ACK 置 1 并使其序号仍为 Y 但还必须重复上次已发送过的 ACK X 1 主机 A 必须对此发出 确认 将 ACK 置 1 ACK Y 1 而自己的序号是 X 1 这样才把从 B 到 A 的反方向的 连接释放掉 主机 A 的 TCP 再向其应用进程报告 整个连接已经全部释放 1 5 TCP 流量控制与拥塞控制流量控制与拥塞控制 TCP 初始连接一旦建立 两端就能够使用全双工通信交换数据段 并缓存所发送和 接收的报文段 缓存所发送的报文段是为了重传的需要 以防止报文段不能到达或不能按 顺序到达接收端引起的差错 1 流量控制流量控制 TCP 采用大小可变的滑动窗口机制实现流量控制功能 窗口的大小是字节 在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置发送窗口的数据的上限 在数据传输过程中 TCP 提供了一种基于滑动窗口协议的流量控制机制 用接收端接 收能力 缓冲区的容量 的大小来控制发送端发送的数据量 在建立连接时 通信双方使用 SYN 报文段或 ACK 报文段中的窗口字段捎带着各自的 接收窗口尺寸 即通知对方从而确定对方发送窗口的上限 在数据传输过程中 发送方按 接收方通知的窗口尺寸和序号发送一定量的数据 接收方根据接收缓冲区的使用情况动态 调整接收窗口尺寸 并在发送 TCP 报文段或确认段时稍带新的窗口尺寸和确认号通知发送 方 如下面的图所示 设主机 A 向主机 B 发送数据 双方确定的的窗口值是 400 设一 个报文段为 100 字节长 序号的初始值为 1 即 SEQ 1 在图 15 8 中 主机 B 进行了 三次流量控制 第一次将窗口减小为 300 字节 第二次将窗口又减为 200 字节 最后一次 减至零 即不允许对方再发送数据了 这种暂停状态将持续到主机 B 重新发出一个新的窗 口值为止 2 拥塞控制拥塞控制 采用滑动窗口机制还可对网络进行拥塞控制 将网络中的分组 TCP 报文段作为其数 据部分 数量维持在一定的数量之下 当超过该数值时 网络的性能会急剧恶化 传输层 的拥塞控制有慢开始 Slow Start 拥塞避免 Congestion Avoidance 快重传 Fas t Retransmit 和快恢复 Fast Recovery 四种算法 1 慢开始

温馨提示

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

评论

0/150

提交评论