王伟:TCP协议的"三次握手"和"四次挥手"

Posted 西安比特教育

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了王伟:TCP协议的"三次握手"和"四次挥手"相关的知识,希望对你有一定的参考价值。

博主:比特21班王伟

  原创博文:51篇

  博客访问量:2878


博客链接:欢迎关注

http://blog.csdn.net/weiwang1996/article/details/74048381

不用点,点不开

先复制下来

粘贴到网页上去看


传输层是计算机网络体系结构中关键的一层,要了解传输层首先要深入了解两个协议:

1.用户数据报协议(UDP) 

2.传输控制协议(TCP) 


简单介绍一下UDP协议,重点介绍TPC协议: 

UDP协议: 

UDP是一个快速高效的传输协议,传送数据之前不需要建立连接,是无连接传输,但有一个缺点就是,不能保证可靠性传输。 

主要特点: 

1.无连接的。 

2.UDP尽最大努力交付,不能保证可靠交付。 

3.UDP是面向报文的。 

4.UDP没有拥塞控制,也就是说,网络出现阻塞的时候不会使源主机发送速率降低,允许传输过程中丢失一部分数据,但是却不能产生太大的延时。 

5.UDP支持一对一、一对多、多对一、多对多传输 

6.首部开销少。只有8字节,TCP协议首部20字节。 


TCP协议: 

TCP协议是TCP/IP体系中非常复杂的一个协议。


主要特点: 

1.TCP面向连接的。类似拨号一样,传输数据时,发送端和接收端首先要建立连接。有三次对话,后面详解 

2.TCP是提供可靠性交付的服务,通过TCP传输的数据,无差错,不丢失,不重复,并且按顺序到达。 

3.TCP提供全双工信道通信。 

4.面向字节流。 


TCP运输连接管理: 


TCP是面向连接的协议,运输连接是用来传送TCP报文的,运输连接分为三个阶段:连接建立、数据传送、连接释放。 

在TCP连接的过程中要确立这几个问题: 

①.要使一方知道另一方的存在。 

②.要允许双方协商一些参数(窗口大小、时间戳等选项)。 

③.能够对运输实体资源分配。 

TCP的连接建立: 


王伟:TCP协议的"三次握手"和"四次挥手"

建立连接的过程: 客户client 主动请求连接,而服务器server则是被动打开连接。 


三次握手: 

一、服务器先创建TCB(传输控制块)来准备接受连接请求。处于LISTEN 状态,客户端也有TCB块 发出请求,这时候首部中的SYN字段变为1,同时选择一个序列号seq=x,TCP规定SYN报文段不能携带数据,但是要消耗一个序列号。TCP客户端进入SYN SENT状态。 


二、服务器收到请求后,如果同意建立连接,则向客户发出确认,再确认报文段中应SYN=1,ACK=1,确认号ack=x+1,同时也要为自己选一个序列号seq=y,这是同样要消耗一个序列号。 


TCP服务器进程进入SYN-RCVD状态。

 

三、TCP客户端接收到服务器端的确认后,还要给服务器发送确认,确认报文段ACK=1,确认序列号ack=y+1,自己的序列号seq=x+1。此时TCP连接已建立,服务器、客户端同时进入ESTABLISHED状态。开始传输数据。 


问题: 

为什么,最后客户端还要确认一次?主要是防止已经被确认失效的连接突然有传送到服务器端,产生错误。 


例如下面这种情况: 

client 发送了一个请求,由于各种原因为抵达,那么会重新发送,和server建立连接后传输数据,到最后释放。完成传输后,这时第一次的请求突然被接收到了,如果没有第三次确认,这时server误以为是又要重新建立一个新的连接,来传输数据,就会产生异常。 


建立三次握手就可以避免上述异常产生,而为什么不建立四次、五次,三次就能完成,没必要浪费资源。 


四次挥手:



一、客户端向服务器端发送连接释放报文段。FIN置为1,序列号seq=u,等待回应。TCP连接处于半关闭状态,这时表示客户端已没有要发送的数据,但是服务器端还能发送,客户仍需接受。 


二、服务器端收到请求,回应 ACK置1,确认序列号ack=u+1,自己的序列号seq=v。客户端收到服务器确认后进入半关闭状态FIN-WAIT2状态。等待服务器的连接释放请求报文段。 


三、此时,服务器已不再向客户端发数据,服务器发起释放连接请求。FIN置1,ACK=1,确认序列号ack=u+1,自己的序列号seq=w,进入LAST-ACK状态等待客户端的确认 


四、客户端发送确认释放报文段,ACK置1,确认序列号ack=w+1,seq=u+1。 


问题:为什么客户端在第一次收到确认后进入FIN-WAIT2状态?

 

为了保证最后一次发送的ACK报文段能到达服务器端。还有就是保证上面说到的已失效连接请求报文段。 

上述就是四次挥手。


比特教育科技

一家专注于做IT行业就业的咨询公司


以上是关于王伟:TCP协议的"三次握手"和"四次挥手"的主要内容,如果未能解决你的问题,请参考以下文章

TCP协议的三次握手漏洞问题!

详解TCP连接的“三次握手”与“四次挥手”(下)

TCP三次握手和四次挥手

TCP协议的三次握手+四次断开

传输层协议以及三次握手四次挥手

TCP协议三次握手