- 1、本文档共37页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP拥塞控制-西安交通大学
第3讲 传输层协议及应用 本讲目的: 理解传输层服务的原理: 复用/分用 可靠数据传输 流量控制 拥塞控制 Internet传输层的实现和实例 教科书参考 第3章 本讲概述: 传输层的服务 复用/分用 无连接的传输: UDP 传输控制协议:TCP 传输层与网络层的关系 因特网中的传输层充当“收发室”的角色 因特网中的网络层充当“邮递业务”的角色 两个层次之间的任务可以互换,但是在实现成本上可能存在巨大差别 传输服务和协议 提供运行在不同主机中进程间的逻辑通信 传输协议仅运行在端系统中 传输 vs. 网络层服务 : 网络层: 在端系统间进行通信 传输层: 在进程间进行通信 依赖并加强了网络层的服务 传输层协议 Internet 传输服务: 可靠, 按序点对点递交 (TCP) 拥塞控制 流量控制 连接建立 不可靠的 (“尽力而为”), 无序的点对点或广播递交: UDP 不能提供的服务: 实时性 带宽承诺 可靠的广播通信 应用层对传输协议的复用/分用 segment (段)- 传输层实体间交换数据的单位 TPDU: 传输层数据单元 应用层对传输协议的复用/分用 复用/分用: 基于发送方, 接收方的端口号, IP 地址 源, 目的端口 #s 存在于每个段中 用于特定应用的常用端口号(well-known port number):0~1023 复用/分用: 举例 UDP: 用户数据报协议 [RFC 768] “最简约的” Internet 传输协议 “尽力而为的” 服务, UDP 数据段可以: 丢失 应用数据不按序到达 无连接: 在UDP收发双方之间, 无需握手信号 每个 UDP 数据段的操作都互相独立 为什么需要 UDP? 无需建立连接 (会增加延迟) 简单: 在收发双方之间没有连接状态 段首较短 无拥塞控制: UDP 可按需要随时发送 UDP: (续) 经常为流媒体应用使用 允许数据丢失 对传输速率敏感 其他 UDP用途 : DNS SNMP 若需要通过 UDP进行可靠传输:在应用层增加可靠性措施 在应用程序中-专门的出错恢复机制! UDP 校验和(checksum) 发送方: 将段的内容看作一串16位整数 checksum: 作段内容的加法(补码和) 发送方将补码和放入 UDP checksum 字段 接收方: 对接收到的段内容进行补码和计算 检查计算结果是否与收到的校验和相等: NO – 查出错误 YES – 没查出错误. 但是仍有可能存在错误? TCP概述 RFCs: 793, 1122, 1323, 2018, 2581 全双工数据传输: 在同一连接上双向传输 MSS: maximum segment size(最大段字节数-1500,536,512) 面向连接: 握手过程 (交换控制信息) 在交换数据前初始化收发双方的状态,“三次握手” 流量控制: 发送方的发送速度不得超过接收方的处理速度 点对点: 一个发送方, 一个接收方 可靠, 按序的字节流 : 无 “报文边界”,无结构但有顺序 流水式控制: TCP的拥塞和流量控制,设置窗口大小 发送 接收缓存 TCP 段格式(p80) TCP seq. #’s 和 ACKs Seq. #’s: 该数据段第一个字节在(整个报文)字节流中 “编号” ACKs: seq #为预期从对方发来的“下一个”字节的编号 积累的 ACK Q: 接收方如何接受失序的数据段 A: TCP 没有定义, - 由程序设计者决定 TCP: 可靠数据传输 TCP: 可靠数据传输 TCP ACK 规则 TCP: 重传场景 TCP 流量控制 接收端: 显式通知发送端 (动态变化中的) 自由缓存空间 RcvWindow TCP 数据段的字段 发送端: 需要保存已经发送, unACKed 数据可少于最近收到的RcvWindow TCP 连接管理 TCP 收发双方在数据交换开始之前需要建立连接 初始化 TCP变量: seq. #s 缓存, 流量控制信息 (e.g. RcvWindow) 客户端: 连接的发起者 Socket clientSocket = new Socket(hostname,port number); -JAVA 服务器: 接受客户端的连接 Socket connectionSocket = welcomeSocket.accept(); (建立连接)三次握手: Step 1: 客户端的end system向服务器发送 TCP SYN 控制数据段 定义并初始化 seq # Step 2: 服务器的end system接收 SYN, 用SYNACK控制数据段回答 ACKs 接收到的 SYN 分配缓存 定义 server- receiver
文档评论(0)