第五讲传输层协议Internet技术与应用第五讲传输层协议2传输层协议概况概况:UDP标准协议,建议标准,STD-6RFC768:UDP协议TCP标准协议,推荐标准,STD-7RFC793:TCP协议RFC3168:更新TCP的拥塞控制等Internet技术与应用第五讲传输层协议3传输层和网络层的区别网络层协议:实现主机之间的数据传输只需要协议地址即可确定目的地传输层协议:实现应用程序之间的数据传输除协议地址外,还需要其他标识信息,以便确定参与通信的应用程序其他传输控制功能Internet技术与应用第五讲传输层协议4传输层如何标识应用程序主机上进程的标识:进程标识符进程启动时动态分配对不同主机、不同操作系统不统一传输层上进程的标识:端口号不同传输层协议的端口号独立网络上进程的标识:套接字Internet技术与应用第五讲传输层协议5端口端口长度:16bits端口类型:公用端口(熟知端口)由IANA分配给标准服务端口范围:1~256临时端口由操作系统动态自由分配端口范围:1024~65535Internet技术与应用第五讲传输层协议6套接字套接字的概念:是一种特殊的文件句柄,进程用它来向操作系统请求网络服务套接字的表示:三元组:协议,协议地址,进程标识TCP/IP中的套接字:TCP,IP地址,端口号或者UDP,IP地址,端口号Internet技术与应用第五讲传输层协议7关联和半关联关联:一个关联用来标识两个进程之间的通信两个套接字可以唯一地表示一个关联前提:使用相同的协议表示:五元组协议,本地协议地址,本地进程标识,远端协议地址,远端进程标识半关联:是构成关联的一半,亦即套接字Internet技术与应用第五讲传输层协议8UDP基于端口的多路去复用Internet技术与应用第五讲传输层协议9UDP数据报格式Internet技术与应用第五讲传输层协议10UDP应用编程接口三个主要的应用编程接口:建立新接收端口接收操作发送操作Internet技术与应用第五讲传输层协议11TCP提供的功能TCP具有如下为应用提供的功能:流式数据传输可靠性流量控制多路复用逻辑连接全双工Internet技术与应用第五讲传输层协议12TCP通信进程间的连接Internet技术与应用第五讲传输层协议13简单的确认重传缺点:浪费传输带宽Internet技术与应用第五讲传输层协议14窗口机制Internet技术与应用第五讲传输层协议15窗口机制改善带宽利用率窗口机制保证了:可靠的传输更好地利用了网络带宽支持流量控制Internet技术与应用第五讲传输层协议16TCP中的窗口原则TCP使用改进的窗口原则:每个字节分配一个序列号,窗口大小用字节数表示。建立连接时由接收方确定窗口大小,并且在数据传输过程中可能发生变化。字节分为报文段,一个TCP报文只携带本报文段中第一个字节的序列号。Internet技术与应用第五讲传输层协议17TCP中的窗口机制Internet技术与应用第五讲传输层协议18TCP报文段格式Internet技术与应用第五讲传输层协议19TCP伪头部Internet技术与应用第五讲传输层协议20TCP选项Internet技术与应用第五讲传输层协议21确认和重传Internet技术与应用第五讲传输层协议22变长超时间隔超时机制:为了不至于无限期的等待确认,采用超时机制,为发送的每个报文段设置一个超时间隔。TCP中的变长超时间隔:由于网络特性动态变化,超时间隔也应该动态改变。计算发送报文段和接收确认报文之间的时间差,以时间差的加权平均作为要被发送的下一个报文段的超时间隔值。Internet技术与应用第五讲传输层协议23TCP连接的建立三次握手过程Internet技术与应用第五讲传输层协议24TCP连接的关闭关闭连接的两种方法:通过调用close()显式关闭通过设置FIN标志位隐式关闭注意:由于TCP连接是双向的,必须在两端都进行关闭后才能真正关闭一个TCP连接。Internet技术与应用第五讲传输层协议25TCP应用编程接口六个主要的应用编程接口:Open:建立一个连接Send:使用已建立的连接发送数据Receive:将接收数据拷贝到用户缓冲区Close:关闭一个连接Status:返回一个已建立的连接的信息Abort:异常结束Internet技术与应用第五讲传输层协议26TCP拥塞控制算法拥塞算法:防止发送方以超出网络的容量的速率发送数据,以适应网络容量。TCP目前实现的4个拥塞和流控算法:慢速启动拥塞避免快速重传快速恢复Internet技术与应用第五讲传输层协议27慢速启动控制流量的两个窗口值:公告窗口:接收方确定拥塞窗口:发送方确定(不超过前者)慢速启动算法:发送方将拥塞窗口初始化为一个报文段的大小。每次接收到一个确认后,将拥塞窗口增加一倍。慢速启动是在连接上采取的流量控制Internet技术与应用第五讲传输层协议28慢速启动示意图Internet技术与应用第五讲传输层协议29拥塞避免拥塞:中间路由器丢失报文段的现象处理丢失报文的方法称为拥塞避免算法拥塞避免算法:减慢向网络发送报文的速率激活慢速启动过程判断拥塞的依据:发生超时(需要好的RTT算法)接收到重复的ACKInternet技术与应用第五讲传输层协议30慢速启动+拥塞避免两个独立的算法联合使用,维护两个变量:拥塞窗口(cwnd)慢速启动阈值(ssthresh)Internet技术与应用第五讲传输层协议31慢速启动+拥塞避免组合算法组合算法(设报文段大小为segsize):1.初始化连接:cwnd=segsize,ssthresh=655352.最多发送cwnd字节未确认的数据3.发生拥塞后:ssthresh=max(2*segsize,cwnd/2)4.新发送数据被确认后,若cwndssthresh:则执行慢速启动:cwnd=min(cwnd*2,ssthresh)否则执行拥塞避免:cwnd=cwnd+segsize*segsize/cwndInternet技术与应用第五讲传输层协议32慢速启动+拥塞避免组合算法示意图Internet技术与应用第五讲传输层协议33快速重传快速重传:对拥塞避免进行改进,使丢失报文在超时到来前被重传。Internet技术与应用第五讲传输层协议34快速恢复快速恢复:在快速重传发送了丢失的报文并收到确认后,执行拥塞避免而非慢速启动。因为重复ACK不仅意味着报文的丢失,而且意味着在丢失的报文之后还接收到其后的报文,即网络上仍然有数据流动,采用突然降低发送速率的慢速启动,不利于充分利用带宽。Internet技术与应用第五讲传输层协议35快速重传+快速恢复组合算法组合算法:1.当接收到第3个重复ACK时:ssthresh=max(2*segsize,cwnd/2)重传丢失的报文cwnd=ssthresh+3*segsize2.每当接收到另一个重复ACK时:cwnd=cwnd+segsize若新cwnd允许,则发送一个报文段3.新ACK到来时进行拥塞避免:cwnd=ssthresh/2Internet技术与应用第五讲传输层协议36思考题1.端口的作用是什么?如何理解基于端口的多路复用?2.套接字的作用是什么?说明TCP/IP套接字中三元组的必要性。3.什么是关联?关联与套接字有何关系?4.为什么UDP和TCP在计算校验和时要引入伪头部?5.为什么要在TCP中引入超时机制?TCP的超时间隔有何特点和优点?UDP需要超时机制吗?为什么?6.为什么TCP头部有一个头部长度字段而UDP却没有?7.UDP报文中的源端口号可以为0,那么,TCP报文中的源端口号是否也可以为0?为什么?8.解释说明窗口原则。窗口机制能够提供哪些功能?TCP中的窗口机制有哪些改进?9.慢速启动和拥塞避免的区别是什么?如何组合使用?10.在确认和重传机制下,为何还引入快速重传?