您好,欢迎访问三七文档
1第5章运输层(传输层)运输层是计算机网络分层体系结构中的核心层次。其主要任务是完成从源主机应用进程到目的主机应用进程之间的数据传输。本章将主要介绍运输层的功能以及在TCP/IP协议簇中运输层所采用的协议UDP和TCP。25.1运输层概述从通信和信息处理的角度看,运输层对上层屏蔽了下层的通信细节,为上层应用提供端到端的连接。物理层网络层运输层应用层数据链路层面向信息处理面向通信用户功能网络功能3运输层为相互通信的应用进程提供了逻辑通信54321运输层提供应用进程间的逻辑通信应用进程应用进程IP层AP1AP2AP4端口端口54321AP3主机A主机B路由器1路由器2AP1LAN2WANAP2AP3AP4LAN1IP协议的作用范围运输层协议TCP和UDP的作用范围4应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。5运输层协议和网络层协议的主要区别应用进程…应用进程…IP协议的作用范围(提供主机之间的逻辑通信)TCP和UDP协议的作用范围(提供进程之间的逻辑通信)因特网6运输层与其上下层之间的关系的OSI表示法运输实体运输实体运输协议运输层层接口运输服务用户(应用层实体)运输服务用户(应用层实体)层接口网络层(或网际层)应用层主机A主机B运输层服务访问点TSAP网络层服务访问点NSAP7术语运输实体通过运输层服务访问点TSAP(TransportServiceAccessPoint)向应用层实体(又称运输服务用户)提供运输服务,这里的运输服务用户包括应用层中的各种应用进程。运输实体(又称网络服务用户)从网络服务访问点NSAP(NetworkServiceAccessPoint)获取网络层(或网际层)提供的服务。运输层对等实体之间的通信遵循运输协议,两个对等运输实体之间通信时传送的数据单位叫做运输协议数据单元TPDU(TransportProtocolDataUnit)。85.2TCP/IP模型中的运输层5.2.1TCP和UDPUDP(UserDatagramProtocol)TCP(TransmissionControlProtocol)。TCP/IP模型中的运输层协议9运输层向上提供可靠的和不可靠的逻辑通信信道?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程105.2.2运输层端口端口就是运输层服务访问点TSAP。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。端口用一个16bit端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。11端口在进程之间的通信中所起的作用应用层运输层网络层TCP报文段UDP用户数据报应用进程TCP复用IP复用UDP复用TCP报文段UDP用户数据报应用进程端口端口TCP分用UDP分用IP分用IP数据报IP数据报发送方接收方12端口号的分配有两种基本方式在TCP/IP协议的实现中,端口号的分配有两种基本方式:(1)全局分配,这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众。(2)本地分配,又称动态连接,即进程需要访问运输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。13按端口号的范围,可分为3大类(1)熟知端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通信明确表明了某种服务的协议。例如:80端口实际上总是HTTP通信。(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。例如:许多系统处理动态端口从1024左右开始。(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。例如默认的HTTP端口是80,不少人将它重定向到另一个端口,如8080。145.3用户数据报协议UDP5.3.1UDP概述用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能(有了端口,运输层就能进行复用和分用)和差错检测的功能。UDP有其特殊的优点:(1)无需建立连接(2)无连接状态管理(3)报文头部开销小(4)应用层能很好的控制要发送的数据和发送的时间155.3.2UDP报文格式UDP数据报结构由头部和数据两部分组成,头部包含4个字段,其中每个字段各占用2个字节。16各字段的含义(1)源/目的端口号(2)数据报长度:数据报的长度是指包括报头和数据部分在内的总的字节数。(3)校验和:用于检查UDP报文在传输中是否出错。在计算校验和时,要在UDP数据报之前增加12字节的伪头部(并不是UDP的真正头部)。17UDP用户数据报的首部格式伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报18伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。19伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。20校验和示例例如:1111001100110011011101010101010101110111011101110111101110111011110010100010001000011wraparoundsumchecksum二进制反码求和0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列.若最高位相加后产生进位,则最后得到的结果要加1.21计算UDP检验和的例子1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据0100100101001110→数据0100011100000000→数据和0(填充)1001011011101011→求和得出的结果0110100100010100→检验和153.19.8.104171.3.14.1112字节伪首部8字节UDP首部7字节数据填充按二进制反码运算求和将得出的结果求反码全0171510871315全0数据数据数据数据数据数据数据全0225.4传输控制协议TCP传输控制协议TCP(TransmissionControlProtocol)是运输层中使用最广泛的一个协议。TCP提供全双工和可靠的、面向连接的数据传输服务。并通过通信双方三次握手、收方肯定确认、重传(时钟控制),流量控制等机制保证数据在应用进程之间传递的可靠性。23端口…发送TCP报文段TCP…TCP接收缓存发送缓存报文段…报文段报文段端口发送端接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程245.4.1TCP提供的服务TCP的主要目的是提供可靠的端到端应用进程之间的数据传输,IP层只保证数据在主机之间的传递,而且是不可靠的,因此TCP需要很多自己的服务实现可靠传输的目的。⑴面向连接⑵可靠性⑶数据流传输⑷流量控制⑸全双工255.4.2TCP报文段格式一个TCP报文段分为头部和数据两部分。头部的前20字节是固定的,选项部分最多为40字节。因此TCP报文段头部的最小长度是20字节。TCP报文段格式26源端口和目的端口:各16位;端口:是传输层与应用层的服务接口.序号:4字节,其值为本报文段所发送的第一个字节序号.TCP为传送的数据的每一个字节都编上一个序号.确认号:4字节,希望收到对方下一个报文段的第一个字节序号.数据偏移:4位,数据部分在TCP段中的位置.即TCP段头长度,单位为32位字,最大值是60字节.6位的保留域:目前置0.276位的标识位:置1表示有效URG:紧急数据标志,和紧急指针配合使用,发送紧急数据;ACK:确认号是否有效;PSH:指示发送方和接收方将数据不做缓存,立刻发送或接收;推送比特或急迫比特.RST:复位比特,由于不可恢复的错误重置连接;SYN:同步比特,用于连接建立的同步序号;FIN:终止比特,用于连接释放;28窗口大小:2字节,用于基于可变滑动窗口的流控,指示发送方从确认号开始可以再发送窗口大小的字节流;根据自己的缓存区的大小来确定窗口大小.校验和:为增加可靠性,对TCP头,数据和伪头计算校验和;伪头+TCP头+数据,长度为奇数时补一个全零的字节.校验和计算:全部16位字取补码相加,再取补作为校验和伪头格式:选项域:最大报文长度MSS:告诉对方所能接收的报文段的数据段的最大长度为MSS.MSS默认值为536字节.源IP地址目的IP地址000000006TCP长度32bit295.4.3TCP连接管理TCP是面向连接的协议。TCP传输连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP的传输连接包括三个状态:•连接建立•数据传送•连接释放301.连接的建立第一步,A端的TCP首先向B端的TCP发送一个特殊的TCP报文段SYN,此报文段中的SYN标志被置1,同时初始化一个起始序号;311.连接的建立第二步,当B端收到A端发来的SYN报文段,会为该TCP连接分配TCP缓存和变量,并向A端回复一个允许连接的报文段SYNACK;321.连接的建立第三步,在收到允许连接的报文段后,A端也要给该连接分配缓存和变量。然后向B端发送另一个报文段,用于对B端允许连接的SYNACK报文段进行确认。这种通信双发进行三次报文交换的过程被称为三次握手(three-wayhandshake)。331.连接的建立三次握手(三次联络)还要再发送一次确认是为了,防止已失效的连接请求报文段突然又传到了B,因而产生错误。已失效的报文段:正常情况下:A发出连接请求,但因为丢失了,故而不能收到B的确认。于是A重新发出请求,然后收到确认,建立连接,数据传输完毕后,释放连接,A发了2个,一个丢掉,一个到达,没有“已失效的报文段”但是,某种情况下,A的第一个在某个节点滞留了,延误到达,本来这是一个早已失效的报文段,但是在A发送第二个,并且得到B的回应,建立了连接以后,这个报文段竟然到达了,于是B就认为,A又发送了一个新的请求,于是发送确认报文段,同意建立连接,假若没有三次的握手,那么这
本文标题:计算机网络第5章.
链接地址:https://www.777doc.com/doc-2045185 .html