We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
TCP是面向连接的协议,在传输数据之前必须要建立连接,同样,在断开连接之前,客户端和服务端要相互确认,不再收、发数据。而TCP的三次握手和四次挥手正是基于此。
SYN包和ACK包 这两个包都是包含在TCP报文中的,详情可以查询TCP的报文组成,这里说一下两个包的作用,SYN包:可以理解包的内容为 发送,SYN包的发出,代表一端具有发送数据的能力,ACK包:同理,可以理解为 收到,ACK包的发出,是在接收到SYN包后,对发送方的应答,代表一端具有接受数据的能力。
为什么需要三次握手? 为了 达到 传输数据之前要建立连接 这个要求 需要确认 客户端和服务端 都同时具有发送和接收的能力,完成这样的要求恰好需要3次发包确认.
即
为了保证服务端能正确接受客户端的请求和做出正确应答 进行了第一次和第二次握手
为了保证客户端能正确接收服务端的信息并做出正确应答 进行了第二次和第三次握手
为什么需要四次挥手 当一方发送FIN包时,表示这一方没有新的数据再发送给对方了,但是仍然可以接受到对方发过来的数据包,一直到对方也发送了FIN包,也就是对方也不再发送数据的时候,双方断开连接。
所以 TCP断开连接需要双方都发送给对方FIN包表示自己没有新的数据发给你了,这样才会断开连接。当只有一方发送了FIN包时,仍然可以接收对方的数据,保持TCP连接。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
TCP
TCP是面向连接的协议,在传输数据之前必须要建立连接,同样,在断开连接之前,客户端和服务端要相互确认,不再收、发数据。而TCP的三次握手和四次挥手正是基于此。
三次握手 - 传输数据之前要建立连接
SYN包和ACK包
这两个包都是包含在TCP报文中的,详情可以查询TCP的报文组成,这里说一下两个包的作用,SYN包:可以理解包的内容为 发送,SYN包的发出,代表一端具有发送数据的能力,ACK包:同理,可以理解为 收到,ACK包的发出,是在接收到SYN包后,对发送方的应答,代表一端具有接受数据的能力。
为什么需要三次握手?
为了 达到 传输数据之前要建立连接 这个要求
需要确认 客户端和服务端 都同时具有发送和接收的能力,完成这样的要求恰好需要3次发包确认.
即
为了保证服务端能正确接受客户端的请求和做出正确应答
进行了第一次和第二次握手
为了保证客户端能正确接收服务端的信息并做出正确应答
进行了第二次和第三次握手
四次握手 - 客户端和服务端要相互确认,不再收、发数据。
为什么需要四次挥手
当一方发送FIN包时,表示这一方没有新的数据再发送给对方了,但是仍然可以接受到对方发过来的数据包,一直到对方也发送了FIN包,也就是对方也不再发送数据的时候,双方断开连接。
所以
TCP断开连接需要双方都发送给对方FIN包表示自己没有新的数据发给你了,这样才会断开连接。当只有一方发送了FIN包时,仍然可以接收对方的数据,保持TCP连接。
The text was updated successfully, but these errors were encountered: