计算机网络中TCP连接管理,计算机考研——计算机网络(TCP传输连接管理)

计算机考研中目前部分院校部分专业是统考,计算机统考是考408计算机基础综合科目,考试内容自己参照考试大纲,考试科目是数据结构,操作系统,组成原理,计算机网络。大部分学校还是采用自主命题,自主命题的科目和考试内容因学校不同而不同,但是基本上是要考数据结构的,部分要考操作系统,计算机网络,计算机组成原理。

今天给大家带来的是计算机网络中一块非常重要的内容,也是我们的高频考点,TCP传输连接管理中关于连接和释放的部分。

d11063f9ab7ec7cf0fe04b6761d1122d.png

一、TCP建立连接:三次握手

(一)TCP建立连接全过程解释:

1、客户端发生SYN给服务器,表示客户端向服务器请求建立连接;

2、服务端收到客户端的SYN,并回复SYN+ACK给客户端(同意建立连接);

3、客户端收到来自服务器的SYN+ACK后,回复ACK给服务端(表示客户端收到了服务端发的同意报文);

4、服务端收到客户端的ACK,连接已建立,可以进行数据传输。

(二)建立连接的详细过程:

1、B的TCP服务器进程首先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。如有,就做出响应。

2、A的TCP客户进程也是首先创建传输控制模块TCB,然后向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但是要消耗一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态。

3、B收到连接请求报文段后,如同意建立连接,则向A发送确认。在确认报文段中应把SYN和ACK位都置1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。注意:这个报文段也不能携带数据,但同样要消耗一个序号。这时TCP服务器进程进入SYN-RECV(同步收到)状态。

4、TCP客户进程收到B的确认后,还要向B给出确认。确认报文段的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。TCP标准规定,ACK报文段可以携带数据。但如果不携带数据则不消耗序号。在这种情况下,下一个数据报文段的序号仍然是seq=x+1。这时,TCP的连接已经建立,A进入ESTABLISHED(已建立连接)状态。当B接收到A的确认后,B也进入ESTABLISHED(已建立连接)状态。

(三)相关问题

问题1:TCP为什么要进行三次握手?

答:因为信道不可靠,而TCP想在不可靠信道上建立可靠地传输,那么三次通信是理论上的最小值。(而UDP则不需建立可靠传输,因此UDP不需要三次握手)。因为双方都需要确认对方收到了自己发送的序列号,确认过程最少要进行三次通信。为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

c26b39c32b00ae7a5fcd357acb777c0a.png

二、TCP断开连接:四次挥手

(一)TCP 断开连接全过程解释:

1、客户端发送FIN给服务器,说明客户端不必发送数据给服务器了(请求释放从客户端到服务器的连接);

2、服务器接收到客户端发的FIN,并回复ACK给客户端(同意释放从客户端到服务器的连接);

3、客户端收到服务端回复的ACK,此时从客户端到服务器的连接已释放(但服务端到客户端的连接还未释放,并且客户端还可以接收数据);

4、服务端继续发送之前没发完的数据给客户端;

5、服务端发送FIN+ACK给客户端,说明服务端发送完了数据(请求释放从服务端到客户端的连接,就算没收到客户端的回复,过段时间也会自动释放);

6、服务端发送FIN+ACK给客户端,说明服务端发送完了数据(请求释放从服务端到客户端的连接,就算没收到客户端的回复,过段时间也会自动释放);

7、服务端收到客户端的ACK后,断开从服务端到客户端的连接

eb7e1e4de9a5575c2def03e7854ec5e1.png

(二)释放连接的详细过程:

1、A和B都处于ESTABLISHED状态,A的应用进程首先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。A把连接释放报文段首部的FIN置1,其序列号seq=u,它等于前面已经传送过的数据的最后一个字节的序号加1。这时,A进入FIN-WAIT-1(终止等待1)状态,等待B的确认。注意:TCP规定:FIN报文段即使不携带数据,它也会消耗一个序号。

2、B收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等待B前面已经传送过的数据的最后一个字节的序号加1。然后B就进入CLOSE-WAIT(关闭等待)状态。TCP服务器进程这时应通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭状态,即A已经没有数据要发送了,但B若发送数据,A仍要接收。也就是说,从B到A这个方向的连接并没有关闭,这个连接可能会持续一段时间。

3、A收到来自B的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。如果B已经没有要向A发送的数据,其应用进程就会通知TCP释放连接。这时B发出的连接释放报文段必须使FIN=1。现假定B的序号为w(在半关闭状态B可能又发送了一些数据)。B还必须重复上次已经发送过的确认号ack=u+1。这时,B就进入LAST-ACK(最后确认状态),等待A的确认。

4、A在收到B的释放连接报文段后,必须对此发出一个确认。在确认报文段中把ACK置1,确认号ack=w+1,而自己的序号是seq=u+1(根据TCP标准,前面发送过的FIN报文段要消耗一个序号)。然后经过时间等待计时器(TIME-WAIT)设置的时间2MSL后,A才进入到CLOSED状态。时间MSL叫做最长报文段寿命。

(三)相关问题

问题1:TCP 为什么要进行四次挥手?

答:因为TCP是全双工模式,客户端请求关闭连接后,客户端向服务端的连接关闭(一二次挥手),服务端继续传输之前没传完的数据给客户端(数据传输),服务端向客户端的连接关闭(三四次挥手)。所以TCP释放连接时服务器的ACK和FIN是分开发送的(中间隔着数据传输),而TCP建立连接时服务器的ACK和SYN是一起发送的(第二次握手),所以TCP建立连接需要三次,而释放连接则需要四次。

问题2:为什么TCP建立连接时可以ACK和SYN一起发送,而断开连接时则ACK和FIN分开发送呢?(ACK和FIN分开是指第二次和第三次挥手)

答:因为客户端请求释放时,服务器可能还有数据需要传输给客户端,因此服务端要先响应客户端FIN请求(服务端发送ACK),然后数据传输,传输完成后,服务端再提出FIN请求(服务端发送FIN);而连接时则没有中间的数据传输,因此连接时可以ACK和SYN一起发送。

问题3:为什么客户端断开连接时,最后需要 TIME-WAIT 等待 2MSL 呢?

答:①为了保证客户端发送的最后一个ACK报文能够到达服务端。若未成功到达,则服务端超时重传FIN+ACK报文段,客户端再重传ACK,并重新计时。

②防止已失效的连接请求报文段出现在本连接中。TIME-WAIT持续2MSL可使本连接持续的时间内所产生的所有报文段都从网络中消失,这样可使下次连接中不会出现旧的连接报文段。

这就是计算机网络中TCP传输连接管理这部分知识点的展现,离考研的日子已经很近了,希望同学们能够坚持不懈,刻苦努力。也祝愿同学们最后都能考上心仪的院校。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值