

免费预览已结束,剩余41页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章 运输层,运输协议概述 tcp/ip体系中的运输层 用户数据报协议udp 传输控制协议tcp,8.1 运输协议概述,运输层在网络体系结构中的地位和作用 运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。,物理层,数据链路层,运输层,网络层,应用层,用户功能,网络功能,面向通信,面向信息处理,运输层在层次体系结构中的地位,运输层 transport,运输层 transport,osi上三层,osi上三层,osi下三层,osi下三层,用户进程管理,通信子网,向上提供标准的传输服务向下屏蔽不同的通信子网,运输层的功能: 1)严格地讲,两个主机进行通信实际上就是两个主机中的应用进程互相通信。运输层用来标识主机中的应用进程。 ip协议虽然能够把分组送到目的主机,但是无法交付给主机中的应用进程。 2)复用与分用:发送端应用层不同进程的报文通过不同的端口向下交到运输层,再向下共用网络层提供的服务;接收端则进行分用处理。运输层提供主机内进程间的“逻辑通信”;而网络层则提供网络中主机间的“逻辑通信”。见书p229 图82,83。,3)运输层要对收到的报文进行差错检测,而网络层只检查数据报的首部。 运输层有两种不同的运输协议,即面向连接的tcp和无连接的udp,而网络层无法同时实现这两种协议。 运输层与其上下层之间的关系,见书p230 图84。 运输层向高层屏蔽了下面通信子网的细节(如拓扑结构、所采用的协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑信道因运输层使用的不同协议而有很大的差别。,运输层向上提供可靠的和不可靠的逻辑通信信道,8.2 tcp/ip体系中的运输层,一、运输层中的两个协议 tcp/ip的传输层有2个不同的协议 用户数据报协议udp(user datagram protocol) 运输控制协议tcp(transmission control protocol) udp在传送数据之前不需要建立连接,也不给出确认,提供不可靠服务,但效率高。如dns,nfs中采用。 tcp在传送数据之前需要建立连接,需给出确认,提供可靠服务,但效率低。如ftp,telnet中采用。,与各种网络接口,ip,udp,tcp,应用层,强调两点: (1)运输层的udp用户数据报与网际层的ip数据报有很大的区别。ip数据报要经过互联网中许多路由器的存储转发,但udp用户数据报是在运输层的端到端抽象的逻辑信道中传送的。运输层看不见路由器,路由器也看不见udp用户数据报,因为路由器只有下三层协议而没有运输层。 (2)tcp连接也和网络层中的虚电路完全不同。tcp报文段是在运输层的端到端抽象的逻辑信道中传送,但tcp连接是可靠的全双工信道,不涉及到互联网中的路由器。这些路由器根本不知道上面的运输层建立了多少个tcp连接。然而在x.25建立的虚电路所经过的交换结点中,都要保存x.25虚电路的状态信息。,端口的概念,什么是端口? 端口是运输层的地址,用来标识应用层的进程。 当传输层收到ip层交上来的数据(即tcp报文段或udp数据报),就要根据其首部中的端口号来决定应当交给哪个应用进程。 端口在进程之间的通信中所起的作用如下图所示,端口是一个16比特的地址,并用端口号进行标识。 端口号分为两类,一类是因特网指派名字和号码公司icann负责分配给一些常用的应用层程序固定使用的熟知端口,其数值一般为01023。如:ftp用21,telnet用23,smtp用25,dns用53,http用80等。 另一类则是一般端口,用来随时分配给请求通信的客户进程。其数值大于1023,a与c先建立第一个连接,端口1500端口25 a与c后建立第二个连接,端口1501端口25 同样,b与c建立第三个连接,端口1500端口25,端口号与ip地址结合使用,tcp使用“连接”作为最基本的抽象,一个连接由它的两个端点来标识,这样的端点称为插口(socket),就是我们常说的“套接字”。 插口包括ip地址(32比特)和端口号(16比特),共48比特。 在整个因特网中,在传输层通信的一对插口必须是唯一的。 从上例可知: 使用面向连接的tcp,就是建立一条端到端的虚连接。形成一对插口(3;1501)和(5;25)。,8.3 用户数据报协议udp,8.3.1、用户数据报的用途 udp只在ip的数据报服务之上增加了很少一点功能,就是端口的功能和差错检测的功能。 优点: 发送数据之前不需要建立连接,因而减少了开销和发送数据之前的时延; udp没有拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态; udp用户数据报只有8个字节的首部开销,比tcp的20个字节的首部要短; 由于udp没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。,使用udp和tcp协议的各种应用,协议字段,udp数据报,ip数据报,各字段意义,源端口字段:源端口号。 目的端口字段:目的端口号。 长度字段:udp用户数据报的长度。 检验和字段:防止udp用户数据报在传输中出错。 在计算检验和时在udp用户数据报之前要增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是udp用户数据报真正的首部。只是在计算检验和时,临时和udp用户数据报连接在一起,得到一个过渡的udp用户数据报。检验和就是按照这个过渡的udp用户数据报来计算的。伪首部既不向下传送,也不向上递交。,udp检验和的计算。(见书中 p237 图812),12字节伪首部,8字节udp首部,7字节数据,8.4 传输控制协议tcp,8.4.1、tcp报文段的首部,tcp首部,20字节的固定首部,32位,各字段意义,源端口和目的端口:各占2个字节。 序号:占4个字节,是本报文段所发送的数据部分第一个字节的序号。tcp传送的报文可看成是连续的数据流,每一个字节都对应于一个序号。例如,一报文段的序号为300,而该数据共100字节,则下一个报文段的序号就是400。 确认序号:占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段首部中的序号值。,数据偏移:占4比特,表示数据开始的地方离tcp报文段的起始处有多远。这实际上就是tcp报文段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。 保留字段: 6比特,供今后使用,目前置为0。 6个比特的控制字段 紧急比特urgent:当urg=1时,表明此报文应尽快传送,而不要按原来的排队顺序来传送。与“紧急指针”字段配合使用,由于数据中既有普通数据又有紧急数据,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接收方可以知道紧急数据共有多长。 确认比特ack:只有当ack=1时,确认序号字段才有意义。,推送比特psh:当psh=1时,表明尽快发送,不要等到整个缓存都填满了之后再发。 复位比特reset:当rst=1时,表明出现严重差错,必须释放连接,然后再重建传输连接。 同步比特syn :在建立连接时使用,当syn=1而ack=0时,表明这是一个连接请求报文段。对方若同意建立连接,在发回的报文段中使syn=1和ack=1。因此,syn=1表示这是一个连接请求或连接接受报文,而ack的值用来区分是哪一种报文。 终止比特final:用来释放一个连接,当fin=1时,表明欲发送的字节串已经发完,并要求释放传输连接。,窗口window:占2字节。此窗口告诉对方,“在未收到我的确认时,你能够发送的数据的字节数至多是此窗口的大小。” 检验和覆盖了整个的tcp报文段:tcp首部和tcp数据。 选项字段:只规定了一种选项即最大报文段长度,用以告诉对方:“我的缓存所能接收的报文段的数据字段的最大长度”,默认值为536字节。,8.4.2 tcp的数据编号与确认,tcp协议是面向字节的,tcp整个报文看成是一个个字节流组成的数据流,并使每一个字节对应一个序号。 报文序号为报文段中第一字节的序号 如:序号x,长度l的报文段,则:下一报文序号为xl 确认序号表示接收端期望下次收到的数据中的第一个数据字节的序号。,tcp发送报文段的时机,tcp有三种基本机制来控制报文段的发送: (1)tcp维持一个变量,它等于最大报文段长度mss。只要发送缓存从发送进程得到的数据到达mss字节时,就组装成一个tcp报文段,然后发送出去;(按数量) (2)发送端的应用进程指明要求发送报文段,即tcp支持的推送(push)操作;(按紧迫度) (3)发送端的一个计时器时间到了,这时就把当前已有的缓存数据装入报文段发送出去。(按时间),控制发送时机的相应算法,(1)nagle算法:发送端应用进程将欲发送的数据逐个字节地送到发送端的tcp缓存。发送端将第一个字符先发送出去,将后面到达的字符都缓存起来。当发送端收到对第一个字符的确认后,再将缓存中的所有字符装成一个报文段发送出去,同时继续对随后到达的字符进行缓存。算法还规定,当到达的字符已达到窗口大小的一半或已达到报文段的最大长度时,就立即发送。 (2)让接收端等待一段时间,使得或者缓存已能有足够的空间容纳一个较长的报文段,或者缓存已有一半的空间处于空的状态时,才向发送端发送确认。 通常将上述两种方法配合使用。使得在发送端不发送很小的报文段的同时,接收端也不要在缓存刚刚有了一点空位置就急忙将一个很小的窗口大小通知给发送端。,8.4.3 tcp流量控制和拥塞控制,tcp采用可变发送窗口的技术进行流量控制,窗口大小的单位是字节。 在tcp报文段首部的窗口字段写入的数值就是当前给对方设定的窗口数值。 发送窗口在连接建立时由双方商定,在通信过程中,接收端可根据自己的资源情况,随时动态地调整自己的接收窗口,并且告诉对方,使对方的发送窗口和自己的接收窗口一致。 hdlc中发送窗口和接收窗口是如何确定的?,1 100,101 200,301 400,401 500,501 600,601 700,701 800,801 900,201 300,接收端许诺的发送窗口,已发送 并确认,已发送 未确认,可连续发送,不可发送,说明: 发送端要发送的数据共9个报文段,每个报文段长100字节,共900个字节; 而接收端确定的发送窗口为500字节; 在当前情况下,发送方可连续发送5个报文符,而不必收到时确认,(已发送了二个,还可发送三个报文符); 发送方在收到确认后,就可将发送窗口向前移动。,利用可变窗口进行流量控制举例,主机a,主机b,序号 =1,序号 =101,序号 =201,确认序号=201 窗口=300,序号 =201,序号 =301,序号 =401,确认序号=501 窗口=200,序号 =501,确认序号=601 窗口=0,丢弃,a还能发送300字节,a还能发送200字节,允许a再发送300字节(201-500),a还能发送200字节(301-500),a还能发送100字节(401-500),a能超时重发,但不能发送序号500以后的数据,a还能发送100字节(601700),允许a再发送200字节(501700),不允许a再发送,主机a向主机b发送数据,双方商定的窗口值是400,每一个报文段,为100字节,序号的初始值为1。主机b进行了3次流量控制。,窗口大小为400,发送窗口,发送端在发送数据时,既要考虑到接收方的接收能力,又要使网络不要发生拥塞。 发送窗口的确定: 发送窗口=min通知窗口,拥塞窗口 上式表明: 发送窗口取二个窗口中的最小一个。 注: 在未发生拥塞的稳定工作状态下,二个窗口是一致的。 通知窗口:是采用接收端的流量控制窗口,其窗口值放在tcp报文首部中传送给发送端; 拥塞窗口:是发送端根据网络拥塞情况(如超时重传)得出的窗口值,来自发送端的流量控制。,拥塞控制,拥塞控制的三种技术 慢启动(slow-start) 加速递减(multiplicative decrease) 拥塞避免(congestion avoidance) 发送端的发送窗口不能超过拥塞窗口和通知窗口中的最小值,现在假定接收端不进行流量控制,只考虑拥塞窗口。,实现拥塞控制的步骤,当一个连接初始化时,将拥塞窗口设置为1。并设置慢启动的门限窗口值。 发送端若收到了对所有发出的报文段的确认,就在下一次发送时将拥塞窗口加倍。可见拥塞窗口从1开始,按指数规律增长。 当增长到门限窗口值时,就每次只将拥塞窗口加1,使拥塞窗口按线性规律增长。 若出现了超时,则将当时的拥塞窗口值减半,作为新的门限窗口值,同时拥塞窗口再次变为1。 当网络出现超时,仍重复上述过程。,慢启动:每出现一次超时,拥塞窗口都降都降低到1,使报文段慢慢注入网络中。 加速递减:每出现一次超时,门限窗口值减半。 拥塞避免:当拥塞窗口增大到门限窗口值时,拥塞窗口的增长将变为线形增长,避免网络出现拥塞。 设门限窗口值为500,设拥塞窗口为600时出现超时,说明拥塞窗口的变化过程。拥塞窗口为400时呢?,8.4.4、 tcp的重传机制,tcp的报文重发是根据所设置的定时器决定的。 当定时器的重发时间到而还没有收到确认,就要重发这一报文段。 由于路由可能发生变化,tcp采用了一种自适应算法确定超时定时器的重发时间。 平均往返时延t(旧的往返时延t)(1 )(新的往返时延样本) 0 1, 分析取不同值时的效果? 重传时间(平均往返时延) 1,分析取不同值时的效果? 一般2,往返时延的测量,实现起来很复杂,例超时重传:,发送第一个tcp报文,超时重传tcp报文,收到ack,往返时延?,往返时延?,karn提出了一个算法:在计算往返时延时,只要报文段重传了,就不采用其往返时延样本。但如果报文段的时延突然增大了很多,重传时间得不到更新,会连续重传。 修正方法:新的重传时间(旧的重传时间), 1,一般取2,8.4.5 tcp的传输连接管理,tcp是面向连接的协议,传输连接的建立和释放是每次通信中必不可少的过程。传输连接的管理就是使传输连接的建立和释放都能正常地进行。 tcp连接的建立采用客户服务器方式,主动发起连接建立的进程称之为客户,被动等待连接建立的进程称之为服务器。 为了确保连接的建立和释放都是可靠的,tcp使用三次握手的方式,其中交换了三个报文。,用三次握手建立tcp连接,主机b,主动打开,被动打开,syn = 1,序号 = x,确认序号 = y+1,syn = 1, 序号 = y, 确认序号 = x+1,确,认,确,认,主机a的tcp向主机b的tcp发出连接请求报文段,其首部中syn=1,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x。 主机b的tcp收到连接请求报文段后,如同意,则发回确认,在确认报文段中,syn=1,确认序号为x+1,同时也为自己选择一个序号y。 主机a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供水考试题及答案
- 点考试题及答案
- 抗震考试题及答案
- 中外名曲赏析知到智慧树答案
- 中西美食鉴赏知到智慧树答案
- 验光员模拟试题+答案
- 中西医结合临床科研思维与方法知到智慧树答案
- 多重耐药菌感染防控知识培训考核试卷(附答案)
- 第四章血液循环阶梯测试题(附答案)
- 2025年公务员特定项目担保合同规范文本
- 医院数据分级分类制度
- 渤海大学《软件工程》2022-2023学年第一学期期末试卷
- 税务会计岗位招聘笔试题及解答(某大型国企)2024年
- ICD-10疾病编码完整版
- 消防设备设施操作讲解培训讲课文档
- 内分泌科医疗管理制度
- 临床开展十二项细胞因子检测临床意义
- FlowmasterV7中文技术手册
- 房屋承包出租合同
- 石油化学工业的发展历程与前景
- 《滚珠丝杠螺母副》课件
评论
0/150
提交评论