tcp/ip网络协议中的tcp是指什么
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。在TCP/IP协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报文协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面, UDP则为应用层提供一种非常简单的服务。它只是把称作数据包的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。扩展资料在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。 对普通用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信。参考资料:百度百科 - TCP
TCP/IP 指传输控制协议/因特网互联协议(Transmission Control Protocol / Internet Protocol),又名网络通讯协议
TCP是OSI模型的安全连接的端口层。
传输控制协议:TCP(Transmission Control Protocol)TCP之所以称为可靠的传输方式,是因为在使用TCP传递数据之前,会双方各自建立一条相互信任的通道,用来传递数据。比如:A、B使用TCP作为传输层传输方式传递数据,流程大致概括如下:A向B打一个招呼,说:你好,我想跟你建立一个tcp的连接,可以吗?B接收到A的招呼,如果愿意建立连接,会说:你好,可以的。A给B发的连接就建立成功了。B在向A回答的时候,也会同时向A提出建立连接的申请(因为TCP是全双工的,双向的):B会向A说:你好,我也想跟你建立一个TCP的连接,可以吗?A除了之前接收到B给自己的确认,还会接收到B发过来的申请,A收到这个申请后,会向B发出一个确认。这时,B与A的连接也建立成功了。这个过程叫做“TCP三次握手”,当双方都确认建立这个连接之后,就开始传递数据了。。这就是可靠的传输方式。

