已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
传输控制协议 TransmissionControlProtocol TCP和UDP都使用相同的网络层 IP 但TCP向应用层提供与UDP完全不同的服务 TCP提供一种面向连接的 可靠的字节流服务 UDP提供无连接 不可靠的数据报传输 面向字节流的TCP交付服务应用进程间发送的数据被看作是字节流 而不是如同在UDP中的那样 一个应用程序的输出就封装为一个数据报 这可带来两方面的优势 由于传送是面向字节流的 因而应用进程产生的数据可以被协议模块分割成最合适的大小来发送 或者通过缓存 组合成合适的数据块大小后发送 字节流的方式利用TCP协议把应用程序和网络传输相分割 这就为流传输服务提供了一个一致的接口 在不可靠的IP交付服务上获得可靠的TCP传输服务多数的可靠传输协议都是使用了一个基本的技术 确认重传这个技术的关键是要求接收方与源发送端进行通信 在收到数据后要发回一个确认 ACK 消息 而源端也只有在收到接收端的确认消息后在发送下一个数据 最简单的正常情况如下图所示 一种可能的出错情况是 发送的数据报文在传输过程中丢失或被破坏处理的办法是发送方在等待一个预定的时间后重发上次的数据报文 如下图所示 另一种出错的情况是 接收方发回的确认消息在传输过程中出现丢失或破坏 如果发送方在等待一个预定的时间没能收到确认消息 则重发上次的数据报文 但由于上次的数据接收方已收到 只是字相应的确认消息没能发回 这样 就出现了重复的数据报文为此的处理方法是为所有发送的数据编序号 这样接收端就可以通过检查报文是否具有相同的序号而确定是否出现了重复报文 重复的报文就可以直接丢弃 可以看到 上述的简单确认重传协议没有对网络带宽进行有效的利用 发送端和接受端都有较多的时间处于等待状态 为充分利用信道资源 在简单确认重传协议的基础上提出了滑动窗口协议 滑动窗口协议与简单确认重传的根本差别在于 发送端在收到接收方的确认消息之前 可以发送多个分组 滑动窗口的大小就是发送端在收到接收方的确认消息之前 可以发送的分组数目 窗口大小为1时 就是简单确认重传协议 详细内容参见数据链路层中的描述 动画演示 TCP使用滑动窗口协议可以解决两个重要问题 有效传输 通过减少等待时间可增加网络总吞吐量流量控制 可以通过变化发送方窗口大小以及接收方缓存大小来控制端到端的流量 TCP数据 segment 格式 TCP封装 TCP首部格式 源端口号和目的端口号 标识接收端和发送端的应用进程 这两个值加上IP首部中的源IP地址和目的IP地址唯一地确定一个TCP连接 见后面的连接部分 序号 所发送的数据的第一字节的序号 用以标识从TCP发端向TCP收端发送的数据字节流 序号计数达power 2 32 1后再回到零从新开始 确认序号 期望收到的下一个消息第一字节的序号 为确认的一端所期望接收的下一个序号 只有在标识位中的ACK比特设置为1时 此序号才有效 首部长度 以32比特为计算单位 窗口大小 滑动窗口协议中的窗口大小检校和 对整个TCP首部和TCP数据部分的检校 这个字段在TCP中是强制性的 一定由发端计算 并在收端进行验证 标识位有六个标识 以下为设置为1时的意义 为0时相反 紧急位 URG 紧急指针有效 紧急指针是一个正的偏移量 与序号字段的值相加等于该数据的最后一个字节的序号 确认位 ACK 表示确认序号字段有意义急迫位 PSH 表示请求接收端的传输实体尽快交付应用层重建位 RST 表示出现严重差错 必须释放连接重建同步位 SYN SYN 1 ACK 0表示连接请求消息SYN 1 ACK 1表示同意建立连接消息终止位 FIN 表示数据已发送完 要求释放连接 面向连接的TCP交付服务在定义TCP连接之前需要引入端点的概念 端点是一个 主机的IP地址 该主机上的TCP端口号 二元组 一个TCP连接由两个端点唯一定义 例如 18 26 0 36 1069 和 128 10 2 3 25 就定义了一个TCP连接 每个端点都可以同时参与多个连接 每个连接的建立需要双方端点的同意面向连接的服务意味着两个使用TCP的应用在彼此交换数据前必须先建立一个TCP连接 虚电路 虚电路连接类似电话 发送和接收数据的进程双方在进行通信之前要利用协议取得一个数据传输路径的授权 但又并不是如电话那样在之后的通信中独占一条物理线路 建立TCP连接 三次握手 主机1 主机2 接收 SYN 1发送 SYN 1seq y ACKx 1 收到 SYN ACK发送 ACKy 1 应用进程要求连接发送 SYN 1seq x 连接建立 正常连接情形 三步握手的过程 第一步 发起方发送一个消息 其SYN位被设置 第二步 响应方收到消息后 发回一个消息 SYN和ACK位均被设置 表示可以继续 第三步 确认响应 ACK位被设置 表示双方均同意连接 连接建立 三步握手的功能 保证双方都相互知道对方已准备好进行数据传输双方确认一个数据传输的初始序列号 如上图中 发送方的初始序列号为x 接收方的初始序列号为y 均被对方确认 释放TCP连接 修改的三次握手 主机1 主机2 接收 FIN 1发送 ACKx 1 同时通知应用进程 收到 FIN ACK发送 ACKy 1 应用进程释放连接 发送 FIN 1seq x 收到ACK连接释放 应用进程释放连接 发送 FIN 1seq yACKx 1 收到ACK 释放TCP连接过程 TCP是全双工的 一个连接具有两个方向的数据传输 因此连接释放需要分别释放两个方向 当一方的应用程序通知TCP已无数据需要发送时 TCP关闭此方向的连接 这时此方向只能接收对方的数据 而不能发送其它数据了 除了释放连接的消息 然后发送一个FIN位被设置的消息通知接收方没有数据发送 接收方响应确认 同时 接收方通知应用程序释放连接 发送回连接释放消息 最终释放整个连接 TCP性能虽然TCP中包含许多比其它运输层更为复杂的任务 但分析表明 其性能并没有因此而降低 几个最大吞吐量的理论计算值 或测得的 在以太网 10M 上 8兆在FDDI 100M 上 80 90兆两台GrayY MP计算机在800兆的高速通道上 781兆早期的TCP有一个较严重的性能问题 称为糊涂窗口综合症 SillyWindowSyndrome 问题描述 在TCP执行中 接收方在接收数据前要指定一个确定大小的缓存 发送方传输过来的数据首先存储在缓存中等待处理 而另一方面 TCP通过报头中的WINDOW字段来向对方报告缓存中的剩余字节 当发送方的数据发送速度较快时 缓冲区很快就用完 这时 应用程序每从缓冲区读取一个字节 TCP就发送一个WINDOW字段为1的消息 发送端之后就只能发送一个字节的小数据 这虽然实现了流量控制 同时也造成了一系列的小报文 小报文也可能由其它一些原因导致 如应用程序生成数据较慢 在小报文中 报头要比数据更大 而对于每一个报文TCP IP都需要做同样的计算 检校操作 这对于计算资源以及信道资源都是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论