




已阅读5页,还剩146页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
运输层 1 第3章运输层TransportLayer 计算机网络 自顶向下方法 原书第四版 陈鸣译 机械工业出版社 2010年ComputerNetworking ATopDownApproach 4rdedition JimKurose KeithRossAddison Wesley July2008 运输层 2 第3章 运输层 目标 理解运输层服务依据的原理 复用 分解可靠数据传输流量控制拥塞控制 学习因特网中的运输层协议 UDP 无连接传输TCP 面向连接传输TCP拥塞控制 运输层 3 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 4 运输服务和协议 为运行在不同主机上的应用进程之间提供逻辑通信运输协议运行在端系统中发送方 将应用报文划分为段 传向网络层接收方 将段重新装配为报文 传向应用层可供应用程序使用的运输协议不止一个因特网 TCP和UDP 运输层 5 运输层vs 网络层 网络层 主机间的逻辑通信运输层 进程间的逻辑通信依赖并强化网络层服务 家庭类比 12个孩子向12个孩子发信进程 孩子应用报文 信封中的信主机 家庭运输协议 Ann和Bill网络层协议 邮政服务 运输层 6 因特网运输层协议 可靠的 按序的交付 TCP 拥塞控制流量控制连接建立不可靠 不按序交付 UDP 尽力而为 IP的不提供不必要服务的扩展不可用的服务 时延保证带宽保证 运输层 7 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 8 Internet层的复用与分解 运输层 9 复用 分解 进程 套接字 将接收到的段分解交付给正确的套接字 从多个套接字收集数据 用首部封装数据 以后用于分解 运输层 10 分解工作过程 主机接收IP数据报每个数据报有源IP地址 目标IP地址每个数据报承载1个运输层的段每个段具有源 目的端口号 回想 对特定应用程序的周知端口号 主机使用IP地址 端口号将段定向到适当的套接字 源端口 目的端口 32bits 应用数据 报文 其他首部字段 TCP UDP段格式 运输层 11 无连接分解 生成具有端口号的套接字 DatagramSocketmySocket1 newDatagramSocket 99111 DatagramSocketmySocket2 newDatagramSocket 99222 UDP套接字由二元组标识 目的地IP地址 目的地端口号 当主机接收UDP段时 在段中检查目的地端口号将UDP段定向到具有该端口号的套接字具有不同源IP地址和 或源端口号的IP数据报定向到相同的套接字 运输层 12 无连接分解 续 DatagramSocketserverSocket newDatagramSocket 6428 SP提供了 返回地址 运输层 13 面向连接分解 TCP套接字由四元组标识 源IP地址源端口号目的IP地址目的端口号接收主机使用这四个值来将段定向到适当的套接字 服务器主机可能支持许多并行的TCP套接字 每个套接字由其自己的四元组标识Web服务器对每个连接的客户机具有不同的套接字非持久HTTP将为每个请求具有不同的套接字 运输层 14 面向连接分解 续 客户机IP B 服务器IP C D IP C S IP B 运输层 15 面向连接分解 多线程Web服务器 客户机IP B 服务器IP C D IP C S IP B P2 线程 进程 运输层 16 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 17 UDP 用户数据报协议 RFC768 没有不必要的 基本要素 互联网传输协议 尽力而为 服务 UDP段可能 丢包对应用程序交付失序无连接 在UDP发送方和接收方之间无握手每个UDP段的处理独立于其他段 为何要有UDP协议 无需创建连接 它将增加时延 简单 在发送方 接收方无连接状态段首部长度小无拥塞控制 UDP能够尽可能快地传输 运输层 18 UDP 其他 常用于流式多媒体应用丢包容忍速率敏感其他UDP应用DNSSNMP经UDP的可靠传输 在应用层增加可靠性应用程序使用特定的差错恢复 源端口 目的端口 32bits 应用数据 报文 UDP段格式 长度 检查和 UDP段的长度 包括首部 以字节计 运输层 19 UDP检查和 发送方 将段内容处理为16比特整数序列检查和 段内容的加法 反码和 发送方将检查和放入UDP检查和字段 接收方 计算接收的段的检查和核对计算的检查和是否等于检查和字段的值 NO 检测到差错YES 无差错检测到 虽然如此 还可能有差错吗 详情见后 目的 在传输的段中检测 差错 如比特翻转 运输层 20 互联网检查和例子 注意当数字作加法时 最高位进比特位的进位需要加到结果中例子 两个16 bit整数相加 运输层 21 unsignedshortChecksum constchar addr constintcount ComputeInternetChecksumfor count bytes beginningatlocation addr registerlongsum 0 intleft count while left 1 Thisistheinnerloop sum unsignedshort addr addr 2 16比特 2字节 字节地址left 2 字节长度减2 Addleft overbyte ifany if left 0 sum unsignedchar addr Fold32 bitsumto16bits while sum 16 sum sum 运输层 22 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 23 PrinciplesofReliabledatatransfer 在应用层 运输层 数据链路层非常重要是网络主题中的最重要的10个之一 不可靠信道的特点决定了可靠数据传输协议 rdt 的复杂性 运输层 24 PrinciplesofReliabledatatransfer 在应用层 运输层 数据链路层非常重要是网络主题中的最重要的10个之一 不可靠信道的特点决定了可靠数据传输协议 rdt 的复杂性 运输层 25 PrinciplesofReliabledatatransfer 在应用层 运输层 数据链路层非常重要是网络主题中的最重要的10个之一 不可靠信道的特点决定了可靠数据传输协议 rdt 的复杂性 运输层 26 可靠数据传输 基本概念 发送方 接收方 运输层 27 可靠数据传输 基本概念 我们将 逐步加强发送方 接收方的可靠数据传输协议 rdt 侧仅考虑单向数据传输但控制信息是双流动的使用有限状态机 FSM 来定义发送方和接收方 状态 当位于这个 状态时 下个状态惟一地由下个事件决定 运输层 28 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 29 Rdt1 0 经可靠信道的可靠传输 底层信道非常可靠无比特差错无分组丢失单独的发送方 接收方的FSM 发送方将数据发向底层信道接收方从底层信道读取数据 Waitforcallfromabove packet make pkt data udt send packet rdt send data extract packet data deliver data data Waitforcallfrombelow rdt rcv packet 发送方 接收方 运输层 30 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 31 Rdt2 0 具有比特差错的信道 底层信道可能翻转分级中的某些位校验和可以检测位错误thequestion 如何从错误中恢复 acknowledgements ACKs receiverexplicitlytellssenderthatpktreceivedOKnegativeacknowledgements NAKs receiverexplicitlytellssenderthatpkthaderrors发送方在收到NAK时重传分组 在rdt2 0中新的机制 beyondrdt1 0 errordetection错误检测接收者反馈 controlmsgs ACK NAK 从接收方 发送方 运输层 32 rdt2 0 FSM规格参数 等待来自上面的调用 sndpkt make pkt data checksum udt send sndpkt extract rcvpkt data deliver data data udt send ACK rdt rcv rcvpkt notcorrupt rcvpkt rdt rcv rcvpkt isACK rcvpkt udt send sndpkt rdt rcv rcvpkt isNAK rcvpkt 发送方 接收方 rdt send data L 运输层 33 rdt2 0 无差错时的操作 等待来自上面的调用 sndpkt make pkt data checksum udt send sndpkt extract rcvpkt data deliver data data udt send ACK rdt rcv rcvpkt notcorrupt rcvpkt rdt rcv rcvpkt isACK rcvpkt udt send sndpkt rdt rcv rcvpkt isNAK rcvpkt 等待来自下面的调用 rdt send data L 运输层 34 rdt2 0 有差错时的情况 等待来自上面的调用 sndpkt make pkt data checksum udt send sndpkt extract rcvpkt data deliver data data udt send ACK rdt rcv rcvpkt notcorrupt rcvpkt rdt rcv rcvpkt isACK rcvpkt udt send sndpkt rdt rcv rcvpkt isNAK rcvpkt 等待来自下面的调用 rdt send data L 运输层 35 rdt2 0有重大的缺陷 如果ACK NAK受损 将会出现何种情况 发送方不知道在接收方发生了什么情况 不能只是重传 重传可能导致冗余 处理冗余 发送方对每个分组增加序列号如果ACK NAK受损 发送方重传当前的分组接收方丢弃 不再向上交付 冗余分组 发送方发送一个分组 然后等待接收方响应 运输层 36 rdt2 1 发送方 处理受损的ACK NAK 等待来自上面的调用0 sndpkt make pkt 0 data checksum udt send sndpkt rdt send data udt send sndpkt rdt rcv rcvpkt corrupt rcvpkt isNAK rcvpkt sndpkt make pkt 1 data checksum udt send sndpkt rdt send data rdt rcv rcvpkt notcorrupt rcvpkt isACK rcvpkt udt send sndpkt rdt rcv rcvpkt corrupt rcvpkt isNAK rcvpkt rdt rcv rcvpkt notcorrupt rcvpkt isACK rcvpkt L L 运输层 37 rdt2 1 接收方 处理受损的ACK NAK sndpkt make pkt NAK chksum udt send sndpkt rdt rcv rcvpkt notcorrupt rcvpkt has seq0 rcvpkt rdt rcv rcvpkt notcorrupt rcvpkt has seq1 rcvpkt extract rcvpkt data deliver data data sndpkt make pkt ACK chksum udt send sndpkt rdt rcv rcvpkt notcorrupt rcvpkt has seq0 rcvpkt extract rcvpkt data deliver data data sndpkt make pkt ACK chksum udt send sndpkt rdt rcv rcvpkt corrupt rcvpkt sndpkt make pkt ACK chksum udt send sndpkt rdt rcv rcvpkt notcorrupt rcvpkt has seq1 rcvpkt rdt rcv rcvpkt corrupt rcvpkt sndpkt make pkt ACK chksum udt send sndpkt sndpkt make pkt NAK chksum udt send sndpkt 运输层 38 rdt2 1 讨论 发送方 序号seq 加入分组中两个序号seq s 0 1 将够用 为什么 必须检查收到的ACK NAK是否受损状态增加一倍状态必须 记住 是否 当前的 分组具有0或1序号 接收方 必须检查接收到的分组是否是冗余的状态指示0或1是否是所期待的分组序号seq 注意 接收方不能知道是否它的最后的ACK NAK在发送方已经接收OK 运输层 39 rdt2 2 一种无NAK的协议 与rdt2 1一样的功能 仅使用ACK代替NAK 接收方对最后正确接收的分组发送ACK接收方必须明确地包括被确认分组的序号在发送方冗余的ACK导致如同NAK相同的动作 重传当前分组 解决无序分组的问题 使用应答序号 运输层 40 rdt2 2 发送方 接收方片段 sndpkt make pkt 0 data checksum udt send sndpkt rdt send data udt send sndpkt rdt rcv rcvpkt corrupt rcvpkt isACK rcvpkt 1 rdt rcv rcvpkt notcorrupt rcvpkt isACK rcvpkt 0 发送方FSM片段 rdt rcv rcvpkt notcorrupt rcvpkt has seq1 rcvpkt extract rcvpkt data deliver data data sndpkt make pkt ACK1 chksum udt send sndpkt rdt rcv rcvpkt corrupt rcvpkt has seq1 rcvpkt udt send sndpkt 接收方FSM片段 L 运输层 41 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 42 rdt3 0 具有差错和丢包的信道 新假设 下面的信道也能丢失分组 数据或ACK 检查和 序号 重传将是有帮助的 但不充分 方法 发送方等待ACK一段 合理的 时间如在这段时间没有收到ACK则重传如果分组 或ACK 只是延迟 没有丢失 重传将是冗余的 但序号的使用已经处理了该情况接收方必须定义被确认的分组序号需要倒计时定时器 运输层 43 rdt3 0发送方 sndpkt make pkt 0 data checksum udt send sndpkt start timer rdt send data rdt rcv rcvpkt corrupt rcvpkt isACK rcvpkt 1 sndpkt make pkt 1 data checksum udt send sndpkt start timer rdt send data rdt rcv rcvpkt notcorrupt rcvpkt isACK rcvpkt 0 rdt rcv rcvpkt corrupt rcvpkt isACK rcvpkt 0 rdt rcv rcvpkt notcorrupt rcvpkt isACK rcvpkt 1 stop timer stop timer udt send sndpkt start timer timeout udt send sndpkt start timer timeout rdt rcv rcvpkt L rdt rcv rcvpkt L L L 错误失序 超时重发 运输层 44 运输层 44 Rdt3 0 接收方 rdt rcv rcvpkt notcorrupt rcvpkt has seq1 rcvpkt extract rcvpkt data deliver data data sndpkt make pkt ACK1 chksum udt send sndpkt rdt rcv rcvpkt corrupt rcvpkt has seq1 rcvpkt udt send sndpkt 接收方FSM片段 rdt rcv rcvpkt notcorrupt rcvpkt has seq0 rcvpkt extract rcvpkt data deliver data data sndpkt make pkt ACK0 chksum udt send sndpkt rdt rcv rcvpkt corrupt rcvpkt has seq0 rcvpkt udt send sndpkt 运输层 45 rdt3 0运行情况 无丢包时的运行 分组丢失 发送方 发送方 接收方 接收方 运输层 46 rdt3 0运行情况 ACK丢失 过早超时 发送方 发送方 接收方 接收方 运输层 47 rdt3 0的性能 rdt3 0能够工作 但性能不太好例子 1Gbps链路 15ms端到端传播时延 1KB分组 T transmit 8kb pkt 10 9b sec 8microsec Usender 利用率 发送方用于发送时间的比率每30msec1KB分组 经1Gbps链路有267kb sec吞吐量网络协议限制了物理资源的使用 L packetlengthinbits R transmissionrate bps 运输层 48 rdt3 0 停等协议的运行 传输分组的第一个比特 t 0 发送方 接收方 RTT 传输分组的最后一个比特 t L R 分组第一个比特到达 传输最后一个比特到达 发送ACK ACK到达 发送下一个分组 t RTT L R 运输层 49 流水线协议 增加利用率 传输第一个分组比特 t 0 发送者 接收者 RTT 传输最后一个比特 t L R 第一个分组比特到达 分组最后一个比特到达 发送ACK ACK到达 发送下一个分组 t RTT L R 第二个分组最后比特到达 发送ACK 第三个分组最后比特到达 发送ACK 利用率增加3倍 运输层 50 第3章要点 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 运输层 51 rdt3 0 停等协议的运行 传输分组的第一个比特 t 0 发送方 接收方 RTT 传输分组的最后一个比特 t L R 分组第一个比特到达 传输最后一个比特到达 发送ACK ACK到达 发送下一个分组 t RTT L R 运输层 52 流水线协议 增加利用率 传输第一个分组比特 t 0 发送者 接收者 RTT 传输最后一个比特 t L R 第一个分组比特到达 分组最后一个比特到达 发送ACK ACK到达 发送下一个分组 t RTT L R 第二个分组最后比特到达 发送ACK 第三个分组最后比特到达 发送ACK 利用率增加3倍 运输层 53 可靠数据传输协议设计 目标 设计可靠的 端到端数据传输协议连接的描述 端到端之间实现逻辑连接 使用状态变量描述Rdt1 0 底层信道非常可靠 不需要添加状态变量Rdt2 0 ACK Seq seq 0 1Rdt3 0 计时定时器Rdt3 0是简单的停等协议 能够实现可靠数据传输 但性能不太好 提高时间的利用率 固定时间内发送多个数据报流水线 窗口 运输层 54 流水线协议 流水线 发送方允许发送多个 传输中的 还没有应答的报文段序号的范围必须增加发送方和 或接收方设有缓冲 流水线协议的两种形式 回退N帧法 go Back N 选择性重传 S R 运输层 55 Go Back N 发送方 停等协议数据报使用0 1序号 使用1比特就可以表示当前允许发送N个连续的没有应答分组 窗口范围大小为N在分组首部需要K比特 2k N 发送窗口位置 窗口 16 1 3 4 5 6 2 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 全部数据报序号 待发送数据字节序号 已发送并收到确认 不允许发送 TCP协议起始序号seq并不为1 随机产生 运输层 56 窗口状态 只有窗口内的数据报才可以被发送send base指针当前窗口范围起始序号位置nextseqnum指针当前窗口内可以被发送数据报序号位置接收到确认ACK n 确认 send base n 所有的 包括序号n 的分组 累计ACK 并滑动窗口位置可能收到重复的ACKs 见接收方 只有一个计时器 每个传输中的分组的共用该一个计时器 timeout n 若超时 重传窗口中的分组 n nextseqnum 1 所有分组 发送方 Go back N 运输层 57 GBN 发送方扩展的FSM 三个事件 1 上层的调用2 收到ACK3 超时事件 start timerudt send sndpkt base udt send sndpkt base 1 udt send sndpkt nextseqnum 1 timeout rdt send data if nextseqnum base N sndpkt nextseqnum make pkt nextseqnum data chksum udt send sndpkt nextseqnum if base nextseqnum start timernextseqnum elserefuse data data base getacknum rcvpkt 1If base nextseqnum stop timerelsestart timer rdt rcv rcvpkt notcorrupt rcvpkt base 0nextseqnum 0N 2k rdt rcv rcvpkt corrupt rcvpkt L L 1 上层的调用 2 超时事件 3 收到ACK 0 初始化 4 其它 运输层 58 Expectedreceive 接收方 Expectedreceive序号是接收方当前期望接受的数据报窗口大小N 1 存储期望接受的数据报序号值接收的分组正确 是按序分组 等于expectedseqnum 发送ACK 滑动接收窗口位置仅需要记住期望的序号值 expectedseqnum 对正确的失序分组 丢弃 不缓存 没有接收缓冲区 重新确认最近按序接收的分组 重传ACK 可能产生冗余的ACKs 运输层 59 GBN 接收方扩展FSM extract rcvpkt data deliver data data sndpkt make pkt expectedseqnum ACK chksum udt send sndpkt expectedseqnum Expectedseqnum 0Sndpkt make pkt expectedseqnum ACK chksum L 等待 Expectedreceive 1 正确接收 2 其它 0 初始化 运输层 60 GBN操作 发送方 接收方 运输层 61 选择性重传 SelectiveRepeat GBN改善了信道效率 但仍然存在重传多余问题 接收方分别确认所有正确接收的报文段需要缓存分组 以便最后按序交付给给上层 发送方只需要重传没有收到ACK的分组发送方定时器对每个没有确认的分组计时 发送窗口N个连续的序号 也需要限制已发送但尚未应答分组的序号 运输层 62 选择性重传 发送方 接收方窗口 a 发送方看到的序号 b 接收方看到的序号 已经确认 可用 还未发送 发送 还未确认 不可用 可接受 窗口内 失序 已缓存 但未被确认可接受 窗口内 期待 还未收到 不可用 窗口长度N 窗口长度N 运输层 63 选择性重传 上层传来数据 如果数据序号在发送窗口内 则打包发送 否则将数据缓存或返还给上层timeout n 每个分组拥有自己的定时器 重传分组k时 重启其计时器ACK n 在 sendbase sendbase N 标记分组n已经收到如果n是最小未收到应答的分组 向前滑动窗口base指针到下一个未确认序号 分组n在 rcvbase rcvbase N 1 发送ACK n 失序 缓存按序 交付 也交付所有缓存的按序分组 向前滑动窗口到下一个未收到报文段的序号分组n在 rcvbase N rcvbase 1 即使已正确接收过该分组 但还是需要再次发送ACK n 其他 忽略 运输层 64 选择重传的操作 运输层 65 选择重传 困难的问题 例子 序号 0 1 2 3窗口长度 3接收方 在 a 和 b 两种情况下接收方没有发现差别 在 a 中不正确地将冗余分组当作新分组 但在 b 中 对于接收方而言 收到分组和 a 中是不同的 是一个新的分组问题 序号长度与窗口长度有什么关系 回答 窗口长度小于等于序号空间的一半 运输层 66 窗口大小 如果数据序号有mbits Go back NSendingwindow 2m 1Receivingwindowsize 1bit 不需要 SelectiverepeatReceivingwindow Sendingwindow 2m 1 运输层 67 第3章要点 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 运输层 68 TCP概述RFCs 793 1122 1323 2018 2581 全双工数据 同一连接上的双向数据流MSS 最大报文段长度MTU 最大传输单元面向连接 在进行数据交换前 初始化发送方与接收方状态 进行握手 交换控制信息 流量控制 发送方不能淹没接收方拥塞控制 抑止发送方速率来防止过分占用网络资源 点到点 一个发送方 一个接收方连接状态与端系统有关 不为路由器所知可靠 有序的字节流 没有 报文边界 流水线 TCP拥塞和流量控制设置滑动窗口协议发送和接收缓冲区 运输层 69 TCP报文段结构 URG 紧急数据 一般不用 ACK ACK序号有效 PSH 立即提交数据 一般不用 RST SYN FIN 连接建立 建立和拆连 接收方允许的字节数 对数据字节计数 并非对报文段计数 因特网检查和 同UDP一样 运输层 70 TCP数据段头及说明 端口 每个端口对应一个应用程序序号 发送的字节序号确认号 接收到的字节序号段头长度 段头中包含多少个32位字 运输层 71 TCP数据段头及说明 续 保留 以备扩展之用码位 URG 紧急指针有效ACK 确认号有效PSH 请求接收方 数据一到 立即送往应用程序RST 复位由于主机崩溃或其他原因而出现的错误的连接SYN 用于建立连接FIN 用于断开连接窗口 接收方窗口大小 运输层 72 TCP数据段头及说明 续 校验和 包括报头 数据和伪段头紧急指针 当前序号到紧急位置的偏移量选项字段 用于提供一种增加额外设置的方法 如连接建立时 双方说明最大的负载能力数据 真正要传输的数据 包括在TCP校验和中的伪头 运输层 73 常用的选项字段 最大数据段长度MSS目的站可接收的最大的数据段长度 这个值在0到65535之间 默认值是536字节窗口扩大因子n n 14 RFC1323 窗口的大小 首部中定义的窗口大小 2窗口扩大因子选择性重发协议 RFC1106 引入了NAK机制 运输层 74 运输层 75 TCP序号和确认号 序号 报文段中第1个数据字节在字节流中的位置编号确认号 期望从对方收到下一个字节的序号累计应答问题 接收方如何处理失序报文段 回答 TCP规范没有说明 由实现者自行选择实现 抛弃 缓存 主机A 主机B Seq 42 ACK 79 data C Seq 79 ACK 43 data C Seq 43 ACK 80 用户键入 C 主机对接收到的 C 回显给出确认 主机对收到的 C 给出确认 回显 C 简单的telnet情况 捎带确认 运输层 76 TCP往返时延 RTT 的估计与超时 问题 如何设置TCP超时值 应大于RTT但RTT是变化的太短 过早超时不必要的重传太长 对报文段的丢失响应太慢 问题 如何估计RTT 样本时间SampleRTT 从发送报文段到接收到ACK的测量时间忽略重传SampleRTT会变化 希望估计的RTT 较平滑 平均最近的测量值 并不仅仅是当前SampleRTT 运输层 77 EstimatedRTT 1 EstimatedRTT SampleRTT 指数加权移动平均 Exponentialweightedmovingaverage 过去的样本指数级衰减来产生影响典型值 0 125 TCP往返时延估计与超时 续 运输层 78 RTT估计的例子 运输层 79 TCP往返时延估计与超时 续 设置超时间隔EstimtedRTT加 安全余量 EstimatedRTT大变化 更大的安全余量首先估算EstimatedRTT与SampleRTT之间差值有多大 TimeoutInterval EstimatedRTT 4 DevRTT DevRTT 1 DevRTT SampleRTT EstimatedRTT 典型地 0 25 然后估算超时值 运输层 80 第3章要点 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 运输层 81 TCP可靠数据传输 TCP在IP不可靠服务的基础上创建可靠数据传输服务流水线发送报文段累计确认TCP使用单个重传计时器 重传被下列事件触发 超时事件重复ACK先考虑简化的TCP发送方 忽略重复ACK忽略流量控制 拥塞控制 运输层 82 TCP发送方事件 1 从应用层接收数据 根据序号创建报文段序号是报文段中第一个数据字节的数据流编号如果未启动 启动计时器 考虑计时器用于最早的没有确认的报文段 超时间隔 TimeOutInterval EstimatedRTT 4 DevRTT 2 超时 重传导致超时的报文段重新启动计时器3 收到确认 如果确认了先前未被确认的报文段更新被确认的报文段序号如果还有未被确认的报文段 重新启动计时器 运输层 83 TCP发送方 简化的 NextSeqNum InitialSeqNumSendBase InitialSeqNumloop forever switch event event datareceivedfromapplicationabovecreateTCPsegmentwithsequencenumberNextSeqNumif timercurrentlynotrunning starttimerpasssegmenttoIPNextSeqNum NextSeqNum length data event timertimeoutretransmitnot yet acknowledgedsegmentwithsmallestsequencenumberystarttimerevent ACKreceived withACKfieldvalueofyif y SendBase 累计确认到Y SendBase yif therearecurrentlynot yet acknowledgedsegments starttimer endofloopforever 注释 SendBase 1 上次累计的已确认字节 运输层 84 TCP 重传的情况 主机A Seq 100 20bytesdata ACK 100 过早超时的情况 主机B Seq 92 8bytesdata ACK 120 Seq 92 8bytesdata ACK 120 Seq 92超时 SendBase 100 SendBase 120 SendBase 120 Sendbase 100 运输层 85 TCP重传情况 续 主机A Seq 92 8bytesdata ACK 100 丢包 超时 累计确认情况 主机B X Seq 100 20bytesdata ACK 120 时间 SendBase 120 运输层 86 产生TCPACK的建议 RFC1122 RFC2581 接收方事件所期望序号的报文段按序到达 所有在期望序号及以前的数据都已经被确认有期望序号的报文段按序到达 另一个按序报文段等待发送ACK比期望序号大的失序报文段到达 检测出数据流中的间隔 部分或者完全填充已接收到数据间隔的报文段到达 TCP接收方行为延迟的ACK 对另一个按序报文段的到达最多等待500ms 如果下一个按序报文段在这个时间间隔内没有到达 则发送一个ACK立即发送单个累积ACK 以确认两个按序报文段立即发送冗余ACK 指明下一个期待字节的序号 也就是间隔的低端字节序号 倘若该报文段起始于间隔的低端 则立即发送ACK 运输层 87 快速重传 超时间隔常常相对较长 重传丢失报文段以前有长时延通过冗余ACK 检测丢失的报文段发送方经常一个接一个的发送报文段如果报文段丢失 将会收到很多重复ACK 如果对相同数据 发送方收到3个ACK 假定被确认的报文段以后的报文段丢失了 快速重传 在定时器超时之前重传 运输层 88 Fastretransmitalgorithm aduplicateACKforalreadyACKedsegment 运输层 89 事件 收到ACK ACK域的值为yif y SendBase SendBase yif 当前还有没有确认的报文段 启动定时器 else 值为y的重复确认的次数加1if 值为y的重复确认的计数 3 重传序号位y的报文段 快速重传算法 对已经确认的报文段收到一个重复ACK 快速重传 运输层 90 第3章要点 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 运输层 91 TCP流量控制 TCP连接的接收方有1个接收缓冲区 匹配速度服务 发送速率需要匹配接收方应用程序的提取速率 应用进程可能从接收缓冲区读数据缓慢 运输层 92 TCP流控 工作原理 假设TCP接收方丢弃失序的报文段 缓冲区的剩余空间 RcvWindow RcvBuffer LastByteRcvd LastByteRead 接收方在报文段接收窗口字段中通告其接收缓冲区的剩余空间发送方要限制未确认的数据不超过RcvWindowLastByteSent LastByteAcked 或 RcvWindow保证接收缓冲区不溢出 运输层 93 流量控制和缓冲策略举例 B没有收到m2 A没有收到ACK可能导致死锁 表示上交了1个 TnbmP509Fig 6 16动态缓冲区的分配 运输层 94 第3章要点 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 运输层 95 TCP连接管理 回想 TCP发送方与接收方在交换报文段前要先建连接初始化TCP变量 序号缓冲区和流控信息 如RcvWindow 客户机 连接的发起方SocketclientSocket newSocket hostname portnumber 服务器 接受客户请求SocketconnectionSocket welcomeSocket accept 运输层 96 TCP连接管理 三次握手 步骤1 客户机向服务器发送TCPSYN报文段指定初始序号没有数据步骤2 服务器收到SYN报文段 用SYNACK报文段回复服务器为该连接分配缓冲区和变量指定服务器初始序号步骤3 客户机接收到SYNACK 用ACK报文段回复 可能包含数据 运输层 97 ACK 1 ACK 1 运输层 98 正常的连接建立过程 正常连接的三次握手过程 采用三次握手方法建立的正常情况 主机1发出的连接请求序号为x seq x 主机2应答接受主机1的连接请求 并声明自己的序列号为y seq y ACK x 主机1收到确认后发送第一个数据TPDU并确认主机2的序列号 seq x ACK y 至此 整个连接建立过程正常结束 数据传输已正式开始 CR ConnectionRequest 连接请求 ACC ConnectionAccepted 接受连接 运输层 99 非正常的连接建立过程1 出现延迟的重复TPDU时三次握手的工作过程 来自一个已经释放连接的主机1的延时重复的连接请求 该TPDU在主机1毫不知晓的情况下到达主机2 主机2通过向主机1发送一个接受连接请求的TPDU来响应该TPDU 并声明自己的序号为y seq y ACK x 主机1收到这个确认后感到莫名其妙并当即拒绝 主机2收到了主机1的拒绝才意识到自己受到了延时的重复TPDU的欺骗并放弃该连接 据此 延时的重复请求将不会产生不良后果 采用三次握手建立的第二种情况 运输层 100 非正常的连接建立过程2 子网中同时有作废的CR和ACC的情况 与上例一样 主机2收到了一个延时的CR并做了确认应答 在这里 关键是要认识到主机2已经声明使用y作为从主机2到主机1进行数据传输的初始序号 因此主机2十分清楚在正常情况下 主机1的数据传输应捎带对y确认的TPDU 于是 当第二个延时的TPDU到达主机2时 主机2根据它确认的是序号z而不是y知道这也是一个过时的重复TPDU 因此也不会无故建立无人要求的连接 采用三次握手建立的第三种情况 运输层 101 TCP连接管理 续 关闭连接 客户关闭套接字 clientSocket close 步骤1 客户机向服务器发送TCPFIN控制报文段步骤2 服务器收到FIN 用ACK回答 关闭连接 发送FIN步骤3 客户机收到FIN 用ACK回答进入 超时等待 将对接收到的FIN进行确认步骤4 服务器接收ACK 连接关闭注意 少许修改 可以处理并发的FIN 运输层 102 cont 运输层 103 最后的确认TPDU丢失的情况 对称释放2 最后的确认TPDU丢失 主机1在结束数据传输后决定释放连接 于是发送DR并启动计时器 主机2在收到主机1的DR后同意释放连接 也发送DR并启动计时器 主机1在计时器没有超时前收到主机2的DR 便正式释放连接并发送ACK 然而主机2在计时器超时后还未收到主机1的ACK 但是由于已经超时 于是也释放了连接 运输层 104 对称释放3 应答丢失 主机1在结束数据传输后决定释放连接 于是发送DR并启动计时器 主机2在收到主机1的DR后同意释放连接 也发送DR并启动计时器 然而 主机1在计时器超时后还未收到主机2的DR 于是又重新发送DR并启动计时器 下面便是一个正常的三次握手 并最后正常释放连接 即整个数据传输过程正常结束 应答丢失的情况 运输层 105 对称释放4 应答丢失以及后续的DR丢失 主机1在结束数据传输后决定释放连接 于是发送DR并启动计时器 主机2在收到主机1的DR后同意释放连接 也发送DR并启动计时器 然而 紧接着的一段时间内 线路遇到了灾难性的干扰 无论是哪一方的超时重发的TPDU都不能到达对方 最终 接收方计时器的超时而也释放连接 发送方经过n次重发和超时后只能无奈地放弃努力并释放连接 应答丢失以及后续的DR丢失 运输层 106 TCP连接管理 续 TCP客户生命周期 TCP服务器生命周期 运输层 107 第3章要点 3 5面向连接的传输 TCP报文段结构可靠数据传输流量控制连接管理3 6拥塞控制的原则3 7TCP拥塞控制机制TCP吞吐量TCP公平性时延模型 3 1运输层服务3 2复用与分解3 3无连接传输 UDP3 4可靠数据传输的原则rdt1rdt2rdt3流水线协议 运输层 108 拥塞控制原理 拥塞 非正式地 太多太快的数据进入网络 使网络无法处理而造成网络性能下降 不同于流量控制 表现 丢包 路由器缓冲区溢出 长时延 路由器缓冲区中排队 网络中的前10大问题之一 运输层 109 拥塞的原因与开销 情况1 两个发送方 两个接收方一个路由器 无限缓冲区不重传 拥塞时时延增大可达到最大吞吐量 无限的共享式输出链路缓冲 主机A lin 原始数据 主机B lout 运输层 110 拥塞的原因与开销
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 舞蹈面试必 备:中国舞面试题目及答案全解析
- 知识题库-物业管理师考试题目及答案(填空题、单选题)
- 山西省大同四中联盟体2026届化学高一第一学期期末监测试题含解析
- 你的名字讲解版
- 天然药物化学萜类
- 湖北省襄阳市第四中学2026届化学高一上期中综合测试模拟试题含解析
- 氧气放散率讲解
- 市场营销消费者行为分析讲解
- 膝关节结核讲解
- 三级中医医院评审汇报
- 2025年(完整版)十八项核心制度培训考核试题(含答案)
- 社工的劳动合同范本(2025版)
- 2025年中国LCP料数据监测报告
- 纺织服装产业园项目建设方案
- DB44T 1597-2015 电镀水污染物排放标准
- 儿童保健工作管理办法
- 全固态高功率超快激光器:放大机制与热透镜效应的深度剖析
- KET教学课件新版
- DGTJ08-2232-2017 城市轨道交通工程技术规范
- 中职思政试题及答案
- 中小学暑期安全教育班会课件
评论
0/150
提交评论