计算机网络TCP/IP等相关协议与原理
网络分层(由下到上):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 重点在: 物理层、数据链路层(这两层需要了解基本的原理)、网络层、传输层(这两层需要了解功能作用,原理和相关的一些协议)、应用层(http协议)。开始之前先跟大家说一下协议,很多人不知道协议是什么,尤其是刚接触这方面东西的时候,一听协议,感觉很吊的样子,但是又不知其所云,其实,协议可以理解为:一个双方通信需要共同遵守的规范。记住,在网络分层协议中,所有下层的协议的作用就是为了上层服务,谨记!接下来,我跟大家一一道来,首先登场的是物理层。这一层主要就是跟硬件打交道,这一层也是所有上层的基础。数据链路层强调的是一种传输规范,这是指什么呢?说白了,就是指每次传输的最大容量(最大传输单元),数据组织结构(以太网帧的概念)、传输的目的地等。MAC地址:烧录在网卡ROM中的一串数字,长度48bit。分组交换:较大数组分割为较小数组,依次发送。原因是数据链路层有不定长度的最大传输单元。以太网的帧的概念:前导码(8字节)+本体(首部+数据+FCS)原理:依靠MAC地址决定向哪个端发送数据,需要“转发表”。转发表是交换机自动学习得到的。作用:保证不同数据链路层下数据的可达性。ARP协议(获取MAC地址)和ICMP协议(数据发送异常通知)作用:识别对端信息的地址。地址为32位正整数表示,分为四个部分,每个部分由8位整数组成。说白了,是识别要传输目的地的地址。每位对应十进制范围:0-255。[注]:网络标识和主机标识是为了寻址而发明。A类:第一位为“0”的地址,前8位为网络标识,0.0.0.0-127.0.0.0是A类IP地址的理论范围。B类:前两位为“10”的地址,前16位是网络标识,128.0.0.0-191.255.0.0,主机标识16位。C类:前三位为“110”的地址。前24位网络标识,192.0.0.0-223.255.255.0,主机标识为8位。D类:前4位为“1110”的地址。网络标识为32位,没有主机标识。IP地址长度仅可表达43亿左右的主机数目,(区分网络标识和主机标识)共32位(一段连续的0和一段连续的1)组成,1的长度就表示网络标识的长度。子网掩码的作用是区分IP地址是否在同一子网内。分组数据发送到目标地址的功能,持有路由控制表,它在路由控制表中查找目标IP地址对应的下一个路由器地址。源主机--->网卡--->路由器1(路由器控制表)--->路由器2--->网卡--->目标主机IP协议最大包为2的16次幂,等于65536.接下来介绍几个IP协议相关的协议或技术:将域名转化为IP地址(域名也是分层处理请求的,每一层都有对应的DNS服务器)。通过目标IP地址,定位下一个接收数据包的网络设备(主机或路由器)的MAC地址。在数据链路层发送广播,如果没有ARP技术,就没有办法穿透中间的服务器(ARP请求+ARP应答)。NAT:用于将局域网中的私有地址转换为全局IP地址的技术。每个路由器只有一个对外的全局IP地址,如果一个内网主机都向外通讯,怎么办?就要使用到NATP技术,可转为TCP和UDP端口号。不同的内网IP被转换成同一个公共的IP,但是NAPT技术可以使用不同的端口加以区分。NAT和NAPT都需要路由器内部维护一张转换表。举例:TCP首次SYN时,会生成这个表,关闭连接时会发出FIN包,收到这个包应答时转换表会被删除。定义:实现应用程序之间的通信。TCP:面向有连接的协议,建立连接需要3步,关闭连接需要4步。具备数据重传、流量控制等功能,能正确处理丢包功能并有效利用宽带。UDP:比较适合做实时视频和音频,效率比TCP高。TCP有5个要素:源IP地址、目标IP地址、源端口号、目标端口号、协议号,同一台机器的端口号可以区分为不同的应用程序。校验和=源IP地址(IP协议首部)+目标IP地址(IP协议首部)+源端口+目标端口包长度=首部长度+数据长度应该可以从下图看出来,TCP的首部比UDP的首部要复杂的多,所以也一定会影响的传输的速度和效率。简单介绍一下首部的相关参数:序列号:发送数据的位置确认应答号:下一次应用接收到的数据的序列号数据偏移:TCP首部的长度,单位为4字节。控制位:长度为8位。窗口大小:用于表示从应答号开始能够接受多少个8位字节。紧急指针:尽在URG控制位为1时有效,表示紧急数据的末尾在TCP数据部分中的位置。接下来最重要的一个技术点来了:以下是通俗话解释连接和断开过程:建立连接的过程:1.client:我要建立连接。2.server:我知道你要建立连接了,我这边没问题。3.client:我了解你知道我要建立连接了,开始通信吧!结束连接的过程:1.client:我要关闭连接了2.server:你那边可以关闭了3.server:我这边也准备关闭了4.client:我已关闭,你可以关闭了[注]:连接是双方面的,所以关闭也是要自行关闭的。数据包重发:保证ACK的值和发送方下次发送数据包的序列号相等。接收方通过TCP首部中的控制位SYN判断这个数据是否曾经接收过?接收过就会舍弃。重传超时时间(RTO)动态改变,略大于连接往返时间(RTT),RTO有自己的估算公式定义:无需等待ACK,可以发送的最大数量。(窗口大小由接收端控制)作用:为了解决发送数据包后,直至ACK确认返回之前,发送端都无法在进行发送的问题。定义:接收端有缓存区数据溢出(如果窗口较大)通俗一点的意思就是让发送方慢一点,免得接收方接收不过来。TCP会慢启动算法得出窗口的大小,对发送数据量进行控制。发送方拥有一个拥塞窗口,对发送的数据量进行控制。TCP协议中的窗口是指:发送方和接收方窗口中的最小值。1.通讯开始,发送方窗口为1。每收到一个ACK确认后,拥塞窗口翻倍。2.由于指数级增长快,很快就会出现确认包超时。3.设置慢启动阈值,它的值为拥塞窗口的大小的一半。4.将拥塞窗口大小设置为1,重新进入慢启动过程。5.慢启动阈值存在,当拥塞窗口大小达到阈值时,不再翻倍,而是线性增长。6.随窗口大小的不断增长,可以收到三次重复的ACK,进入“快速重发”阶段。7.TCp将慢启动阈值设置为当前拥塞窗大小的一半,再将拥塞窗口大小设成阈值大小。 8.拥塞窗口又会线性增加,直至下一次出现3次ACK或者超时。

