首页 > 试题广场 >

请你说说 TCP 三次握手四次挥手过程

[问答题]
请你说说 TCP 三次握手四次挥手过程
TCP的三次握手: 首先客户端发送一个含有同步序列号SYN的标志位的数据段给服务器端。服务器端收到客户端的请求后发送确认请求ACK和同步序列号SYN。最后客户端发送一个确认应答后连接开始建立。 TCP的四次挥手: 客户端发送一个控制位FIN为1的数据段,提出结束TCP连接的请求。 服务器端收到请求后确认这一端的TCP连接将断开,将ACK置为1。 服务器端反过来对客户端发送关闭请求,将FIN置为1。 客户端收到请求确认关闭这一端的TCP连接,将ACK置为1。
发表于 2022-05-20 09:41:29 回复(0)
三次握手:第一次是客户端向服务器端发送请求连接报文,包含自己的字段。 第二次握手是服务器端接受到连接请求后,如果同意便向客户端发送应答,包含自己的字段。 第三次握手客户端接受到应答并向服务器端发送确认报文,此时建立起了长连接
发表于 2022-05-11 13:20:35 回复(0)
并没有讲清楚或讲全面三次握手相对于两次握手的必要性,依我愚见,第一次握手时服务端确认客户端发送能力,第二次握手时客户端确认服务端的发送能力和接受能力,第三次握手时服务端确认客户端的接收能力。
发表于 2022-09-07 14:18:08 回复(0)
三次握手是为了建立正确稳定的连接,由客户端发起连接请求,tcp头部控制位SYN=1,表示这是一个连接请求,随机生成一个序号seq = x,请求发送后,客户端切换为SYN_SENT状态,服务器是侦听状态,侦听到这个请求后,先校验是不是发给自己的,如果是,就返回一个确认,确认号ACK = seq + 1,表示自己的接受位置,随机生成一个序号seq = y,发送后服务器变为SYN_REC状态,客户端接收到服务器返回的信息确认无误后,返回一个确认ACK = y +1,表示自己接收到了服务器的返回信息,客户端切换为CONNECTED状态,服务器接收到后,连接正式建立。 三次握手简单说就是,双发都要确认自己以及对方的收发功能,第一次接收方知道自己可以成功接受,发送方可以成功发送,第二次发送方知道自己发送成功,接收方可以成功接受,接收方有发送能力,最后一次接收方知道发送发有接受能力,自己发送能力没问题,所以可靠连接可以建立。 四次挥手也类似,控制位变成FIN=1,表示这是一个断开连接的请求,双方都可以发起断开连接的请求,这里以客户端发起请求为例,FIN = 1,seq = x;发送后客户端切换为fin_wait1状态,服务器接受后,返回确认ACK = x +1,seq = y,表示自己接收到了客户端的请求,客户端可以断开,发送后服务器切换为close_wait状态,客户端接收后,确认自己可以断开,切换为FIN_WAIT2状态,半连接状态,表示自己只能收,不能发,等一会后,服务器传完了自己的所有信息,就向客户端发一条断开请求,FIN=1,ACK = x+1,seq = z,还是close_wait状态,客户端接收到之后,返回一个确认信息,FIN =1,ACK = z + 1,进入TIME_wait状态,服务器接收到后,关闭发送接收功能,客户端等待2MSL时间后,断开连接。 为什么是四次挥手,不能让服务器传信息同时返回确认吗?TCP是有超时重传机制的,这个时间一般比较短,如果等服务器把自己的传完了,估计客户端得重发很多个 为什么等待2MSL时间,因为客户端不确定是否服务端收到了自己的确认,如果服务端没收到,会再次重传,如果客户端已经关闭,就找不到客户端了,MSL,Maximum Segment Lifetime,最大报文段生存时间。即任何TCP报文在网络中存在的最大时长,如果超过这个时间,这个TCP报文就会被丢弃。 2MSL,即两个最大报文段生存时间。 TIME_WAIT状态为什么是2MSL的时长?因为客户端不知道服务端是否能收到ACK应答数据包,服务端如果没有收到ACK,会进行重传FIN,考虑最坏的一种情况:第四次挥手的ACK包的最大生存时长(MSL)+服务端重传的FIN包的最大生存时长(MSL)=2MSL
发表于 2022-06-21 09:37:23 回复(0)
握手:SYN,SYN ACK,ACK,挥手:FIN,ACK,FIN ACK,ACK
发表于 2022-08-17 10:41:35 回复(0)
第一次握手:客户端向服务器发送链接请求,第二次握手:服务器收到客户端的请求,发出应答。第三次握手:客户端收到服务器的应答,链接成功 四次挥手:第一次挥手:客户断发服务器发送信号完毕,向服务器发出断开链接请求。第二次挥手:服务器接收到客户端的断开链接请求,不再接收客户端发来的数据,但是由于是全双工通信,所以服务器还能继续发送信息。第三次挥手:服务器发送数据完成,向客户端发送断开链接信号。第四次挥手:客户端收到服务器断开链接信号,至此服务器与客户端全部都断开了链接
发表于 2022-09-06 19:22:04 回复(0)
wb4头像 wb4
1、TCP开始的三次握手: a)客户端发送连接请求syn=x给服务端,客户端进入syn_send ; b)服务端接收后,把syn=y和ack=x+1一起发送给客户端,服务端进入listen; c)客户端收到后发送syn=x+1和ack=y+1确认码给服务端,这样服务端和客户端就进入了通信状态。 2、TCP结束的四次挥手: a)客户端向服务端发送fin,服务端关闭读通道; b)服务端发送ack,表示同意,客户端关闭写通道; 此时,服务端还可以向客户端写数据,客户端还可以向服务端读数据 c)等服务端发送完数据,再发送fin,客户端关闭读通道; d)客户端发送ack给服务端,服务端关闭写通道,等2MSL客户端关闭连接。
发表于 2022-08-14 20:56:48 回复(0)
tcp的三次挥手:的作用是保证 通信双方都能够正常的收发信息;三次握手的发生阶段是在客户端连接服务器的connect阶段开始的,首先客户端发送一个syn=1,ack给服务器,服务器接收到之后将ack+1,syn=1,ACK包给客户端,这时候,客户端在将ACK+1,ack +1包发送给服务器,这样服务器收到之后就能够,服务器客户端就能够双方都知道可以相互通信,三次握手完成可以开始传输数据。 tcp的四次挥手:的作用是将服务器和客户端的连接安全的断开,四次挥手是发生在客户端或者服务器断开连接的时候,客户端向服务器发送一个fin=1,ack包,服务器收到之后将ack+1包发送给客户端,这时候,服务器会讲传输的数据传输完,之后再发一个fin的包给客户端,客户端收到之后发送一个ACK=1,ack+1包给服务器,这样四次挥手就完成了,服务器和客户端双方都断开了链接。
发表于 2022-05-03 16:44:00 回复(0)
编辑于 2022-08-25 15:11:53 回复(0)
三次握手: (1)客户端先向服务器发送连接请求SYN,客户端进入SYN-SENT状态 (2)服务器在监听状态接收到客户端的请求,发送一个确认信号ACK,回发连接请求SYN,服务器进入SYN—RECEV状态 (3)客户端确认连接发送ACK信号给客户端,并进入establish状态 四次挥手: (1)客户端向服务器发送FIN关闭连接请求,进入FIN—wait1 (2)服务器确认断开客户端的连接发送ACK信号,进入close—wait状态,客户端进入FIN—wait2 (3)服务器剩余数据发送完毕,向客户端发送FIN信号关闭连接,服务器进入last—ACK (4)客户端相应服务器的请求发送ACK信号,双方连接关闭
发表于 2022-07-19 17:10:13 回复(0)
并没有讲清楚或讲全面三次握手相对于两次握手的必要性,依我愚见,第一次握手时服务端确认客户端发送能力,第二次握手时客户端确认服务端的发送能力和接受能力,第三次握手时服务端确认客户端的接收能力。
编辑于 2024-03-03 14:02:40 回复(0)
三次握手: 1、客户端发送一个同步序列号syn 2、服务端回复一个确认请求ack和一个同步序列号syn 3、客户端回复一个确认请求ack之后建立连接 四次回收: 1、客户端发送一个控制位fin 2、服务端回复一个确认号ack,并且进入最后的数据处理阶段 3、服务端处理完数据,发送一个fin 4、客户端接收到最后的数据,回复一个确认号ack,关闭连接
编辑于 2024-03-01 20:56:06 回复(0)
太难了,目前只对三次挥手稍微能说出来大概的意思
发表于 2023-02-12 23:00:54 回复(0)
三次握手原因:一是能够确保收发双方都正常;而是避免失效消息到达后长期占用资源导致资源浪费; 四次挥手:全双工,两边都要释放
发表于 2022-08-20 14:22:10 回复(0)
TCP三次握手:一开始客户端和服务端都处于CLOSE状态,服务端主动监听某个端口,变为LISTEN状态,由客户端初始化一个随机序列seq,并发送一个含有SYN标志位的报文到服务端,此时客户端状态变为SYS_SENT。服务端接收到客户端SYN的请求后,初始化一个随机序列seq,并发送带有ACK(即客户端的随机序列seq+1)和SYN的数据段给客户端,此时服务端状态变为SYS_RCVD。客户端接收到服务端的报文,发送一个确认应答ACK(即服务端的随机序列seq+1)后,连接建立,客户端和服务端变为ESTABLISHED。 TCP四次挥手:一开始客户端和服务端都处于ESTABLISHED状态。由主动断开连接的一方发送包含FIN的报文(此处举例为客户端),客户端状态变为FIN_WAIT1,服务端接收到FIN报文后,立即回复ACK报文,并将状态变为CLOSE_WAIT,客户端接收到服务端发送的ACK报文,状态变为FIN_WAIT2,服务端处理完所有发送任务后,向客户端发送FIN报文,状态变为LAST_ACK,客户端接收到FIN报文,回复ACK报文,并将状态转换为TIME_WAIT,等待2MSL时间,如果这段时间内没有接收到服务端的超时重传的FIN报文,状态就会变为CLOSE,否则会重置2MSL时间。服务端接收到ACK报文,就变为CLOSE状态,此时连接断开。
发表于 2024-05-16 10:11:39 回复(0)
三次握手:客户端向服务器发送请求;服务器应答客户端;客户端接收应答信号,链接成功
发表于 2024-04-30 14:30:19 回复(0)
TCP三次握手: 首先客户端向服务器端发送连接请求报文段,该报文段含有自身数据通讯初始序号SYN; 服务端收到连接请求报文段后,如果同意,发送包含自身数据通讯初始序号的应答; 客户端收到应答,向服务器发送确认报文,成功建立起TCP连接; TCP四次挥手: 客户端认为数据传输完毕,向服务器端发送连接释放请求; 服务器端接收到连接释放请求,告诉应用层断开TCP连接,发送ACK,进入CLOSE-WT状态,表明客户端到服务器端的连接已经释放,不再接受客户端的数据; 服务器端数据发送完毕,向客户端发送连接释放请求; 客户端收到连接释放请求,向服务器端发送ACK,进入TIME-WT状态,持续2MSL时间,若期间没有收到服务器端发送的报文,回到CLOSED状态。
编辑于 2024-04-08 14:59:08 回复(0)
TCP三次握手:保证通信双发都能正常收发信息,并且可以防止历史连接初始化,同步双方初始序列号,避免资源浪费 1.第一次握手:客户端发送一个TCP报文段,其中SYN=1,seq_Num=x,并进入SYN_SEND状态 2.第二次握手:服务器收到SYN报文段后,如果同意连接,则发送一个SYN+ACK报文段,其中SYN=1,ACK=x+1,seq_Num=y,并进入SYN_RECV状态 3.第三次握手:客户端收到SYN+ACK报文段后,发送一个ACK报文段,其中ACK=y+1,seq_Num=x+1,并进入ESTABLISHED状态,服务器在收到这个报文段后也进入ESTABLISHED状态 TCP四次挥手:将服务器和客户端的连接安全断开 1.第一次挥手:客户端发送FIN报文段,其中FIN=1,seq_Num=x,进入FIN_WAIT1状态 2.第二次挥手:服务器收到FIN报文段后,发送ACK报文段,其中ACK=x+1,seq_Num=y,服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT2状态 3.第三次挥手:服务器发送FIN报文段,其中FIN=1,ACK=x+1,seq_Num=z,服务器进入LAST_ACK状态 4.第四次挥手:客户端收到FIN报文段,发送服务器ACK报文段,其中ACK=z+1,然后客户端进入TIME_WAIT状态,服务器收到ACK报文段后,关闭连接,此时客户端等待2MSL后依然没有收到回复,则证明服务端已正常关闭,那么客户端也关闭连接
发表于 2023-10-26 16:48:35 回复(0)
三次握手 1. 客户端初始化序号后,发送一个SYN报文,向服务端发起连接,随后进入SYN-SENT状态; 2. 服务端收到SYN报文后,也初始化序号,然后立马回发一个SYN-ACK报文,随后进入SYN-RECIEVE状态; 3. 客户端收到服务端的SYN-ACK报文后,最后发送一个ACK报文应答,随后进入ESTABLISH状态,服务端收到后也进入ESTABLISH状态,随后双方可以开始通信。 四次挥手。 1. 客户端发送一个FIN报文,表示向服务端断开连接,随后进入FIN_WAIT1状态; 2. 服务端收到FIN报文后,向客户端发送一个ACK报文应答,随后进入CLOSE_WAIT状态; 3. 客户端收到ACK报文进入FIN_WAIT2状态,此时客户端还需要等待服务端处理完数据,等服务器处理完数据后,向客户端发送一个FIN报文,随后进入LAST_ACK状态; 4. 客户端收到FIN报文后,立即向服务端发送ACK应答,随后进入TIME_WAIT状态,不出意外的情况下,过2MSL个时长后客户端就关闭连接了。 5. 服务端收到ACK报文后,就关闭连接 进入CLOSED状态了。
发表于 2023-10-23 15:07:12 回复(0)
三次握手:第一次握手,客户端将自己标志位中的SYN、ACK置为1,并随机生成一个序号seq=x,将该报文发送给服务器端,此时客户端处于SYN_SENT状态。第二次握手,服务器端收到客户端的报文后,由SYN=1知道客户端想要建立连接,于是将自己标志位中的SYN\ACK置为1,确认号ack=x+1,并随机生成一个序号seq=y,将该数据包发送给服务器端,此时服务器端处于SYN_RECV状态。第三次握手,客户端收到报文后,检查ACK是否为1,ack是否为x+1,确认后会返回一个ACK=y+1的报文,此时客户端处于CONNECTED状态,服务器端接收到后,连接正式建立。 四次挥手:第一次挥手,客户端将自己标志位中的FIN值为1,并指定一个序列号seq=u,将该数据发送给服务器端,此时客户端处于FIN_WAIT_1状态。第二次挥手,服务器端收到报文后,由FIN=1知道客户端想要断开连接,会先发送一个ACK=1,ack=x+1,seq=v的报文,此时服务器端处于CLOSE_WAIT状态,客户端处于FIN_WAIT_2状态。第三次挥手,等到服务器端发送完报文,做好断开连接的准备后,会将FIN置为1,确认好ack=x+1,并指定序列号seq=w,将该数据发送给客户端,此时服务器端处于LAST_ACK状态。第四次挥手,客户端将标志位中的ACK=1,确认号ack=w+1,将该数据发送给服务器端,此时客户端处于TIME_WAIT状态,服务器收到后关闭连接,客户端等2MSL时间后在断开连接。
发表于 2023-09-21 20:42:22 回复(0)