资源预览内容
第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
第9页 / 共53页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第六章 传输层n传输层是整个协议层次结构的核心。n传输服务n传输协议要素n传输层在OSI中的地位6.1传输服务n传输层的最终目标是向其用户一般是指应用 层的进程,提供有效、可靠且价格合理的服务。n为了达到这一目标,传输层利用了网络层所提供 的服务。n传输实体:传输层中完成上述工作的实体。n传输实体可能在操作系统内核中,或在一个单独 的用户进程内,也可能包含在网络应用的程序库 中,或是位于网络接口卡上。n网络层、传输层、应用层的逻辑关系网络地址与传输地址n网络地址:主机的标识(IP地址)n传输地址: 进程的标识(端口) 一个主机内可有多个进程在进行通信, 传输层负责接收某个进程发送的数据包 ,或将数据包交给指定的进程。两种传输服务n在网络层,有两种网络服务:面向连接、无连接n在传输层,也有两种服务:面向连接的传输服务,无连 接的传输服务n两层的面向连接服务在很多方面类似:n都包括三个阶段:建立连接、数据传输、释放连接n寻址和流量控制方式也类似。n两层的无连接服务也类似。6.1.2 传输协议要素n传输服务是通过建立连接的两个传输实体之间所用的传输协议来实 现的。n在某些方面,传输协议类似于数据链路层协议。两者都必须解决差 错控制、分组顺序、流量控制等问题。n但两者也存在显著的差异:主要由协议运行的环境造成的。在链路 层,两个路由器通过物理通道直接通信;而在传输层,这个物理通 道由整个子网所取代。n首先,在数据链路层,不必为一个路由器指明它要与哪个路由器通 话,而在传输层则需要显示指出。n其次,在数据链路层,建立连接的过程很简单,而在传输层,初始 连接的建立要复杂得多。n再次,子网的存储能力。n数量上的差别:在两层中都需要有数据缓冲和流量控制,但在传输 层中出现的大量的、动态变化的连接要求可能需要使用与在数据链 路层中不同的处理方法。1.寻址n当一个应用程序希望与一个远程应用程序建立连接时, 必须指定与哪个应用程序相连,一般采用的方法是定义 进程可以侦听连接请求的传输地址。n传输地址:这些端点是(IP地址,本地端口)对。n编址方式:n层次型地址:国家/网络/主机/端口n平面地址:随机分配2.建立连接n初看起来,一个传输实体似乎只需向目的机 器发送一个连接请求,并等待对方接受连接 的应答就足够了,但当网络可能丢失、存储 、出现重复分组时,问题会变得复杂。n递增的报文序列号n计时器:超时认为已经丢失n解决的方法:三次握手三次握手n主机1选择一个序号X并向 主机2发送一包含了该序号 的连接请求报文;n接着,主机2回应一个接受 连接报文,确认X并声明自 己所选用的初始序号Y;n最后,主机1在其发送的第 一个数据报文中确认主机2 所选择的初始序号。3.释放连接n终止连接有两种方式:对称、 非对称n非对称释放很突然,因而可能 导致丢失数据n当连接建立后,主机1发送了 一个数据报文并正确抵达主机 2,接着,主机1发送了另一个 数据报文,这次很不幸,主机 2在收到第二个报文之前先发 出了释放连接,结果连接被释 放,数据被丢失。n n1 1 对称释放对称释放 一方执行释放连接之后,不再发送数据,一方执行释放连接之后,不再发送数据, 但仍可以接收数据,同时向对方发送释放连接报文。但仍可以接收数据,同时向对方发送释放连接报文。 只有双方均执行释放连接之后,整个连接才释放。只有双方均执行释放连接之后,整个连接才释放。n n也使用三次握手。也使用三次握手。n n2 2 非对称释放非对称释放 与电话类似,相互连接的双方任何一方与电话类似,相互连接的双方任何一方 都能执行释放连接,断开连接并向对方发送释放连接都能执行释放连接,断开连接并向对方发送释放连接 报文,报文到达对方,整个连接即释放。报文,报文到达对方,整个连接即释放。 n n很容易造成数据丢失很容易造成数据丢失6.1.3传输层在OSI中的地位和作用n传输层是整个协议层次结构的核心,是惟一负 责总体数据传输和控制的一层。n 在OSI七层模型中传输层是负责数据通信 的最高层,又是面向网络通信的低三层和面向 信息处理的高三层之间的中间层。因为网络层 不一定保证服务的可靠,而用户也不能直接对 通信子网加以控制,因此在网络层之上,加一 层即传输层以改善传输质量。n传输层利用网络层提供的服务,并通过传输层 地址提供给高层用户传输数据的通信端口,使 系统间高层资源的共享不必考虑数据通信方面 和不可靠的数据传输方面的问题。它的主要功 能是:对一个进行的对话或连接提供可靠的传 输服务,在通向网络的单一物理连接上实现该 连接的复用,在单一连接上提供端到端的序号 与流量控制、差错控制及恢复等服务。6.2 传输控制协议nTCP协议提供的是可靠的、面向连接的传 输控制协议,即在传输数据前要先建立 逻辑连接,然后再传输数据,最后释放 连接3个过程。TCP提供端到端、全双工 通信;采用字节流方式,如果字节流太 长,将其分段;提供紧急数据传送功能 。6.2.1 TCP服务模型nTCP所提供服务的主要特征:n1.面向连接的传输;n2.端到端的通讯;n3.高可靠性,确保传输数据的准确性,不出现丢失或 乱序;n4.全双工方法传输;n5.采用字节流方法,即以字节为单位传输字节序列;n6.急迫数据传送功能;6.2.2 TCP传输机制1.TCP的段结构n源端口和目的端口:各占2个字节。16BIT的端口号加上32BIT的IP地址,构成了插口( SOCKET),它相当于传输层服务访问点TSAP的地址(总共是48BIT) 。这些端口用来将若干高层协议向下复用,也用来将传输层协议向上分 用。n 序号:占4字节。TCP传送的报文可看成为连续的数据流,其中每一个字节 都对应于一个序号。首部中的“序号”则指的是本报文段所发送的数据 中第一个字节的序号。例如,某报文段的序号字段的值是301,而携带 的数据共100字节,则本报文段的数据的第一个字节的序号是301,而最 后一个字节的序号是400。这样,下一个报文段的数据序号应当从401开 始,因而下一个报文段的序号字段的值应为401。n确认序号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序 号,也就是期望收到的下一个报文段首部的序号字段的值。正确收到了 一个报文段,其序号字段的值是501,而数据长度是200字节,这就表明 序号在501700之间的数据均已正确收到 。因此在响应的报文段中应将 确认序号置为701。n数据偏移:占4BIT,它指出数据开始的地方离TCP报文 段的起始处有多远。这实际上就是TCP报文段首 部的长度。“数据偏移”的单位不是字节而是 32BIT字(即4字节字)。由于4BIT能够表示的最 大十进制数字是15,因此数据偏移的最大值是60 字节,这也是TCP首部的最大长度。n保留:占6BIT,保留为今后使用,但目前应置为0 。n紧急比特URG(URGENT)当URG=1时,表明紧急指针字段有效。当使用紧急比特并将URG置1时,发送应用进程应告诉发送TCP这 两个字符是紧急数据。紧急指针指出在本报文段中的紧急数据的最后 一个字节的序号。n确认比特ACK只有当ACK=1时确认序号字段才有效。当ACK=0时,确认序号无 效。n推送比特PSH(PUSH)当两个应用进程进行交互式的通信时,有时在一端的应用进程希 望在键入一个命令后立即就能够收到对方的响应。这时,发送端TCP 将推送比特PSH置1,并立即创建一个报文段发送出去。接收TCP收到 推送比特置1的报文段,就尽快交付给接收应用进程,而不再等到整 个缓存都填满了后再向上交付。n复位比特RST(RESET)当RST=1时,表明TCP连接中出现严重差错(如由于主 机崩溃或其他原因),必须释放连接,然后再重新建立传 输连接。还用来拒绝一个非法的报文段或拒绝打开一个连 接。n同步比特SYN在连接建立时用来同步序号。当SYN=1而ACK=0时, 表明这是一个连接请求报文段。对方若同意建立连接,则 应在响应的报文段中使SYN=1和ACK=1。因此,同步比特 SYN置为1,就表示这是一个连接请求或连接接受报文。n终止比特FIN(FINAL)用来释放一个连接。当FIN=1时,表明此报文段的发送 端的数据已发送完毕,并要求释放传输连接。n窗口n 占2字节。窗口字段用来控制对方发送的数据量,单位 为字节。TCP连接的一端根据自己缓存的空间大小再确定 自己的接收窗口大小,然后通知对方来确定对方的发送 窗口。n检验和n 占2字节。检验和字段检验的范围包括首部和数据这两 部分。和UDP用户数据报一样,在计算检验和时,要在 TCP报文段的前面加上12字节的伪首部。但应将伪首部第 四个字段中的17改为6,将第五字段中的UDP长度改为 TCP长度。n选项n 长度可变。TCP规定了两种选项,最大报文段长度和 窗口是否用16比特来代替32比特。n在连接建立时,双方要商定初始序号。TCP每 次所发送的报文段的首部中的序号字段数值表 示该报文段中的数据部分的第一个字节的序号 。nTCP的确认是对接收到的数据的最高序号(即 收到的数据流中的最后一个序号)表示确认。 但接收端返回的确认序号是已收到的数据的最 高序号加1。不必专门发送报文段,而可以在 传送数据时顺便把确认信息捎带传送。2.TCP端口号nTCP和UDP采用16比特的端口号来识别应用进程。服务 器一般都是通过人们所熟知的端口号来识别的。小于 256的定义为常用端口,例如,对于每个TCP/IP实现来 说,FTP服务器的TCP端口号都是21,每个Telnet服务 器的TCP端口号都是23,每个TFTP(简单文件传输协议) 服务器的UDP端口号都是69。任何TCP/IP实现所提供的 服务都用众所周知的11023之间的端口号。这些人们 所熟知的端口号由Internet端口号分配机构来管理。n客户端通常对它所使用的端口号并不关心,只需保证 该端口号在本机上是唯一的就可以了。客户端口号又 称作临时端口号(即存在时间很短暂)。这是因为它 通常只是在用户运行该客户程序时才存在,而服务器 则只要主机开着的,其服务就运行。 大多数TCP/IP实现给临时端口分配10245000之间的 端口号。大于5000的端口号是为其他服务器预留的( Internet上并不常用的服务)。 n在TCP和UDP的段头中有两个端口号n源端口号(source port-number)n宿端口号(destination port-number)nTCP使用端口号来标识执行发送和接收的应用进程,端口号 可以帮助TCP来分离字节流并且把相应字节传递给正确的应 用程序。n根据IP地址和端口号就可以唯一地确定信宿主机中某个特定进程。n端口号可以是半永久的和临时的:n服务器端在一个半永久性的端口上来监听客户端的访问请求。n客户端使用临时端口在本地标识一个对话。n客户端的端口只在使用TCP服务时候才存在,而服务器端口只要服务 器进程在运行就一直存在。 6.2.3TCP连接管理1.建立连接AB方向消息含义AB ABABSYNSYNACKACK我的初始序号是X序号用于跟踪通信顺序,确保多个包传输时无数据丢失。通信双方建立连接时必须互相交换各自的初始序号。知道了,你的序号是X我的初始序号是Y知道了,你的序号是Y握手 123合 并1.2. 3.4.TCP通过三次握手来建立连接AB发送SYN消息(SEQ=x)收到SYN消息(SEQ=x)发送SYN消息 (SEQ=y, ACK=x+1)收到SYN消息 (SEQ=y, ACK=x+1)发送确认(ACK=y+1) 收到确认(ACK=y+1)双方 连接建立AB发送FIN消息(SEQ=x)接收FIN消息(SEQ=x)TCP发送确认(ACK=x+1)接收ACK消息(ACK=x+1) AB的连接断开(半关闭) 但A仍可接收数据TCP发送确认(ACK=y+1) 接收确认(ACK=y+1) BA的连接断开2.释放连接应用进程 释放连接通知应用进 程应用进程释 放连接发送FIN
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号