计算机网络基础:TCP、UDP协议的简单介绍及区别
TCP(Transmission Control Protocol,传输控制协议),属于TCP/IP协议模型中的传输层,是基于连接的协议。TCP协议通过序列化应答和必要时重发数据包,为应用程序提供了可靠的传输流和虚拟连接服务。面向连接指的是在发送数据之前,必须与对方建立可靠的连接,就像打电话一样,你得先拨号,然后保证线路通畅,对方接听了电话,这时才能互相通话。这个建立连接的过程被称作“三次握手”。妹子:在吗?(你没有回应……)GG,你将永远失去她。妹子:在吗?(一个小时过去了)你:在这时候妹子的问题已经解决了,而你却激动地等待着她的回复。(她什么时候才能回我啊.jpg)当然这不是我们想看到的结果妹子:在吗?(第一次握手)你:在(第二次握手)妹子:问你一个问题(第三次握手)这时,她确定你在,所以会准备问问题,你也确定她在,所以激动紧张的等待没有白费接下来你们开始愉快地聊天(数据传输)终止连接的过程称之为“四次挥手”或者“四次分手”(感觉后者不太吉利,以下就用挥手)继续用刚才的微信发消息来举例:你:我讲完了, 你懂了吗?(第一次挥手)妹子:懂了,我也问完了(第二次挥手)妹子:谢谢谢,那我下了(第三次挥手)你:好,我也下了(第四次挥手)如果只有一、二、三次挥手的话,结果很容易自己想到。建立连接的三次握手,和终止连接的四次挥手,都是为了保证双方应答有效,避免让某一方持续等待接受数据而造成的资源浪费。在例子中体现为,开始聊天时不会咕咕咕,结束时不会突然去世。UDP(User Datagram Protocol,用户数据报协议),属于TCP/IP模型中的传输层,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。注:传输可靠指的是,通过拥塞控制、流量控制、超时重发、丢弃重复数据等等可靠性检测手段,保证数据无差错、不丢失、不重复且按序到达。

