-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第 16 题:谈谈你对 TCP 三次握手和四次挥手的理解 #15
Comments
4次挥手中,如果没有(稍等,还有最后一个包),那是不是就是三次挥手??? |
不是的,当A告诉B,要关闭的时候,B可能还有一个包正在传输中,所以是等正在传输中的这个包传输完毕之后再回复A一下,我的图中表述的有点问题 |
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭,所以即使没有最后一个包,也需要先回复断开连接的请求,然后再发送关闭请求 |
男:我要挂了哦 |
字挺好看的 |
这个可是有点厉害了 |
TCP三次握手:1、客户端发送syn包到服务器,等待服务器确认接收。2、服务器确认接收syn包并确认客户的syn,并发送回来一个syn+ack的包给客户端。3、客户端确认接收服务器的syn+ack包,并向服务器发送确认包ack,二者相互建立联系后,完成tcp三次握手。四次握手就是中间多了一层 等待服务器再一次响应回复相关数据的过程 |
三次握手之所以是三次是保证client和server均让对方知道自己的接收和发送能力没问题而保证的最小次数。 第一次client => server 只能server判断出client具备发送能力 其中,为了保证后续的握手是为了应答上一个握手,每次握手都会带一个标识 seq,后续的ACK都会对这个seq进行加一来进行确认。 |
当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了 等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。 在
|
是的,我抓包看过。 |
@pzimao 请问你截图这个是啥工具喔 |
FastStone |
@IAMSBLOL 这个图最后断开链接是不是画反了? |
为什么还需要等2msl呢?3msl不可以吗?还是本身就有这个机制 |
真实 |
一、三次握手讲解
二、为什么http建立连接需要三次握手,不是两次或四次?答:三次是最少的安全次数,两次不安全,四次浪费资源; 三、TCP关闭连接过程
四、为什么要四次挥手?TCP是全双工信道,何为全双工就是客户端与服务端建立两条通道,通道1:客户端的输出连接服务端的输入;通道2:客户端的输入连接服务端的输出。两个通道可以同时工作:客户端向服务端发送信号的同时服务端也可以向客户端发送信号。所以关闭双通道的时候就是这样: 客户端:我要关闭输入通道了。 服务端:我也要关闭输入通道了。 原文地址作者:猪哥66 |
@GuoYuFu123 四次挥手中,A等待2MSL应该从A发送第四次报文后开始等,你的图看起来像B关闭了才开始等 |
|
三次握手 在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。 (1)第一次握手:Client将同步标志位SYN设置为1,随机生成一个序列号x,并将数据包发送给Server。此时Client进入SYN_SENT状态,等待Server确认。 ISN:即Initial Sequence Number(初始序列号),在三次握手的过程当中,双方会用过SYN报文来交换彼此的 ISN。 四次挥手 |
三次握手:
四次挥手:
有个疑问请教各位大佬?
|
说说 TCP 三次握手过程
TCP 3-Way Handshake (SYN, SYN-ACK,ACK),TCP 三次握手流程图 TCP Header TCP 有6中标志位:
另外数据包:
|
A: 我完事了 |
TCP 连接的时候为什么要三次握手?因为三次握手才能保证双方能听到(接收)和回应(发送)数据。 |
三次握手: 四次挥手: |
RFC文档规定的吧 |
tcp三次握手: 三次握手
数据传输传输过程中,tcp连接会一次性发送若干个包测试连接速度,根据连接速度调整tcp包的发送频率 四次挥手
|
三次握手 |
如果 B 机器突然重启,那么 B 机器与 A 机器之间的 TCP 连接将被断开。此时,A 机器将无法与 B 机器进行通信。 当 A 机器试图向 B 机器发送数据时,TCP 协议会发送一个数据包(称为“探测包”)到 B 机器,以检测连接是否仍然存在。如果探测包能够成功到达 B 机器,并且 B 机器也能够正确地响应,那么连接仍然有效,A 机器可以继续发送数据。 如果探测包无法到达 B 机器,或者 B 机器无法响应,那么连接将被视为已经断开。此时,A 机器的 TCP 状态将变为“TIME_WAIT”状态,表示连接已经关闭,但是仍然需要等待一段时间,以确保所有的数据包都已经被接收到。在 TIME_WAIT 状态下,A 机器将继续发送一些控制信息,以保证连接的完整性。这个过程通常需要等待一段时间(通常是几分钟),在等待时间结束后,A 机器将关闭连接。 |
https://juejin.im/post/5c078058f265da611c26c235
The text was updated successfully, but these errors were encountered: