韩雪琴1第5章传输层协议5.1协议的分层5.2用户数据报协议UDP5.3可靠的数据流传输服务TCP2韩雪琴2引言前面各章回顾了互联网基础体系,描述了主机和路由器如何发送Internet数据报,以及现行的机制下如何将IP地址映射到物理地址。本章讨论主机和路由器中的网络通信软件的结构。紧接着讨论互联网运输层协议机制。3韩雪琴35.1协议的分层复杂的数据通信系统不会使用单一的协议来处理所有的传输任务。他们需要一整套相互合作的协议,这些协议称为协议族或协议套件。为什么需要协议?首先考虑数据网络通信中可能出现的问题。硬件失效网络拥塞分组延时及丢失数据损伤数据重复及乱序4韩雪琴45.1协议的分层计算机上的协议软件具有称为层的垂直型栈结构,每一层负责处理问题的一个部分。把通信问题划分为子问题,把协议软件分为多个模块,每个软件处理一个子问题。关于协议分层的两个思想占据了该领域的主导地位。第一个思路基于国际标准化组织ISO所建立的开放系统互连参考模型,称为ISO模型,给出了七个概念层次的组织结构。ISO七层模型被设计为描述单一网络的协议,所以它不像TCP/IP协议那样有一个具体的层用于互联网的选路。5韩雪琴5物理层数据链路层网络层传输层会话层表示层应用层7654321ISO模型—OSI/RM6韩雪琴6TCP/IP的体系结构网络接口层IP各种应用层协议HTTP,FTP,SMTP,DNS等TCP网际层运输层UDP应用层TCP:传输控制协议(TransmissionControlProtocol)IP:网际协议UDP:用户数据报协议(UserDatagramProtocol)7韩雪琴7SMTP/FTP/Telnet/NFS...应用层IPICMPARP/RARP网际层物理层:传输媒体数据链路层:Ethernet,FDDI,FR,X.25网络接口层传输层TCPUDPTCP/IP协议栈8韩雪琴854321数据链路层应用层运输层网际层物理层ApplicationlayerTransportlayerInternetlayerDatalinklayerPhysicallayer协议的原理性层次结构9韩雪琴9协议分层的原则分层的协议要设计成达到这样的效果,即目标主机的第N层所收到的数据就是源主机的第N层所发出的数据。10韩雪琴10前导物理层数据链路层IP层TCP层应用层数据D_linkIP头TCP头数据校验后导D_linkIP头TCP头数据校验IP头TCP头数据TCP头数据TCP/IP体系结构中的协议数据单元11韩雪琴115432154321H3物理传输媒体数据部分数据部分数据部分数据部分10100110100101比特流11010111010T2计算机1H5H4H2首部尾部……AP2AP1应用程序数据计算机2比特帧IP数据报IP分组TCP报文段UDP报文段数据在TCP/IP网络中的传输12韩雪琴12多路复用和多路分解IP模块ARP模块RARP模块基于帧类型的多路分解帧到达ICMP模块UDP模块TCP模块数据报到达13韩雪琴135.2用户数据报协议UDP前面各章描述了一个TCP/IP互联网,它能够提供在主机之间传输数据报的能力,每个数据报根据其目的主机的IP地址来进行互联网选路。在Internet协议层中,目的地址等同于主机,没有对接收这个数据报的用户或应用程序进行更细致的标识。本届增加一个机制来扩充TCP/IP协议族,使得在给定的主机上能识别多个目的地,同时允许多个应用程序运行于同一台主机上并独立地进行数据报的收发。14韩雪琴14UDP的报文格式每个UDP报文称为一个用户数据报。从概念上讲,分为两部分:UDP首部和数据区。首部被分为4个16比特的字段。……数据校验和报文长度目的端口源端口01631记录UDP数据报中的字节数,包括UDP首部和用户数据可选,为0说明不进行校验。UDP使用和IP协议同样的校验和计算方法。源端口和目的端口各包含16比特的UDP协议端口号15韩雪琴15UDP的伪首部UDP校验和覆盖的内容超出了UDP数据报本身的范围。为了计算校验和,UDP把伪首部引入数据中。首先把0只赋予校验和字段,然后对整个对象:伪首部、UDP首部、用户数据,计算一个16比特的二进制反码和。使用伪首部的目的是检验UDP数据报已到达正确的目的地。如果校验和正确,说明UDP数据报到达了正确主机上的正确端口。UDP长度协议0目的IP地址源IP地址831160指明所使用的协议类型代码(17)伪首部不随UDP数据报一起传输,也不计算在数据报长度之内16韩雪琴16UDP基于端口的复用IP层端口a端口b端口c基于端口的复用UDPUDP数据报到达应用1应用2应用317韩雪琴17UDP端口号7ECHO回送37TIME时间42NAMESERVER主机名字服务器53DOMAIN域名服务器67BOOTPS启动协议服务69TFTP简单文件传输161SNMP简单网络管理协议……18韩雪琴185.3可靠的数据流传输服务TCP前面各章讨论了构成互联网通信基础的不可靠无连接分组交付服务,IP协议对此进行了定义。本节介绍可靠的流交付服务,即传输控制协议TCP。19韩雪琴19对数据流交付的需求最底层的计算机通信网络提供的服务是不可靠的分组交付服务。当传输过程中出现错误时,当网络硬件失效或网络负载太重时,分组可能会丢失,数据可能被破坏。动态路由分组的网络会使到达的分组顺序混乱、时延非常大或重复交付。最高层的应用程序常常在机器之间传输大量的数据。使用不可靠的无连接交付来传输这样的数据苦不堪言,而且要求应用程序负责进行差错检测和恢复的工作。网络协议的研究目标之一就是为数据流的交付找出一般的解决方法,编制一个供所用的应用程序使用的数据流交付软件。独立的通用协议软件,使我们能够定义一个统一的数据流交付服务接口。20韩雪琴20可靠交付服务的特征应用程序与TCP/IP可靠交付服务之间的接口可以用五个特征来描述:面向数据流虚电路连接有缓冲的传输无结构的数据流全双工连接可靠的数据流交付服务确保在机器之间交付数据流,不会重复交付或丢失数据。可靠性使用“带重传的肯定确认”技术实现。21韩雪琴21传输控制协议TCP是一个通信协议而不是一个软件。该协议指定了两台计算机之间为了进行可靠传输而交换的数据和确认信息的格式;指定了计算机为了确保数据的正确到达而采取的措施;规定了TCP软件如何识别给定机器上的多个目的进程;规定了如何对分组丢失和分组重复等错误进行恢复;规定了两台计算机如何初始化一个TCP数据流传输以及如何对结束的时机进行协商。22韩雪琴22传输控制协议TCP是建立在连接抽象之上的,它所对应的对象不是单独的端口而是一个虚电路连接。连接是用一对端点来标识的。TCP把端点定义为一对整数(host,port)。例如一个连接可以表示为:(18.26.0.36,1069)和(128.10.2.3,25)连接抽象允许多个连接共享一个端点。(128.10.2.3,53)(128.9.0.32,118)(128.2.12.39,118)23保留的TCP端口号20FTP-DATA文件传输协议(数据连接)21FTP文件传输协议(控制连接)23TELNET远程登录终端25SMTP简单邮件传输协议53DNS域名服务器79FINGERfinger程序2380HTTPWEB服务……一方面为普通的程序调用同一套熟知端口,另一方面给操作系统很多端口号,有操作系统在应用程序需要时进行分配。24套接字地址----插口(socket)TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称为插口(socket),或套接字、套接口。插口和端口、IP地址的关系是:IP地址131.6.23.13端口号1500131.6.23.13,1500插口(socket)25韩雪琴25传输控制协议传输层以下传输层应用层传输层以下传输层应用层AP1AP4AP2AP5AP3AP6NET1NET2主机1主机2多对进程可以复用到一个网络连接上26韩雪琴26传输端口的分配示例--Client/serverIP=131.6.23.13Client1IP=128.36.1.22Client2IP=130.42.85.15端口25端口500连接1端口501连接2端口1000连接3Server(SMTP)271.TCP报文的格式?2.TCP的滑动窗口工作方式?窗口大小的变化依据是什么?3.什么是糊涂窗口综合症?如何避免糊涂窗口综合症?4.TCP如何实现拥塞控制?5.TCP的定时器有哪些?6.TCP的重传机制?超时定时器的计算方法?7.TCP如何建立连接?如何释放连接?288.TCP建立连接为什么使用三次握手?9.TCP如何实现可靠传输?29传输控制协议TCP格式TCP提供数据流服务数据流、序号、报文段TCP把数据流当作字节的序列,把序列划分成若干个段,每个段被放置到单个IP数据报中在互联网上传输。TCP使用“滑动窗口”机制来解决两个重要问题:传输效率和流量控制。30韩雪琴30TCP报文段格式源端口目的端口序号确认号首部长度保留未用码元比特通告窗口校验和紧急指针选项填充数据…416031241031韩雪琴31TCP报文段格式源端口和目的端口:标识连接的两个端点序号:指出本报文段在发送方的数据字节流中的位置确认序号:指出本机希望接收的下一个字节的序号首部长度:以32比特为单位的首部长度值。因选项字段的长度根据包含的内容不同而有变化6比特保留字段为将来的应用而保留32韩雪琴32TCP报文段格式码元比特字段(CODEBITS)6bit指出报文段的目的和内容,给出报文头中其他字段的解释URGACKPSHRSTSYNFIN发送方字节流结束序号同步连接复位报文段请求推操作确认字段可用紧急指针字段可用33韩雪琴33TCP校验和的计算一个16位整数校验和用于检验数据和首部的完整性TCP校验和的计算方法:同IP分组头的校验校验和计算:除覆盖数据报外,还覆盖一个TCP伪首部TCP伪首部的目的与UDP基本相同TCP长度协议0目的IP地址源IP地址831160伪首部不随TCP数据报一起传输,也不计算在数据报长度之内IP分组头中指明所使用的协议类型代码(TCP=6)34TCP的数据编号与确认TCP协议是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。TCP的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。35韩雪琴35累积确认2143658710911TCP字节数据流ACK=779ACK=8ACK=108已正确收到的字节优点:确认容易产生,不会有两义性。若确认信息丢失并不一定迫使发送方重传缺点:发送方不能收到所有成功传输的报文段的确认信息使累计确认的效率降低。TCP使用流序号对流中的一个位置进行确认,累计确认一个确认指出了接收方期望收到的下一个字节的序号。365.3.4TCP的流量控制与拥塞控制1.滑动窗口的概念TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。37韩雪琴37TCP流量控制TCP通过可变的窗口大小来进行流量控制TCP允许随时改变窗口大小在确认报文中除确认序号(收到的字节)外,还包含窗口通告,说明接收方还可接收数据的能力窗口通告值可被认为是当前接收缓冲区的大小窗口通告值增加时,发送方可扩大其发送窗口的大小;窗口通告值减少时,发送方则应降低其发