谈计算机网络TCP协议的仿真与实现
谈计算机网络TCP协议的仿真与实现TCP是计算机网络中运输层协议,连接着应用层和网络层,发挥着非常关键的作用。那么,计算机网络TCP协议的仿真与实现是?作为计算机网络中较为重要的一种运输层协议,TCP连接着应用层和网络层,发挥着非常关键的作用。在TCP/IP协议中,我们重点关注TCP。本文主要立足于TCP协议的特点,详细介绍了TCP协议的主要特性。一、TCP协议的概述(一) TCP协议的特点首先,TCP提供的连接服务稳定性有保证。相关的连接有着和打电弧相似的建立过程。先拨电话号码,当对方接通回复“喂”的时候,再告知对方自己是谁,完成任务后释放;其次,TCP提供连接必须是只针对两个客户端,也就是实现一对一的传输;最后,TCP提供全双工通信。这个特点就是保证通信的两端在使用TCP的时候可以随时通信,这样就可以及时传输数据。(二) TCP端口号和套接字地址TCP端口号:端口号只能对计算机中的进程进行标记,一般使用两个字节来完成标记工作,这也就是端口号的本地意义。当端口号并不是我们熟悉的状况时,要使用数值为1024~49151的等记端口号,使用的过程中要在UANA上登记,避免中间重复使用。无连接的UDP和TCP也有着自己的端口号,但是两个端口号彼此之间是相互独立的,各自有着不同的用途。套接字地址:CP中的套接字,一般在表达的过程中会用同一个名词表达不一样的含义。也就是说,当套接字被一个程序使用,那么socket函数中使用的函数以及调用它的端口都会叫做scocket。当紧急URG给系统发出有关紧急数据传输的通知时,相关的紧急数据应该作为优先级任务,尽快被传送。二、 TCP的连接与释放(一)建立连接全双工是TCP传输数据的主要方式,在整个过程中有三次握手的方式来完成对该项目的建立,并且TCP的连接和释放都是使用客户—服务器方式,连接的建立也是从服务器开始。首先将SYN设置为1,然后将数据包头部的那个确认字段设置为x+1,接下来将最开始的序列号放在数据包头部的数列中。当这个链接的数据段被接受之后,那么相应的数据段就会被送到缓冲区,同时,服务器也能够及时收到客户端从另外一边发来的数据段,最后完成相关输出的确认。(二) TCP的连接释放TCP传输数据的'主要方式是全双工,因此,数据传输结束后,所有的连接都会被释放,并且每个连接的释放都是单个放行的。首先,当被A发送的数据能够到达B,为了杜绝失效的报文段在文本中存在,最后一个一个ACK被发送完后,相关的环节就会处理。这种办法就能够及时高效地处理掉连接过程中请求报文段的问题。(三) TCP的连接复位一般情况下,有三种情况需要复位。首先,当TCP连接的端口并不存在时,另一端TCP就能发送一个报文段,这时需要关闭相关的连接;其次,如果一端的TCP出现一些异常情况,那么就可以通过发送复位来终止连接;最后一种情况是,当一端的TCP长时间没有使用,那么就可以发送复位信息报,将其关闭。(四) TCP拥塞控制TCP的拥塞控制是TCP工作中存在的一种现实问题,会对整个工作造成一定程度的影响,因此,必须针对这种情况进行改进。首先,慢启动和拥塞避免。TCP用来发送数据是慢启动和拥塞避免算法展开的依据,这种算法的实现必须通过在TCP中增加两个变量;其次,快恢复和快重传。这种主要是针对发送端展开的,多种网络会导致端口查收到重复ACK,因此,应该找到事故原因,及时处理。三、TCP的仿真实验(一)仿真实验的设置我们都知道TCP是有链接的可靠的传输层协议,所以在传输运用过程中也会出现错误。下面我们通过以下仿真实验,来了解TCP在传输FTP文件时一数据报丢失的情况,来详细分析下这一解决过程。我们用OPNET来做TCP的仿真实验,这只是在一个比较简单的环境下在做关于TCP的仿真实验,测试出数据图通过分析和比较来观察TCP处理数据丢失包的具体工作原理和过程。选择“结果- - > >安排Pannels显示所有“查看保存结果。顶部多媒体的快速decovery conquestion窗口由于“TCP雷诺”,在重新传输。这个conquestion窗口只是减少了一半,而不是1MSS,从而快速恢复。graphe的底部显示了发送之间的关系序列号码和收到seqment ack服务器上的数量。服务器故意把一个数据包给丢失,这时客户服务器就会发出三个ACK,会被重新发送。这时把FTP的Command Mix的值设置为100%,把Inter-Requests设置为constant 3600,把File Size设置为FTP,把Server,type of serveice值设置为best effort,把RSVP parameters值设置为 None;用NotUsed来设置Back-End Custom Application值。(二)仿真实验的过程针对TCP数据传输开始时,拥塞窗口设置为最大的MSS值,慢启动算法开始,cwnd被设置为200,那么400,800,1600.......以103S,拥塞窗口达到6500的最大阈值,为了不让拥塞窗口将不会太增加网络阻塞引起的,然后执行拥塞避免算法,每一个RTT,拥塞窗口将增加一个单位,然后在107s当FTP数据包丢失,然后进行处理,拥塞窗口的值下降,TCP协议在慢启动和拥塞避免算法的实现,窗口的大小增长将呈现线性增长。设置最大窗口阈值,根据3响应消息重复判断丢包,重传丢失的数据包和直接的阈值,为当前拥塞窗口6500的一半,这是快速重传(Tahoe),然后转移到慢启动。然后再转入慢开始。在窗口大小到达大约80000后,应该是收到3个连续ACK,若根据3个重复的应答报文就会知道有没有丢包,而且丢失的分组会被重传,此时的ssthresh的值就为拥塞窗口的一半,这样就进入了进入拥塞避免阶段。(三)仿真实验小结用OPNET做TCP的仿真实验,数据包丢失,TCP数据的变化都被形象的描绘出来了,很好的诠释了这一失误和改正过程。为TCP以后出错改正做了很好的例子。四、结语综上所述,网络普及的这个时代,让我们不断地认识到了计算机网络的重要性,学生们也开始越来越重视对TCP的研究。在简单的OSI体系中,TCP发挥着较为重要的作用,因此,我们必须深入研究其工作原理,便于在运输层中顺利地运用TCP协议。 ;

