❶ 计算机网络中,tcp连接中快速重传为什么要三个重复ack,而不是两个或一个
这是RFC 5681的规定, 收到连续三个重复ACK才触发快速重传。
至于理由,大概是一次或两次重复ACK在多级多路由的复杂网络中很容易出现,所以协议制定方最终确定将这个系数取为3。实际上3次在某些情况下也是会被破坏的。
❷ ACK 5表示什么意思 计算机网络
ACK 5是期望收到第5个报文分组。确认第四个报文的意思。
❸ 计算机网络中的“三次握手”是什么
TCP握手协议
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(SynchronizeSequenceNumbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示未连接队列的最大容纳数目。
SYN-ACK重传次数服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
❹ 计算机网络习题求解答,急!!!
答: 对于这道题,我的理解如下:
- ACK表示我期待接收到的下一个字节的序号,本地主机C向远程发送数据,它的初始序号为Seq,而他本次需要发送数据的总量正是Window size里面的值,若全部发送成功,那么远程主机ACK的值=Seq+Window size;
- 然后对于你所说ack=seq+总长度-20-20,我知道你大概的意思就是 SEQ加上总长度,然后再减去 IP和TCP首部的长度吧,就算题目所给的IP手部为20个字节,但是TCP的首部可不一定是20个字节呢,因为题目只给了前40个字节,如果说后面TCP当中它有可选字段,如果可选字段也有一定的长度呢?这就是我的见解,可以一起交流。
❺ 计算机网络——TCP三次握手四次挥手
用户进程和服务器进程需要完成一次通信都需要完成 三个阶段 : 连接建立、数据传送、连接释放
参考:三次握手和四次挥手
首先先明确几个概念:
序列号seq(4B) :用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生,给字节编上序号后,就给每一个报文段指派一个序号, 序列号seq就是这个报文段中的第一个字节的数据编号 。
确认号ack(4B) : 期待收到对方下一个报文段的第一个数据字节的序号 ,序列号表示报文段携带数据的第一个字节的编号,而确认号指的是期望接受到下一个字节的编号,因此挡墙报文段最后一个字节的编号+1即是确认号。
确认ACK(1bit) :仅当ACK=1,确认号字段才有效。ACK=0,确认号无效。
同步SYN : 连接建立时 用于同步序号。SYN=1表示这是一个连接请求,或连接接收报文,SYN这个标志位只有在TCP建立连接才会被置为1,握手完成后SYN标志位被置为0.当SYN=1,ACK=0表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使用SYN=1,ACK=1
终止FIN :用来释放一个连接。
B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。若有,则作出响应。
1)第一次握手:A首先向B发一个SYN (Synchronize) 标记的包,告诉B请求建立连接,一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources), SYN=1的报文段不能携带数据 ,但要 消耗掉一个序号, 此时TCP客户进程进入SYN-SENT(同步已发送)状态。
2)第二次握手:B收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作.注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包。在确认报文段中,测试TCP服务器进程进入SYN-RCVD(同步收到)状态;
3)第三次握手:TCP客户进程收到B的确认后,要向B给出确认报文段,ACK报文段可以携带数据,不携带数据则不消耗序号。TCP连接已经建立,A进入ESTABLISHED(已建立连接)。
当B收到A的确认后,也进入建立连接状态。
序列号和确认号的关系:
第一次握手序列号seq=x;
第二次握手序列号seq=y,确认号ack=x+1;
第三次握手序列号seq=x+1,确认号ack=y+1;
序列号seq是上一次的确认号,而确认号是上一次的序列号+1;这是因为SYN=1的报文段不能携带数据,但要消耗掉一个序号,所以下一个报文段要+1;
为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”,这种情况是:一端(client)A发出去的第一个连接请求报文并没有丢失,而是因为某些未知的原因在某个网络节点上发生滞留,导致延迟到连接释放以后的某个时间才到达另一端(server)B。本来这是一个早已失效的报文段,但是B收到此失效的报文之后,会误认为是A再次发出的一个新的连接请求,于是B端就向A又发出确认报文,表示同意建立连接。如果不采用“三次握手”,那么只要B端发出确认报文就会认为新的连接已经建立了,但是A端并没有发出建立连接的请求,因此不会去向B端发送数据,B端没有收到数据就会一直等待,这样B端就会白白浪费掉很多资源。如果采用“三次握手”的话就不会出现这种情况,B端收到一个过时失效的报文段之后,向A端发出确认,此时A并没有要求建立连接,所以就不会向B端发送确认,这个时候B端也能够知道连接没有建立。(知乎上对上面的解释的评论:这个解答不是问题的本质,这个课本很多知识比较片面。问题的核心在于保证信道数据传输的可靠性,避免资源浪费仅仅是一个小的弱原因,不重要。)
从客户端到服务端释放连接的过程中,需要四次报文传输。
TCP四次挥手过程
1)A的应用进程先向其TCP发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1(终止等待1)状态,等待B的确认。
2)B收到连接释放报文段后即发出确认报文段,(ACK=1,确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT(关闭等待)状态,此时的TCP处于半关闭状态,A到B的连接释放。
3)A收到B的确认后,进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。
4)B没有要向A发出的数据,B发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A的确认。
5)A收到B的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态。
大概就是A和B:
A:“我不和你说话了”
B:“知道了”
此时A单方面不和B说话,当B也没有话对A说的时候
B:“我也不和你说话了”
A:“好的”
两个人互相不说话了
TCP四次挥手总结
客户端发送FIN后,进入终止等待状态,服务器收到客户端连接释放报文段后,就立即给客户端发送确认,服务器就进入CLOSE_WAIT状态,此时TCP服务器进程就通知高层应用进程,因而从客户端到服务器的连接就释放了。此时是“半关闭状态”,即客户端不可以发送给服务器,服务器可以发送给客户端。
此时,如果服务器没有数据报发送给客户端,其应用程序就通知TCP释放连接,然后发送给客户端连接释放数据报,并等待确认。客户端发送确认后,进入TIME_WAIT状态,但是此时TCP连接还没有释放,然后经过等待计时器设置的2MSL后,才进入到CLOSE状态。
❻ 计算机网络大写ack和小写ack的区别 爱说篇
大写的ACK是确认的意思,小写的ack好像是会话间的次数吧
❼ 计算机网络中rdt是什么意思还有ACK,pkt都是什么意思
可靠数据协议:发送方通过该协议把数据交给更底层(比如运输层交给网络层),底层负责传输,接收方再通过该协议把数据取出。我们把这个协议称作rdt(reliable data transfer)
当接收方收到来自上层的数据,需要反馈给发送方一个确认信息,即ACK
CCNA工具包解压后,出现的许多文件,后缀是PKT。
❽ 计算机网络四个重复的ack是超时吗
计算机网络四个重复的ack不是超时。可能是丢包引起的,可能是网络拥塞造成的,也可能是信号失真造成的,还可能是乱序引起的。
❾ 计算机网络大写ack和小写ack的区别
好像是用在3次握手上的,大写的ACK是确认的意思,小写的ack好像是会话间的次数吧,比如ack=1,ack=2等等的,主要用于三次握手,两次挥手等。
❿ 网络中的ACK; SYN; FIN都是什么
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。 完成三次握手,主机A与主机B开始传送数据。