版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
传输层技术1.1传输层基本功能应用层运输层网络层表示层会话层数据链路层物理层7654321OSI的七层协议体系结构TCP/IP的四层协议体系结构(a)(b)(c)五层协议的体系结构4应用层1网络接口层2网际层IP(各种应用层协议,如DNS,HTTP,SMTP等)3运输层(TCP或UDP)(这一层并没有具体内容)运输层网络层应用层数据链路层物理层54321计算机网络体系结构54321运输层提供应用进程间的逻辑通信主机A主机B应用进程应用进程路由器1路由器2AP1AP2AP3AP4IP层AP1AP2AP4AP3网络层为主机之间的通信提供服务运输层为应用层进程之间的通信提供服务主机A的协议栈主机B的协议栈LAN2WANLAN154321复用分用,差错检测运输层的作用互联网应用进程AP应用进程AP逻辑通信信道屏蔽作用运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。应用层运输层全双工可靠信道使用面向连接的协议,如TCP。接收进程发送进程数据数据?接收进程数据使用无连接的协议,如UDP。不可靠信道发送进程数据可靠信道与不可靠信道TCPUDPIP应用层与各种网络接口运输层运输层的两个主要协议互联网的正式标准:用户数据报协议UDP(UserDatagramProtocol)传输控制协议TCP
(TransmissionControlProtocol)运输协议数据单元两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU(TransportProtocolDataUnit)。TCP传送的数据单位协议是TCP报文段(segment)。UDP传送的数据单位协议是UDP报文或用户数据报。UDP与TCP的区别UDP传送数据之前不需要先建立连接。收到UDP报后,不需要给出任何确认。不提供可靠交付,但是一种最有效的工作方式。TCP提供可靠的、面向连接的运输服务。不提供广播或多播服务。开销较多。IPTCPUDP运输层网络层DNSDHCPRIP…域名解析服务动态主机配置路由选择…应用层应用TFTP文件传输专用协议流式多媒体通信HTTPSMTPFTP…万维网WWW电子邮件文件传送…TELNET远程终端接入使用UDP和TCP的典型应用和应用层协议DNS传输层技术1.2传输层端口54321运输层提供应用进程间的逻辑通信应用进程应用进程IP层AP1AP2AP4AP3主机A的协议栈主机B的协议栈54321复用分用运输层的端口复用:应用进程都可以通过运输层再传送到IP层(网络层)。分用:运输层从IP层收到发送给应用进程的数据后,必须分别交付给指明的各应用进程。如何指明各应用进程?需要考虑的问题进程的创建和撤销都是动态的,因此发送方几乎无法识别其他机器上的进程。我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个。有时我们会改换接收报文的进程,但并不需要通知所有的发送方。数据8058800端口5880080主机B主机A运输层运输层数据8058800目的端口源端口端口号(protocolportnumber)解决方法:在运输层使用协议端口号(protocolportnumber),或通常简称为端口
(port)。把端口设为通信的抽象终点。软件端口与硬件端口软件端口协议栈层间的抽象的协议端口。是应用层的各种协议进程与运输实体进行层间交互的地点。不同系统实现端口的方法可以不同。硬件端口不同硬件设备进行交互的接口。进程端口号端口用一个16位端口号进行标志,允许有65,535个不同的端口号。端口号只具有本地意义,只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号没有联系。708090P2P1P3192.168.1.7:80708090P2P1P3192.168.10.2:80端口由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的端口号,而且还要知道对方的IP地址。01023102449,15149,15265,535服务器端使用的端口号客户端使用的端口号熟知端口(全球通用端口号)(IANA负责分配)登记端口(在IANA登记)(为没有熟知端口的应用程序使用)短暂端口(通信结束后,被系统收回)两大类、三种类型的端口UDPTCPIPSMTPFTPTelnetRPCDNSSNMPTFTP53161692523HTTP80HTTPS443SNMP(trap)2120162111常用的熟知端口传输层技术2.1UDP概述UDP概述复用和分用UDP只在IP的数据报服务之上增加了一些功能:差错检测无连接。发送数据之前不需要建立连接。使用尽最大努力交付。即不保证可靠交付。面向报文。UDP一次传送和交付一个完整的报文。没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。支持一对一、一对多、多对一、多对多等交互通信。首部开销小,只有8个字节。UDP的主要特点UDP通信的特点:简单方便,但不可靠。IP数据报的数据部分IP首部IP层UDP首部UDP用户数据报的数据部分运输层应用层报文应用层UDP是面向报文的发送方UDP对应用层交下来的报文,既不合并,也不拆分,按照样发送。接收方UDP对IP层交上来的UDP用户数据报,去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。报文UDP数据UDP首部IP数据IP首部报文UDP数据UDP首部IP数据IP首部UDP是面向报文的应用程序必须选择合适大小的报文。若报文太长,IP层在传送时可能要进行分片,降低IP层的效率。若报文太短,会使IP数据报的首部的相对长度太大,降低IP层的效率。应用层运输层端口abc(请注意:运输层之间的这条虚线不是一条连接,表示的是一条逻辑通道)xy运输层端口应用进程应用进程H1H2a→xb→xc→y复用分用不可靠的信道
P1P2P3
应用层P4P5多对一的通信UDP通信和端口号的关系复用:将UDP用户数据报组装成不同的IP数据报,发送到互联网。分用:根据UDP用户数据报首部中的目的端口号,将数据报分别传送到相应的端口,以便应用进程到端口读取数据。H2一对多的通信应用层运输层端口abc(请注意:运输层之间的这条虚线不是一条连接,表示的是一条逻辑通道)xy运输层端口应用进程应用进程H1复用分用不可靠的信道
P1P2P3
应用层P4P5a→xa→yc→yUDP通信和端口号的关系复用:将UDP用户数据报组装成不同的IP数据报,发送到互联网。分用:根据UDP用户数据报首部中的目的端口号,将数据报分别传送到相应的端口,以便应用进程到端口读取数据。传输层技术2.2UDP报文格式源端口目的端口长度检验和2222首部字段:8个字节,4个字段,每个字段为2个字节。字节数据首部IP数据报发送在前2个字段:首部,数据。数据首部UDP用户数据报UDP的首部格式源端口:源端口号。在需要对方回信时选用。不需要时可用全0。目的端口:目的端口号。终点交付报文时必须使用。长度:UDP用户数据报的长度,其最小值是8(仅有首部)。检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。用户数据报UDP有两个部分:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是2个字节。伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报IP层UDP报文到达端口2端口3端口1UDP分用UDP基于端口的分用接收方UDP根据首部中的目的端口号,把报文通过相应的端口上交给应用进程。如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方。在计算检验和时,临时把12字节的“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和(不传输)。伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据0100100101001110→数据0100011100000000→数据和0(填充)1001011011101101→求和得出的结果0110100100010010→检验和按二进制反码运算求和将得出的结果求反码04112字节伪首部8字节UDP首部7字节数据填充UDP的检验和是把首部和数据部分一起都检验。全0171510871315全0数据数据数据数据数据数据数据全0计算UDP检验和的例子接收端计算结果为全1,证明正确传输层技术3.1TCP特点TCP最主要的特点TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。TCP最主要的特点TCP是面向连接的运输层协议。每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。TCP提供可靠交付的服务。TCP提供全双工通信。面向字节流1.TCP中的“流”(stream)指的是流入或流出进程的字节序列。2.面向字节流:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。TCP面向流的概念TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。768H
发送TCP报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H109H加上TCP首部构成TCP报文段TCPTCP字节流字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接(虚连接,逻辑连接)TCP面向流的概念
端口…TCP…TCP接收缓存发送缓存端口发送端接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程
TCP不关心应用进程一次把多长的报文发送到TCP缓存。TCP根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节,形成TCP报文段。TCP连接(虚连接,逻辑连接)报文段报文段报文段…TCP面向流的概念传输层技术3.2TCP连接端口服务器客户TCPTCP客户每一条TCP连接有两个端点。TCP连接套接字TCP连接的端点:套接字(socket)或插口。TCP的连接TCP把连接作为最基本的抽象。例如:套接字(socket)套接字socket=(IP地址:端口号)套接字socket=(0:2028)每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定:TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}TCP连接,IP地址,套接字TCP连接就是由协议软件所提供的一种抽象。TCP连接的端点是抽象的套接字,即(IP地址:端口号)。同一个IP地址可以有多个不同的TCP连接。同一个端口号也可以出现在多个不同的TCP连接中。Socket有多种不同的意思应用编程接口API称为socketAPI,简称为socket。socketAPI中使用的一个函数名也叫作socket。调用socket函数的端点称为socket。调用socket函数时其返回值称为socket描述符,可简称为socket。在操作系统内核中连网协议的Berkeley实现,称为socket实现。传输层技术4.1停止等待协议IP网络提供的是不可靠的传输不可靠传输理想传输条件的特点1.传输信道不产生差错。2.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。在理想传输条件下,不需要采取任何措施就能够实现可靠传输。但实际网络都不具备理想传输条件。必须使用一些可靠传输协议,在不可靠的传输信道实现可靠传输。停止等待协议每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。全双工通信的双方既是发送方也是接收方。假设仅考虑A发送数据,而B接收数据并发送确认。因此A叫做发送方,而B叫做接收方。A发送完分组M1后就暂停发送,等待B的确认(ACK)。B收到M1
向A发送ACK。A在收到了对M1
的确认后,就再发送下一个分组M2。M1M2ACK1ACK2停止发送,等待ACK收到ACK,继续发送确认M1确认M2时间时间停止发送,等待ACKAB1.无差错情况2.出现差错两种情况:B接收M1时检测出了差错,就丢弃M1,其他什么也不做(不通知A收到有差错的分组)。M1在传输过程中丢失了,这时B当然什么都不知道,也什么都不做。在这两种情况下,B都不会发送任何信息。2.出现差错问题:A如何知道B是否正确收到了M1呢?解决方法:超时重传A为每一个已发送的分组设置一个超时计时器。A只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组M2。若A在超时计时器规定时间内没有收到B的确认,就认为分组错误或丢失,就重发该分组。分组错误ABM1M1ACK1丢弃超时重传toutABM1M1分组丢失ACK1超时重传tout启动超时计时器
,等待ACK启动超时计时器
,等待ACK确认M1确认M12.出现差错3.确认丢失和确认迟到确认丢失若B所发送的对M1的确认丢失了,那么A在设定的超时重传时间内将不会收到确认,因此A在超时计时器到期后重传
M1。假定B正确收到了A重传的分组M1。这时B应采取两个行动:(1)丢弃这个重复的分组M1,不向上层交付。(2)向A发送确认。3.确认丢失和确认迟到确认迟到B对分组M1的确认迟到了,因此A在超时计时器到期后重传
M1。B会收到重复的M1,丢弃重复的M1,并重传确认分组。A会收到重复的确认。对重复的确认的处理:丢弃。ABM1M1确认丢失ACK1超时重传toutACK1ABM1M1确认迟到ACK1超时重传toutM2重复ACK1,丢弃等待ACK2
ACK1重复,丢弃确认M1
重复,丢弃确认M1
确认M1确认M1发送下一个3.确认丢失和确认迟到优点:简单。缺点:信道利用率太低。TDRTTATD+RTT+TAB分组确认tt分组确认(5-3)信道利用率当往返时间RTT远大于分组发送时间TD
时,信道的利用率会非常低。4.信道利用率停止等待协议要点停止等待。发送方每次只发送一个分组。在收到确认后再发送下一个分组。暂存:在发送完一个分组后,发送方必须暂存已发送的分组的副本,以备重发。编号。对发送的每个分组和确认都进行编号。超时重传。发送方为发送的每个分组设置一个超时计时器。若超时计时器超时位收到确认,发送方会自动超时重传分组。超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些,防止不必要的重传。简单,但信道利用率太低。由于信道上一直有数据不间断地传送,流水线传输可获得很高的信道利用率。B分组ttAACK流水线传输:在收到确认之前,发送方连续发出多个分组。连续ARQ协议和滑动窗口协议采用流水线传输方式。提高传输效率:流水线传输传输层技术4.2连续ARQ协议连续ARQ协议发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被连续发送出去,而不需要等待对方的确认。发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。累积确认:接收方对按序到达的最后一个分组发送确认,表示:到这个分组为止的所有分组都已正确收到了。123456789101112(a)发送方维持发送窗口(发送窗口大小是5)发送窗口(b)收到一个确认后,发送窗口向前滑动窗口向前滑动发送窗口被确认123456789101112发送窗口M3
正确M4
正确M5
正确M0M1M4M5ACK0ACK1
确认M0,将M0
提交给上层协议或用户ACK2
确认M1,将M1
提交给上层协议或用户M2
正确ACK5
为累积确认,表示M5
及之前的M2、M3、M4
都正确。将M2、M3、M4、M5提交给上层协议或用户ACK5M2ACK1M3累积确认连续ARQ协议采用Go-back-N(回退N)。Go-back-N(回退N):表示需要再退回来重传已发送过的N个分组。当通信线路质量不好时,连续ARQ协议会带来负面的影响。累积确认优点容易实现,即使确认丢失也不必重传。缺点不能向发送方反映出接收方已经正确收到的所有分组的信息。选择性重传只重传没有被确认的分组减少重传的数据量管理复杂,需要接收端缓存失序的数据
发送方接收方网络01234567012…01234567012…DATA3DATA2DATA1DATA0选择性重传
发送方接收方网络01234567012…01234567012…ACK1ACK2ACK3选择性重传
发送方接收方网络01234567012…01234567012…超时DATA0选择性重传重传
发送方接收方网络01234567012…01234567012…DATA0选择性重传
发送方接收方网络01234567012…01234567012…ACK0选择性重传
发送方接收方网络01234567012…01234567012…ACK0选择性重传
发送方接收方网络01234567012…01234567012…选择性重传差错控制常用方法停止-等待协议回退N帧协议选择重传协议实现简单性能差、延时长发一个-等确认-再发下一个
不用管理窗口和缓存连续发,信道利用率高性能较差发多个-有错误-重发错误后的N个
实现较简单连续发,信道利用率高性能好只重传错误的数据
实现复杂传输层技术5.TCP首部5.5TCP报文段的首部格式TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中各字段的作用。TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项(n是整数)。因此TCP首部的最小长度是20字节。TCP首部20字节的固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32位SYNRSTPSHACKURG填充TCP数据部分TCP首部TCP报文段IP数据报的
数据部分IP首部发送在前位08162431IP数据报TCP首部的长度是4n字节(n是整数)。TCP首部的最小长度是20字节。5.5TCP报文段的首部格式我正在发送的编号你可以发送的编号我能接收多少TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充源端口和目的端口:各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能通过端口实现。位0816243120字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充序号:占4字节。TCP连接中传送的数据流中的每一个字节都有一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。位08162431TCP首部现有5000个字节的数据。假设报文段的最大数据长度为1000个字节,初始序号为1001。报文段1序号=1001(数据字节序号:1001~2000)报文段2序号=2001(数据字节序号:2001~3000)报文段3序号=3001
(数据字节序号:3001~4000)报文段4序号=4001
(数据字节序号:4001~5000)报文段5序号=5001
(数据字节序号:5001~6000)20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充确认号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。位08162431TCP首部记住:若确认号=N,则表明:到序号N–1为止的所有数据都已正确收到。20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充数据偏移(即首部长度):占4位,指出TCP报文段的数据部分起始处距离TCP报文段的起始处有多远。单位是32位字(以4字节为计算单位)。也叫做首部长度。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充保留:占6位,保留为今后使用,但目前应置为0。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充紧急URG:控制位。当URG=1时,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充确认ACK:控制位。只有当ACK=1时,确认号字段才有效。当ACK=0时,确认号无效。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充推送PSH(PuSH):控制位。接收TCP收到PSH=1的报文段后,就尽快(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满后再交付。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充复位RST(ReSeT):控制位。当RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充同步SYN(SYNchronization):控制位。同步SYN=1表示这是一个连接请求或连接接受报文。当SYN=1,ACK=0时,表明这是一个连接请求报文段。当SYN=1,ACK=1时,表明这是一个连接接受报文段。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充终止FIN(FINish):控制位。用来释放一个连接。FIN=1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充窗口:占2字节。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。位08162431TCP首部记住:窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化。20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。位08162431TCP首部在计算检验和时,临时把12字节的“伪首部”和TCP报文段连接在一起。伪首部仅仅是为了计算检验和。伪首部TCP首部数据首部TCP总长度源IP地址目的IP地址06IP数据报字节4411212字节发送在前数据首部TCP报文段20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充紧急指针:占2字节。在URG=1时,指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),指出了紧急数据的末尾在报文段中的位置。位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充选项:长度可变,最长可达40字节。位08162431TCP首部填充:使整个TCP首部长度是4字节的整数倍。20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充位08162431TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG填充选项:长度可变,最长可达40字节。——长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”位08162431MSS(MaximumSegmentSize)是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以,MSS是“TCP报文段长度减去TCP首部长度”。TCP首部选项(2):最大报文段长度MSS最大报文段长度MSS(MaximumSegmentSize)是每个TCP报文段中的数据字段的最大长度。与接收窗口值没有关系。TCP报文段长度=数据字段长度+TCP首部长度数据字段长度=TCP报文段长度–TCP首部长度链路层首部链路层尾部IP首部TCP首部数据TCP报文段MSSMTUIP数据报选项(2):最大报文段长度MSS不能太小网络利用率降低。例如:仅1个字节。利用率就不会超过1/41。不能太大开销增大。分片传输出错时,要整个分组。应尽可能大只要在IP层传输时不再分片。默认值=536字节。报文段长度=536+20=556字节。IP数据报长度=576字节。主机A主机Bt1
64KB窗口t2
t3
t4
选项(3):窗口扩大TCP窗口字段长度=16位,最大窗口大小=64K字节。对于传播时延和带宽都很大的网络,为获得高吞吐率较,需要更大的窗口。主机A主机Bt2
t1
256KB窗口到达的选项(3):窗口扩大窗口扩大选项:占3字节,其中一个字节表示移位值S。新的窗口值位数从16增大到(16+S),相当于把窗口值向左移动S位。移位值允许使用的最大值是14,窗口最大值增大到2(16+14)–1=230–1。窗口扩大选项可以在双方初始建立TCP连接时进行协商。选项(8):时间戳占10字节。最主要的2个字段:时间戳值字段(4字节)和时间戳回送回答字段(4字节)。2个主要功能:计算往返时间RTT防止序号绕回PAWS(ProtectAgainstWrappedSequencenumbers)。序号重复时,为了使接收方能够把新报文段和迟到很久的旧报文段区分开,可以在报文段中加上时间戳。TCP首部分析抓包分析TCP首部:传输层技术6.1TCP滑动窗口以字节为单位的滑动窗口TCP使用流水线传输和滑动窗口协议实现高效、可靠的传输。TCP的滑动窗口是以字节为单位的。发送方A和接收方B分别维持一个发送窗口和一个接收窗口。发送窗口:在没有收到确认的情况下,发送方可以连续把窗口内的数据全部发送出去。凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。接收窗口:只允许接收落入窗口内的数据。前移待发送,但当前不允许发送已发送并收到确认A的发送窗口=20允许发送的序号26272829303132333435363738394041424344454647484950515253545556B期望收到的序号前沿后沿前移收缩发送窗口A根据B给出的窗口值,构造出自己的发送窗口。发送窗口里面的序号表示允许发送的序号。窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,因而可能获得更高的传输效率。待发送,但当前不允许发送已发送并收到确认A的发送窗口=20允许发送的序号26272829303132333435363738394041424344454647484950515253545556B期望收到的序号前沿后沿前移前移收缩发送窗口A根据B给出的窗口值,构造出自己的发送窗口。发送窗口里面的序号表示允许发送的序号。窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,因而可能获得更高的传输效率。假定A发送了序号为31~41共11个字节的数据P1=后沿,P2=当前,P3=前沿。P3–P1=A的发送窗口(又称为通知窗口)P2–P1=已发送但尚未收到确认的字节数P3–P2=允许发送但尚未发送的字节数(又称为可用窗口)待发送,但当前不允许发送已发送并收到确认A的发送窗口=20字节,未收到确认前位置不变允许发送但尚未发送262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3可用窗口发送窗口不允许接收已发送确认并交付主机B的接收窗口=20字节允许接收26272829303132333435363738394041424344454647484950515253545556未按序收到B收到了序号为32和33的数据,但未收到序号为31的数据。因此,因此发送的确认报文段中的确认号是31(即期望收到的序号)。接收窗口不允许接收已发送确认并交付主机B的接收窗口=20字节允许接收26272829303132333435363738394041424344454647484950515253545556收到待发送,但当前不允许发送已发送并收到确认26272829303132333435363738394041424344454647484950515253545556P1P2P3ACK=1,确认号=31,窗口=20A的发送窗口=20窗口的滑动窗口的滑动不允许接收已发送确认并交付主机B的接收窗口=20字节允许接收26272829303132333435363738394041424344454647484950515253545556待发送,但当前不允许发送已发送并收到确认26272829303132333435363738394041424344454647484950515253545556P1P2P3序号=31,确认号=x,窗口=wA的发送窗口=20窗口的滑动不允许接收已发送确认并交付主机允许接收B的接收窗口=20字节26272829303132333435363738394041424344454647484950515253545556待发送,但当前不允许发送已发送并收到确认26272829303132333435363738394041424344454647484950515253545556P1P2P3序号=31,确认号=x,窗口=wA的发送窗口=20前移窗口的滑动不允许接收已发送确认并交付主机B的接收窗口=20字节允许接收26272829303132333435363738394041424344454647484950515253545556待发送,但当前不允许发送已发送并收到确认26272829303132333435363738394041424344454647484950515253545556P1P2P3ACK=1,确认号=34,窗口=20A的发送窗口=20收到窗口的滑动不允许接收已发送确认并交付主机B的接收窗口=20字节允许接收26272829303132333435363738394041424344454647484950515253545556不允许发送已发送并收到确认26272829303132333435363738394041424344454647484950515253545556P1P2P3ACK=1,确认号=34,窗口=20A的发送窗口=20收到可用窗口增大不允许发送已发送并收到确认P1A的发送窗口=20字节(已满,可用窗口=0)2627282930313233343536373839404153545556P2P3可用窗口=0停止发送序号=34,确认号=x,窗口=u已发送但未收到确认424344454647484950515253窗口的滑动A未收到确认的原因有:①
B未发送;②B已发送,但还未到达A。为保证可靠传输,A只能认为B还没有收到这些数据。A经过一段时间后(由超时计时器控制)就重传这部分数据,重新设置超时计时器,直到收到B的确认为止。如果A按序收到落在发送窗口内的确认号,就使发送窗口向前滑动,并发送新的数据。P2不允许发送已发送并收到确认P1A的发送窗口=20字节(已满,可用窗口=0)2627282930313233343536373839404153545556P2P3可用窗口=0停止发送序号=34,确认号=x,窗口=u已发送但未收到确认424344454647484950515253窗口的滑动A未收到确认的原因有:①
B未发送;②B已发送,但还未到达A。为保证可靠传输,A只能认为B还没有收到这些数据。A经过一段时间后(由超时计时器控制)就重传这部分数据,重新设置超时计时器,直到收到B的确认为止。如果A按序收到落在发送窗口内的确认号,就使发送窗口向前滑动,并发送新的数据。发送方的应用进程把字节流写入TCP发送缓存。最后被确认的字节发送方应用程序发送缓存最后发送的字节发送窗口已发送TCP序号增大发送窗口通常只是发送缓存的一部分。不能发送太快,否则发送缓存会溢出。缓存中的字节数=发送应用程序最后写入缓存的字节-最后被确认的字节最后写入缓存的字节暂时存放:(1)发送应用程序传送给发送方TCP准备发送的数据;(2)TCP已发送出但尚未收到确认的数据。发送缓存与发送窗口接收方的应用进程从TCP接收缓存中读取尚未被读取的字节。下一个期望收到的字节接收方应用程序接收缓存接收窗口TCP序号增大下一个读取的字节未按序到达的字节按序到达的字节暂时存放:(1)按序到达的、但尚未被接收应用程序读取的数据;(2)未按序到达的数据。若不能及时读取,缓存最终会被填满,使接收窗口减小到零。如果能够及时读取,接收窗口就可以增大,但最大不能超过接收缓存的大小。接收缓存与接收窗口需要强调三点第一:发送窗口是根据接收窗口设置的,但在同一时刻,发送窗口并不总是和接收窗口一样大(因为有一定的时间滞后)。第二:TCP标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。第三:TCP要求接收方必须有累积确认的功能,以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。但接收方不应过分推迟发送确认,否则会导致发送方不必要的重传,捎带确认实际上并不经常发生。传输层技术6.2TCP超时重传超时重传时间的选择互联网环境复杂,IP数据报所选择的路由变化很大,导致运输层的往返时间(RTT)的变化也很大。TCP发送方在规定的时间内没有收到确认就要重传已发送的报文段。但重传时间的选择是TCP最复杂的问题之一。TCP超时重传时间设置不能太短,否则会引起很多报文段的不必要的重传,使网络负荷增大。不能过长,会使网络的空闲时间增大,降低了传输效率。TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间。这两个时间之差就是报文段的往返时间RTT。新的RTTS
(1
)
(旧的RTTS)+
(新的RTT样本)(5-4)
加权平均往返时间RTTS
加权平均往返时间RTTS
又称为平滑的往返时间。超时重传时间RTORTO(RetransmissionTime-Out)应略大于加权平均往返时间RTTS。RFC6298建议RTO:其中:RTTD
是RTT偏差的加权平均值。RTO=RTTS+4RTTD (5-5)RFC6298建议RTTD
:其中:
是个小于1的系数,其推荐值是1/4,即0.25。新的RTTD=(1
)
(旧的RTTD)+
RTTS
新的RTT样本
(5-6)往返时间RTT发送一个报文段重传报文段收到ACK时间往返时间RTT是对哪一个报文段的确认?超时往返时间(RTT)的测量相当复杂超时重传报文段后,如何判定此确认报文段是对原来的报文段的确认,还是对重传报文段的确认?Karn算法在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本。新问题:当报文段的时延突然增大很多时,在原来得出的重传时间内,不会收到确认报文段,于是就重传报文段。但根据Karn算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新,造成很多不必要的重传。修正的Karn算法报文段每重传一次,就把RTO增大一些:新的RTO
(旧的RTO)系数
的典型值=2。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值。……连续的字节流………第一个字节块第二个字节块110001501300035014500假设最大报文段长度MSS=5000字节,起始序号=1。接收方收到了和前面的字节流不连续的两个字节块,缺少序号1001~1500、3001~3500、4501~5000的字节。确认报文:ACK=1,确认号=1001,窗口=6000选择确认SACK问题:若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?解决:选择确认SACK(SelectiveACK)类别=4长度=2允许SACK选项SACK选项类别=5长度=选项长度第1个字节块的左边界第1个字节块的右边界第2个字节块的左边界第2个字节块的右边界第3个字节块的左边界第3个字节块的右边界第4个字节块的左边界第4个字节块的右边界最多4个字节块RFC2018对SACK的规定如果要使用选择确认,在建立TCP连接时,要在TCP首部的选项中加上允许SACK选项,且双方必须事先商定好。如果使用选择确认,原来首部中的确认号的用法仍然不变(累积确认)。只是在TCP首部中都增加了SACK选项,以便报告收到的不连续的字节块的边界。确认号=1001……连续的字节流………L1=1501R1=3001L2=3501R1=4501第一个字节块第二个字节块110001501300035014500确认号=1001类别=5长度=181501300135014501左边界=第一个字节的序号,右边界=最后一个字节序号+1。SACK传输层技术7.TCP流量控制目录02TCP的传输效率01利用滑动窗口实现流量控制5.7.1利用滑动窗口实现流量控制流量控制
(flowcontrol):让发送方的发送速率不要太快,使接收方来得及接收。利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。ACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许A发送序号201至500共300字节seq=101,DATAA发送了序号101至200,还能发送200字节seq=301,DATAA发送了序号301至400,还能再发送100字节新数据seq=1,DATAA发送了序号1至100,还能发送300字节seq=401,DATAA发送了序号401至500,不能再发送新数据了seq=201,DATAA超时重传旧的数据,但不能发送新的数据允许A发送序号501至600共100字节seq=501,DATAA发送了序号501至600,不能再发送了不允许A再发送(到序号600为止的数据都收到了)seq=201,DATA丢失!利用可变窗口进行流量控制举例A向B发送数据,MSS(最大报文长度)=100字节。在连接建立时,B告诉A:”我的接收窗口rwnd=400(字节)”。A向B发送数据,MSS=100字节。在连接建立时,B告诉A:”我的接收窗口rwnd=400(字节)”。ACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许A发送序号201至500共300字节seq=101,DATAA发送了序号101至200,还能发送200字节seq=301,DATAA发送了序号301至400,还能再发送100字节新数据seq=1,DATAA发送了序号1至100,还能发送300字节seq=401,DATAA发送了序号401至500,不能再发送新数据了seq=201,DATAA超时重传旧的数据,但不能发送新的数据允许A发送序号501至600共100字节seq=501,DATAA发送了序号501至600,不能再发送了不允许A再发送(到序号600为止的数据都收到了)seq=201,DATA丢失!允许A发送序号601至1000共400字节
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度班主任老带新教学实践与技能培训协议3篇
- 2025年度老旧小区土地及房屋买卖合同范本3篇
- 冰激凌培训大纲
- 2024收养协议书锦集:收养家庭后续支持与服务方案3篇
- 二零二五年水电项目专用材料质量追溯体系建设合同3篇
- 2025年度新能源汽车研发合作采购合同范本3篇
- 工人入职培训
- 幼儿午睡培训
- 二零二五年度服务器销售与增强现实(AR)技术合同3篇
- 2025年度卫星遥感测绘技术服务合同6篇
- 骨科中医护理方案培训计划(2篇)
- 2024年美国X射线荧光光谱仪(XRF)市场现状及上下游分析报告
- Other-the-other-others-another等习题辨析(附答案+解析)
- DZ∕T 0289-2015 区域生态地球化学评价规范(正式版)
- 2024年江苏农牧科技职业学院单招职业适应性测试题库必考题
- 食品机械与设备智慧树知到期末考试答案章节答案2024年西北农林科技大学
- DB32T 4400-2022《饮用水次氯酸钠消毒技术规程》
- PayPal企业账户注册流程及申请所需资料
- 工程造价毕业设计总结报告
- 861个CCER备案项目清单
- 直肠脱垂的护理查房
评论
0/150
提交评论