计算机网络——TCP/UDP协议
计算机网络七层模型中,传输层有两个重要的协议:(1)用户数据报协议UDP (User Datagram Protocol)(2)传输控制协议TCP (Transmission Control Protocol)UDP 在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP 报文后,不需要给出任何确认。虽然UDP 不提供可靠交付,但在某些情况下UDP 却是一种最有效的工作方式。TCP 则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。UDP 的主要特点是:首部手段很简单,只有8 个字节,由四个字段组成,每个字段的长度都是两个字节。前面已经讲过,每条TCP 连接有两个端点,TCP 连接的端点叫做套接字(socket)或插口。套接字格式如下:套接宁socket= (IP 地址:端口号’)每一条TCP 连接唯一地被通信两端的两个端点(即两个套接宇)所确定。即:TCP 连接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}3次握手链接4次握手释放链接断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。各个状态节点解释如下:下面为了讨论问题的万便,我们仅考虑A发送数据而B 接收数据并发送确认。因此A 叫做发送方,而B 叫做接收方。“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像上述的这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。滑动窗口协议比较复杂,是TCP 协议的精髓所在。这里先给出连续ARQ 协议最基本的概念,但不涉提到许多细节问题。详细的滑动窗口协议将在后面讨论。下图表示发送方维持的发送窗口,它的意义是:位于发送窗口内的5 个分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。连续ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接收方一般都是采用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都己正确收到了。累积确认的优点是容易实现,即使确认丢失也不必重传。但缺点是不能向发送方反映出接收方己经正确收到的所有分组的信息。例如,如果发送方发送了前5 个分组,而中间的第3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N (回退N ),表示需要再退回来重传己发送过的N 个分组。可见当通信线路质量不好时,连续ARQ 协议会带来负面的影响。TCP 的滑动窗口是以字节为单位的。现假定A 收到了B 发来的确认报文段,其中窗口是20 (字节),而确认号是31 (这表明B 期望收到的下一个序号是31 ,而序号30 为止的数据己经收到了)。根据这两个数据, A 就构造出自己的发送窗口,其位置如图所示。发送窗口表示:在没有收到B 的确认的情况下, A可以连续把窗口内的数据都发送出去。凡是己经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。发送窗口后沿的后面部分表示己发送且己收到了确认。这些数据显然不需要再保留了。而发送窗口前沿的前面部分表示不允许发送的,因为接收方都没有为这部分数据保留临时存放的缓存空间。现在假定A 发送了序号为31 ~ 41 的数据。这时发送窗口位置并未改变,但发送窗口内靠后面有11个字节(灰色小方框表示)表示己发送但未收到确认。而发送窗口内靠前面的9 个字节( 42 ~ 50 )是允许发送但尚未发送的。】再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 号为止的数据是已经发送过确认,并且己经交付给主机了。因此在B 可以不再保留这些数据。接收窗口内的序号(31~50)足允许接收的。B 收到了序号为32 和33 的数据,这些数据没有按序到达,因为序号为31 的数据没有收到(也许丢失了,也许滞留在网络中的某处)。请注意, B 只能对按序收到的数据中的最高序号给出确认,因此B 发送的确认报文段中的确认号仍然是31 (即期望收到的序号)。现在假定B 收到了序号为31 的数据,并把序号为31~33的数据交付给主机,然后B删除这些数据。接着把接收窗口向前移动3个序号,同时给A 发送确认,其中窗口值仍为20,但确认号是34,这表明B 已经收到了到序号33 为止的数据。我们注意到,B还收到了序号为37, 38 和40 的数据,但这些都没有按序到达,只能先存在接收窗口。A收到B的确认后,就可以把发送窗口向前滑动3个序号,指针P2 不动。可以看出,现在A 的可用窗口增大了,可发送的序号范围是42~53。整个过程如下图:A 在继续发送完序号42-53的数据后,指针P2向前移动和P3重合。发送窗口内的序号都已用完,但还没有再收到确认。由于A 的发送窗口己满,可用窗口己减小到0,因此必须停止发送。上面已经讲到, TCP 的发送方在规定的时间内没有收到确认就要重传已发送的报文段。这种重传的概念是很简单的,但重传时间的选择却是TCP 最复杂的问题之一。TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT,TCP 保留了RTT的一个加权平均往返时间RTTs (这又称为平滑的往返时间, S 表示Smoothed 。因为进行的是加权平均,因此得出的结果更加平滑)。每当第一次测量到RTT样本时, RTTs值就取为所测量到的RTT样本值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTTs:新的RTTs = (1 - α)×(旧的RTTs) + α ×(新的RTT样本)α 越大表示新的RTTs受新的RTT样本的影响越大。推荐的α 值为0.125,用这种方法得出的加权平均往返时间RTTs 就比测量出的RTT值更加平滑。显然,超时计时器设置的超时重传时间RTO (RetransmissionTime-Out)应略大于上面得出的加权平均往返时间RTTs。RFC 2988 建议使用下式计算RTO:RTO = RTTs + 4 × RTTdRTTd是RTT 的偏差的加权平均值,它与RTTs和新的RTT样本之差有关。计算公式如下:新的RTTd= (1- β)×(旧的RTTd) + β × |RTTs-新的RTT样本|发现问题:如图所示,发送出一个报文段。设定的重传时间到了,还没有收到确认。于是重传报文段。经过了一段时间后,收到了确认报文段。现在的问题是:如何判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?若收到的确认是对重传报文段的确认,但却被源主机当成是对原来的报文段的确认,则这样计算出的RTTs 和超时重传时间RTO 就会偏大。若后面再发送的报文段又是经过重传后才收到确认报文段,则按此方法得出的超时重传时间RTO 就越来越长。若收到的确认是对原来的报文段的确认,但被当成是对重传报文段的确认,则由此计算出的RTTs 和RTO 都会偏小。这就必然导致报文段过多地重传。这样就有可能使RTO 越来越短。Kam 提出了一个算法:在计算加权平均RTTs 时,只要报文段重传了就不采用其往返时间样本。这样得出的加权平均RTTs 和RTO 就较准确。新问题:设想出现这样的情况:报文段的时延突然增大了很多。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Kam 算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。解决方案:对Kam 算法进行修正,方法是z报文段每重传一次,就把超时重传时间RTO 增大一些。典型的做法是取新的重传时间为2 倍的旧的重传时间。当不再发生报文段的重传时,才根据上面给出的公式计算超时重传时间。流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制可以很方便地在TCP 连接上实现对发送方的流量控制。接收方的主机B 进行了三次流量控制。第一次把窗口减小到rwnd =300,第二次又减到rwnd = 100 ,最后减到rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B 重新发出一个新的窗口值为止。我们还应注意到,B 向A 发送的三个报文段都设置了ACK=1,只有在ACK=1 时确认号字段才有意义。发生死锁:现在我们考虑一种情况。上图中, B 向A 发送了零窗口的报文段后不久, B 的接收缓存又有了一些存储空间。于是B 向A 发送了rwnd = 400 的报文段。然而这个报文段在传送过程中丢失了。A 一直等待收到B 发送的非零窗口的通知,而B 也一直等待A 发送的数据。如果没有其他措施,这种互相等待的死锁局面将一直延续下去。解决方案:TCP 为每一个连接设有一个持续计时器(persistence timer)。只要TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1 宇节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。1 TCP连接时是三次握手,那么两次握手可行吗?在《计算机网络》中是这样解释的:已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ACK包。这样就会白白浪费资源。而经过三次握手,客户端和服务器都有应有答,这样可以确保TCP正确连接。2 为什么TCP连接是三次,挥手确是四次?在TCP连接中,服务器端的SYN和ACK向客户端发送是一次性发送的,而在断开连接的过程中,B端向A端发送的ACK和FIN是是分两次发送的。因为在B端接收到A端的FIN后,B端可能还有数据要传输,所以先发送ACK,等B端处理完自己的事情后就可以发送FIN断开连接了。3 为什么在第四次挥手后会有2个MSL的延时?MSL是Maximum Segment Lifetime,最大报文段生存时间,2个MSL是报文段发送和接收的最长时间。假定网络不可靠,那么第四次发送的ACK可能丢失,即B端无法收到这个ACK,如果B端收不到这个确认ACK,B端会定时向A端重复发送FIN,直到B端收到A的确认ACK。所以这个2MSL就是用来处理这个可能丢失的ACK的。1 文件传送协议文件传送协议FTP (File Transfer Protocol) [RFC 959]是因特网上使用得最广泛的文件传送协议,底层采用TCP协议。盯P 使用客户服务器方式。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求:另外有若干个从属进程,负责处理单个请求。在进行文件传输时,客户和服务器之间要建立两个并行的TCP 连接:“控制连接”(21端口)和“数据连接”(22端口)。控制连接在整个会话期间一直保持打开, FTP 客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。2 简单文件传送协议TFTPTCP/IP 协议族中还有一个简单文件传送协议TFfP (Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议,端口号69。TFfP 也使用客户服务器方式,但它使用UDP 数据报,因此TFfP 需要有自己的差错改正措施。TFfP 只支持文件传输而不支持交耳。3 TELNETTELNET 是一个简单的远程终端协议,底层采用TCP协议。TELNET 也使用客户服务器方式。在本地系统运行TELNET 客户进程,而在远地主机则运行TELNET 服务器进程,占用端口23。4 邮件传输协议一个电子邮件系统应具如图所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如SMTP )和邮件读取协议(如POP3), POP3 是邮局协议(Post Office Protocol)的版本3 。SMTP 和POP3 (或IMAP )都是在TCP 连接的上面传送邮件,使用TCP 的目的是为了使邮件的传送成为可靠的。

本文由 在线网速测试 整理编辑,转载请注明出处。