TCP包结构
- 格式:doc
- 大小:528.00 KB
- 文档页数:11
TCPIP协议头部结构TCP/IP协议是计算机网络通信中最重要的协议之一,它定义了数据在网络中的传输方式和规则。
TCP/IP协议头部是数据传输中包含的一部分,包含了必要的信息以描绘和控制数据传输的过程。
本文将详细介绍TCP/IP协议头部的结构。
TCP/IP协议头部结构如下:首部长度(Header Length):占4位,用于指示TCP/IP协议头部的长度。
由于TCP/IP协议头部中的各字段长度不固定,所以需要首部长度字段来指示实际长度。
首部长度字段的速与单位是4字节,所以一个数据报的首部长度最多为60字节。
服务类型(Type of Service):占8位,用于指示数据报在网络中的处理优先级。
这个字段一般用于指示比如数据报的延迟要求、吞吐量要求、可靠性要求等。
总长度(Total Length):占16位,表示整个IP数据报的长度。
包括首部和数据部分的总长度。
总长度字段可以对IP数据报进行分片和重组操作。
标识(Identification):占16位,用于标识IP数据报的碎片。
当IP数据报需要进行分片时,原始数据报的标识字段会被分片后的每个数据片段所继承。
标志(Flags):占3位,用于指示数据报的分片情况。
包括“不分片”、“更多分片”、“最后一个分片”。
这些标志字段主要用于数据报的重组。
分段偏移(Fragment Offset):占13位,用于表示分片结束的字节数。
当IP数据报需要进行分片时,原始数据报的分段偏移字段会被分片后的每个数据片段所继承。
生存时间(Time to Live):占8位,用于指示数据报在网络中的最大存活时间。
每经过一个路由器,生存时间减1,当生存时间为0时,数据报会被丢弃。
协议(Protocol):占8位,用于指示IP数据报传递给哪个上层协议处理。
例如,TCP协议的值为6,UDP协议的值为17头部校验和(Header Checksum):占16位,用于检验IP首部的完整性。
TCP/IP 协议体系结构简介1、TCP/IP 协议栈协议栈四层模型四层模型TCP/IP 这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。
这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。
网络接口层网络接口层模型的基层是网络接口层。
模型的基层是网络接口层。
负责数据帧的发送和接收,负责数据帧的发送和接收,负责数据帧的发送和接收,帧是独立的网络信息传输单元。
帧是独立的网络信息传输单元。
帧是独立的网络信息传输单元。
网络接口层将帧网络接口层将帧放在网上,或从网上把帧取下来。
放在网上,或从网上把帧取下来。
互联层互联层互联协议将数据包封装成internet 数据报,并运行必要的路由算法。
数据报,并运行必要的路由算法。
这里有四个互联协议:这里有四个互联协议:网际协议IP :负责在主机和网络之间寻址和路由数据包。
:负责在主机和网络之间寻址和路由数据包。
地址解析协议ARP :获得同一物理网络中的硬件主机地址。
:获得同一物理网络中的硬件主机地址。
网际控制消息协议ICMP :发送消息,并报告有关数据包的传送错误。
:发送消息,并报告有关数据包的传送错误。
互联组管理协议IGMP :被IP 主机拿来向本地多路广播路由器报告主机组成员。
主机拿来向本地多路广播路由器报告主机组成员。
传输层传输层传输协议在计算机之间提供通信会话。
传输协议的选择根据数据传输方式而定。
传输协议在计算机之间提供通信会话。
传输协议的选择根据数据传输方式而定。
两个传输协议:两个传输协议:传输控制协议TCP :为应用程序提供可靠的通信连接。
适合于一次传输大批数据的情况。
并适用于要求得到响应的应用程序。
求得到响应的应用程序。
用户数据报协议UDP :提供了无连接通信,且不对传送包进行可靠的保证。
适合于一次传输小量数据,可靠性则由应用层来负责。
可靠性则由应用层来负责。
应用层应用层应用程序通过这一层访问网络。
应用程序通过这一层访问网络。
TCP/IP体系结构4个层次的功能(1)网络接口层。
该层是整个体系结构的基础部分,负责接收IP层的IP数据包,通过问络向外发送;或接收处理从网络上来的物理帧,袖出IP数据包,向IP层发送。
该层是主机与网络的实际连接层,与邮政系统相比,网络接u层个的比特流传输相当于信件的运送。
(2)网络互连层。
该层是整个体系结构的核心部分,负责处理夏联网中计算机之间的通信,向传输层提供统一的数据包。
它的主要功能是处理来白传输层的分组发送请求,处理接收的数据包,处理互连的路径。
网络互连层IP协议提供了不可靠、无连接的数据传输服务.数据包从一个主机经过多个路由器到达目的主机。
如果路由器不能正确地传输数据包,或者检测到异常现象影响数据包的正确传输,路由器就要通知原土机或路由器采取相应的措施。
ICMP(Internet Control Messages ProtocoI)为IP协议提供了差错控制、网络拥塞控制和路由控制等功能。
网络互联层的ARP(Address Resolution Pfotocol)提供地址转换服务,查找与给定IP地址对应的主机的网络物理地址(网卡的MAC地址)。
与ARP功能相反的是RARP(只e—verseARP),RARP主要解决物理地址到IP地址的转换。
ARP采用广播消息的方法来获取网上IP地址对应的MAC地址。
对于使用低层介质访问机制的IP地址来说,ARP是非常通用的。
当一台主机要发送报文时,旨先通过A只F获取MAC地址,并把结果存储在ARP缓存的IP地址和MAC地址表中,下次该站需要发送报文时,就不用再发送ARP请求,只要在ARP缓存中查找就可以了。
与ARP类似,RARP也采用广播消息的方法来决定与MAC地址相对应的IP地址。
RARP对于网络上的无盘客户机来说显得尤为重要,因为无盘客户机在系统引导时根本无法知道它自己的IP地址。
(3)传输层。
该层是整个体系结构的控制部分.负责应用进程之间端到端的通信。
试述TCP/IP 四层模型和OSI 七层模型中每一层所完成的功能,以及这两个模型的不同点。
(一)OSI七层模型OSI模型将网络结构划分为七层:即物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
每一层均有自己的一套功能集,并与紧邻的上层和下层交互作用。
,在顶端与底端之间的每一层均能确保数据以一种可读、无错、排序正确的格式被发送。
物理层是OSI模型的最低层或第一层,该层包括物理连网媒介,如电缆连线连接器。
物理层的协议产生并检测电压以便发送和接收携带数据的信号。
尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。
网络物理问题,如电线断开,将影响物理层。
数据链路层是O S I 模型的第二层,它控制网络层与物理层之间的通信。
它的主要功能是将从网络层接收到的数据分割成特定的可被物理层传输的帧。
帧是用来移动数据的结构包,它不仅包括原始(未加工)数据,或称“有效荷载”,还包括发送方和接收方的网络地址以及纠错和控制信息。
其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。
网络层,即O S I模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。
例如,一个计算机有一个网络地址1 0 . 3 4 . 9 9 . 1 2 (若它使用的是T C P / I P 协议)和一个物理地址0 0 6 0 9 7 3 E 9 7 F 3 。
传输层主要负责确保数据可靠、顺序、无错地从A点到传输到2点(A、E点可能在也可能不在相同的网络段上)。
因为如果没有传输层,数据将不能被接受方验证或解释,所以,传输层常被认为是O S I 模型中最重要的一层。
会话层负责在网络中的两节点之间建立和维持通信。
术语“会话”指在两个实体之间建立数据交换的连接;常用于表示终端与主机之间的通信。
会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。
TCP /IP四层模型TCP/IP就是一组协议得代名词,它还包括许多协议,组成了TCP/IP协议簇。
TC P /IP协议簇分为四层,IP位于协议簇得第二层(对应OS I得第三层),TCP位于协议簇得第三层(对应OSI得第四层)。
TCP/ I P通讯协议采用了4层得层级结构,每一层都呼叫它得下一层所提供得网络来完成自己得需求。
这4层分别为:应用层:应用程序间沟通得层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间得数据传送服务,如传输控制协议(TCP).用户数据报协议(UDP)等,TCP与UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确左数据已被送达并接收。
互连网络层:负责提供基本得数据封包传送功能,让每一块数据包都能够到达目得主机(但不检查就是否被正确接收),如网际协议(1 P)。
网络接口层:对实际得网络媒体得管理,泄义如何使用实际网络(如Ether net、Seri a 1 Line等)来传送数据。
0 S I七层模型OSI(Open s y stem I n t erconn e ction,开放系统互连)七层网络模型称为开放式系统互联参考模型,就是一个逻辑上得泄义,一个规范,它把网络从逻借上分为了7层。
每一层都有相关、相对应得物理设备,比如路由器,交换机。
OSI七层模型就是一种框架性得设讣方法,建立七层模型得主要目得就是为解决异种网络互连时所遇到得兼容性问题,其最主要得功能使就就是帮助不同类型得主机实现数据传输。
它得最大优点就是将服务、接口与协议这三个概念明确地区分开来,通过七个层次化得结构模型使不同得系统不同得网络之间实现可靠得通讯。
图1 osi 七层结构模型优点建立七层模型得主要目得就是为解决异种网络互连时所遇到得兼容性问题。
它得最大 优点就是将服务、接口与协议这三个概念明确地区分开来:服务说明某一层为上一层提供一 些什么功能,接口说明上一层如何使用下层得服务,而协议涉及如何实现本层得服务;这样各 层之间具有很强得独立性,互连网络中各实体采用什么样得协议就是没有限制得,只要向上 提供相同得服务并且不改变相邻层得接口就可以了。
计算机网络应用TCP IP参考模型结构TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是最早运行在ARPANET(美国国防部高级研究计划署设计开发的网络)中的通信协议。
现在已成为Internet重要的通信协议。
事实上,它是一个协议集,目前已包含了100多个协议,TCP 和IP是其中最基本、最重要的两个协议。
经过多年的发展和完善,TCP/IP协议已演变成为一种工业标准,并得到广泛应用。
TCP/IP参考模型是对OSI参考模型的简化,如同OSI参考模型一样,它也是一种分层体系结构。
TCP/IP参考模型分为4层,由下至上,依次为网络接口层、网络层(IP层)、传输层和应用层。
虽然TCP/IP参考模型与OSI参考模型一样采用层次结构的概念,并对传输层定义了相似的功能,但两者在层次划分与使用上有很大的区别。
其模型与OSI参考模型对应关系如图1-28所示。
OSI参考模型TCP/IP参考模型图1-28 TCP/IP参考模型与OSI参考模型对应关系1.网络接口层在TCP/IP参考模型中,未对网络层以下做出明确定义,只是指出主机必须通过某种协议连接到网络,才能够发送IP分组。
网络接口层是TCP/IP参考模型的最低层,包括了能使用TCP/IP与物理网络进行通信的协议,且对应着OSI的物理层和数据链路层。
它主要负责接收从网络层传来的IP数据报,并将IP数据报通过低层物理网络发送出去,或者从低层物理网络上接收物理信号并转换成数据帧,抽出IP数据报传递给网络层。
网络接口层可以是面向连接的,也可以是无连接的。
但如果是面向连接的,则在报头中必须指明分组中帧的数量和目的地中帧需要重新装配的顺序。
它通过CRC(循环冗余校验)的方法来确保接收数据帧的正确性。
2.网络层网络层也称IP层,对应于OSI参考模型的网络层。
它主要负责计算机之间的数据传送,即将数据分组路由到正确的目的地。
TCP/IP参考模型的层次及各层的主要功能在如何使用分层模型来描述TCP/IP的问题上争论很多,但共同的观点是TCP/IP的层次数比OSI参考模型的7层要少.TCP/IP参考模型可以分为4个层次:应用层(application layer);传输层(transport layer);互联网络层(internet layer);主机-网络层(host to network layer)。
其中,TCP/IP参考模型的应用层与OSI参考模型的应用层相对应,TCP/IP参考模型的传输层与OSI参考模型的传输层相对应,TCP/IP参考模型的互联网络层与OSI参考模型的网络相对应,TCP/IP参考模型的主机-网络层与OSI参考模型的数据链路层和物理层相对应。
在TCP/IP参考模型中,对OSI参考模型的表示层、会话层没有对应的协议。
(1)主机-网络层在TCP/IP参考模型中,主机-网络层是参考模型的最低层,它负责通过网络发送和接收IP数据报。
TCP/IP参考模型允许主机连入网络时使用多种现成的与流行的协议,例如局域网协议或其他一些协议。
在TCP/IP的主机-网络层中,它包括各种物理网协议,例如局域网的Ethernet、局域网的Token Ring、分组交换网的X.25等。
当这种物理网被用作传送IP数据包的通道时,我们就可以认为是这一层的内容。
这体现了TCP/IP协议的兼容性与适应性,它也为TCP/IP的成功奠定了基础。
(2)互联网络层在TCP/IP参考模型中,互联网络层是参考模型的第二层,它相当于OSI参考模型网络层的无连接网络服务。
互联网络层负责将源主机的报文分组发送到目的主机,源主机与目的主机可以在一个网上,也可以在不同的网上。
互联网络层的主要功能包括以下几点。
①处理来自传输层的分组发送请求。
在收到分组发送请求之后,将分组装入IP数据报,填充抱头,选择发送路径,然后将数据报发送到相应的网络输出线。
②处理接收的数据报。
tcpip5层协议模型
摘要:
1.TCP/IP协议模型概述
2.TCP/IP协议模型的5层结构
3.各层的功能和作用
4.实际应用中的TCP/IP协议模型
正文:
TCP/IP协议模型是一种网络通信协议的模型,它是互联网协议的总称。
它的全称是“传输控制协议/因特网互联协议”,其中,“传输控制协议”(TCP)是传输层协议,“因特网互联协议”(IP)是网络层协议。
TCP/IP协议模型是互联网的基础,所有的网络通信都必须遵循这个模型。
TCP/IP协议模型分为5层,从上到下分别是:应用层、传输层、网络层、数据链路层和物理层。
每一层都有自己特定的功能和作用。
应用层是最上层,包括HTTP、FTP、SMTP 等应用协议,负责应用程序之间的通信。
传输层负责端到端的数据传输,包括TCP 和UDP 协议。
网络层负责数据包的路由和转发,主要包括IP、ICMP 等协议。
数据链路层负责物理连接之间的数据传输,包括以太网、PPP 等协议。
物理层则是最底层,负责物理设备之间的通信,包括电缆、集线器等设备。
在实际应用中,TCP/IP 协议模型被广泛使用。
例如,当我们在浏览器中输入一个网址时,浏览器就会根据TCP/IP 协议模型,将请求发送到服务器,然后服务器再将网页内容发送回浏览器。
在这个过程中,TCP/IP 协议模型的
每一层都发挥了重要的作用。
TCPIP协议族体系结构TCP/IP协议族是⼀个四层协议系统,⾃底⽽上分别是数据链路层、⽹络层、传输层和应⽤层。
每⼀层完成不同的功能,且通过若⼲协议来实现,上层协议使⽤下层协议提供的服务。
1、数据链路层负责帧数据的传递。
(经过数据链路层封装的数据称为帧)数据链路层两个常⽤的协议时ARP(地址解析协议)和RARP(逆地址解析协议)。
它们实现了IP地址和机器物理地址之间的相互转换。
⽹络层使⽤IP地址寻址⼀台机器,⽽数据链路层使⽤物理地址寻址⼀台机器,因此⽹络层必须先将⽬标机器的IP地址转换为其物理地址,才能使⽤数据链路层提供的服务,这就是ARP协议的⽤途。
RARP协议仅⽤于⽹络上的某些⽆盘⼯作站(没有硬盘)。
因缺乏存储设备,⽆盘⼯作站⽆法记住⾃⼰的IP地址,但他们可以利⽤⽹卡上的物理地址来向⽹络管理者(服务器或⽹络管理软件)查询⾃⾝的IP地址。
运⾏RARP服务的⽹络管理者通常存有该⽹络上所有机器的物理地址到IP地址的映射。
2、⽹络层负责数据怎样传递过去。
⽹络层实现数据包的选路和转发。
WAN(⼴域⽹)通常使⽤众多分级的路由器来连接分散的主机或LAN(局域⽹),因此,通讯的两台主机⼀般不是直接相连的,⽽是通过多个中间节点(路由器)连接的。
⽹络层的任务就是选择这些中间节点,已确定两台主机之间的通讯路径。
同时,⽹络层对上层协议隐藏了⽹络拓扑连接的细节,使得在传输层和⽹络应⽤程序看来,通讯的双⽅是直接相连的。
3、传输层负责传输数据的控制(准确性、安全性)传输层为两台主机上的应⽤程序提供端到端(end to end)的通信。
与⽹络层使⽤的逐跳通信⽅式不同,传输层只关⼼通信的起始端和⽬的端,⽽不在乎数据包的中转过程。
垂直的实线箭头表⽰TCP/IP协议族各层之间的实体通信,⽽⽔平的虚线箭头表⽰逻辑通信线路。
传输层为应⽤程序封装了⼀条端到端的逻辑通信链路,它负责数据的收发、链路的超时重传等。
传输层协议主要有三个:TCP 协议、UDP协议、SCTP协议。
TCP数据包结构TCP提供一种面向连接的、全双工的、可靠的字节流服务。
在一个TCP连接中,仅有两方进行彼此通信。
广播和多播不能用于TCP。
TCP的接收端必须丢弃重复的数据。
TCP对字节流的内容不作任何解释。
对字节流的解释由TCP连接双方的应用层解释。
TCP通过下列方式来提供可靠性:应用数据被分割成TCP认为最适合发送的数据块,称为报文段或段。
TCP协议中采用自适应的超时及重传策略。
TCP可以对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
TCP的接收端必须丢弃重复的数据。
TCP还能提供流量控制。
TCP报文段格式源端口和目的端口字段——各占2字节。
端口是传输层与应用层的服务接口。
传输层的复用和分用功能都要通过端口才能实现。
序号字段——占4字节。
TCP连接中传送的数据流中的每一个字节都编上一个序号。
序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移——占4bit,它指出TCP报文段的数据起始处距离CP报文段的起始处有多远。
“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。
保留字段——占6bit,保留为今后使用,但目前应置为0。
紧急比特URG——当URG=1时,表明紧急指针字段有效。
它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认比特ACK——只有当ACK=1时确认号字段才有效。
当ACK=0时,确认号无效。
复位比特RST(Reset) ——当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。
终止比特FIN(FINal)——用来释放一个连接。
当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段——占2字节。
窗口字段用来控制对方发送的数据量,单位为字节。
TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
检验和——占2字节。
检验和字段检验的范围包括首部和数据这两部分。
在计算检验和时,要在TCP 报文段的前面加上12字节的伪首部。
紧急指针字段——占16bit。
紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
选项字段——长度可变。
TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。
填充字段——这是为了使整个首部长度是4字节的整数倍。
TCP首部的主要选项:最大报文段长度MSS(Maximum Segment Size)是TCP报文段中的数据字段的最大长度。
MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。
”窗口扩大因子,用于长肥管道。
时间戳,可用于测量往返时延RTT。
TCP的数据编号与确认TCP协议是面向字节的。
TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。
在连接建立时,双方要商定初始序号。
TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。
TCP的确认是对接收到的数据的最高序号表示确认。
接收端返回的确认号是已收到的数据的最高序号加1。
因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。
为提高效率,TCP可以累积确认,即在接收多个报文段后,一次确认。
一、TCP的流量控制TCP采用大小可变的滑动窗口进行流量控制。
窗口大小的单位是字节。
TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。
发送窗口在连接建立时由双方商定。
但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。
发送端要发送900字节长的数据,划分为9个100字节长的报文段,而发送窗口确定为500字节。
发送端只要收到了对方的确认,发送窗口就可前移。
发送TCP要维护一个指针。
每发送一个报文段,指针就向前移动一个报文段的距离。
发送端已发送400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。
现在发送端还可发送300字节。
发送端收到对方对前400字节数据的确认,但对方通知发送端必须把窗口减小到400字节。
现在发送端最多还可发送400字节的数据。
利用可变窗口大小进行流量控制双方确定的窗口值是400二、慢启动和拥塞避免发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。
因此,每一个TCP连接需要有以下两个状态变量:接收端窗口rwnd(receiver window) 又称为通知窗口(advertised window)。
拥塞窗口cwnd(congestion window)。
接收端窗口rwnd和拥塞窗口cwnd接收窗口rwnd这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。
接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。
拥塞窗口cwnd(congestion window) 是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。
发送窗口的上限值发送端的发送窗口的上限值应当取为接收端窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定:发送窗口的上限值=Min[rwnd,cwnd]当rwnd < cwnd 时,是接收端的接收能力限制发送窗口的最大值。
当cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。
慢启动算法的原理在刚开始发送时,可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。
在每收到一个对新的报文段的确认后,将拥塞窗口增加至2倍MSS的数值。
用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。
慢启动和拥塞避免算法的实现举例当TCP连接进行初始化时,将拥塞窗口置为1。
图中的窗口单位不使用字节而使用报文段。
慢启动门限的初始值设置为16 个报文段,即ssthresh = 16。
发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。
我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。
在执行慢启动算法时,拥塞窗口cwnd 的初始值为1,发送第一个报文段M0。
发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增大到2,于是发送端可以接着发送M1和M2两个报文段。
接收端发回ACK2和ACK3。
发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加倍。
现在发送端的cwnd从2增大到4,并可发送M4—M6共4个报文段。
发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加倍,因此拥塞窗口cwnd随着传输次数按指数规律增长。
当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd = 16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。
假定拥塞窗口的数值增长到24时,网络出现超时(表明网络拥塞了)。
更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢启动算法。
当cwnd = 12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。
乘法减小(multiplicative decrease)“乘法减小“是指不论在慢启动阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢启动门限值ssthresh 设置为当前的拥塞窗口值乘以0.5。
当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。
加法增大(additive increase)“加法增大”是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
进入拥塞避免算法后,拥塞窗口的增大速度由指数增长变为线性增长。
TCP中默认报文段丢失是由于网络拥塞造成超时而引起的。
“拥塞避免”并非指完全能够避免了拥塞。
利用以上的措施要完全避免网络拥塞还是不可能的。
“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
三、TCP的重传机制重传机制是TCP中最重要和最复杂的问题之一。
TCP每发送一个报文段,就对这个报文段设置一次计时器。
只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。
由于TCP的下层是一个互连网环境,IP数据报所选择的路由变化很大。
因而传输层的往返时延的方差也很大。
往返时延的自适应算法记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。
这两个时间之差就是报文段的往返时延。
将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延RTT。
每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延RTT:平均往返时延RTT =a*(旧的RTT)+(1-a)*(新的往返时延样本)在上式中,0=<a<1。
参数a的选择若a很接近于1,表示新算出的平均往返时延RTT和原来的值相比变化不大,而新的往返时延样本的影响不大(RTT值更新较慢)。
若选择a接近于零,则表示加权计算的平均往返时延RTT受新的往返时延样本的影响较大(RTT值更新较快)。
典型的a值为7/8。
超时重传时间RTO(Retransmission Time-Out)计时器的RTO应略大于上面得出的RTT,即:RTO = b * RTT这里b是个大于1的系数。
若取b很接近于1,发送端可及时地重传丢失的报文段,因此效率得到提高。
但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担。
因此TCP原先的标准推荐将b值取为2。
往返时间测量的复杂性TCP报文段1没有收到确认。
重传(即报文段2)后,收到了确认报文段ACK。
如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?Karn算法在计算平均往返时延RTT时,TCP不采用重传报文段的往返时延样本。
由于避免了二义性的存在,这样得出的平均往返时延RTT和重传时间就较准确。
当网络时延增大时,TCP忽略了重传对往返时延的影响,会造成反复重传。
修正的Karn算法报文段每重传一次,就将重传时间增大一些:新的重传时间=r*(旧的重传时间)系数r的典型值是2 。
当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和重传时间的数值。
实践证明,这种策略较为合理。
四、TCP的传输连接管理TCP是面向连接的协议,提供透明、可靠的数据流传输。