700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 经典面试题之 TCP三次握手 和 TCP四次挥手过程----详解

经典面试题之 TCP三次握手 和 TCP四次挥手过程----详解

时间:2021-05-22 20:35:10

相关推荐

经典面试题之 TCP三次握手 和 TCP四次挥手过程----详解

TCP三次握手过程:

第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

(SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。)

(​​​SYN-SENT:传输控制协议(英语:Transmission Control Protocol, TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。)

第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

(ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。

在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据。通常ACK信号有自己固定的格式,长度大小,由接收方回复给发送方。

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

----------------------------------------------------------------------------------------------

为什么要建立三次通信呢?

1、在第一次通信过程中,A向8发送信息之后,B收到信息后可以确认自己的收信能力和A的发信能力没有问题。

2、在第二次通信中,B向A发送信息之后,A可以确认自己的发信能力和B的收信能力没有问题,但是B不知道自己的发信能力到底如何,所以就需要第三次通信。

3、在第三次通信中,A向B发送信息之后,B就可以确认自己的发信能力没有问题。

4、小结:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

---------------------------------------------------------------------------------------------------------------------------------

完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:

(1)未连接队列

在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(seq=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于 Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

(2)Backlog参数

三次握手协议

表示内核为相应套接字排队的最大连接个数。SYN-ACK重传次数服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

(3)半连接存活时间

是指半连接队列的条目存活的最长时间,也即服务器从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

--------------------------------------------------------------------------------------------------------------------------------

TCP四次挥手过程:

对于一个已经建立的连接,TCP使用改进的四次挥手来释放连接(使用一个带有FIN附加标记的报文段)。TCP关闭连接的步骤如下:

第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。

第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。

第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。[4]

第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放。

--------------------------------------------------------------------------------------------------------------------------------

通俗理解:

A:“任务处理完毕,我希望断开连接。

'B:“哦,是吗?请稍等,我准备一下。等待片刻后……

B:“我准备好了. 可以断开连接”

A:“好的,谢谢合作

-------------------------------------------------------------------------------------------------------------------------------------------

详细:

(34条消息) 网络 卧槽!牛皮了,面试官居然把TCP三次握手四次挥手问的这么详细_WhiteShirtI的博客-CSDN博客

(34条消息) TCP的三次握手与四次挥手理解及面试题(很全面)_lucky_jun-CSDN博客_三次握手四次挥手

(34条消息) 我终于搞懂了TCP的三次握手和四次挥手(图片案例超详解)_辰兮要努力-CSDN博客_三次握手和四次挥手

(34条消息) TCP三次握手详解-深入浅出(有图实例演示)_jun425的博客-CSDN博客_tcp三次握手

以上只代表个人观点,如有错误还请指出!感谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。