当前位置:网站首页>TCP的三次握手和四次挥手
TCP的三次握手和四次挥手
2022-08-02 14:12:00 【叶子yes】
HTTP请求是在TCP连接的基础上去进行的。
TCP保证通信的三个步骤:三次握手,传输内容,四次挥手。
三次握手是建立连接的过程,四次挥手是关闭连接的过程。
三次握手
三次握手的主要目的是为了确认进行通信的两台主机(客户端和服务端)都具备收消息和发消息的能力。
三次握手实际上就是客户端和服务端之间发送了三条消息,客户端需要确认服务端可以收也可以发,服务端也需要确认客户端可以发也可以收。
第一次握手:
客户端向服务器端发送消息
主要传递两个信息:一是请求建立连接(SYN=1),二是发出一个序列号(seq=n,n为一个数)
第一次握手可以让服务端知道客户端能够发送消息
第二次握手:
服务器端向客户端发送消息
传递三个信息:一是同意建立连接(SYN=1),二是确认收到刚才的消息(ack=刚才的seq+1),三是发出自己的序列号(seq=x,x为一个数)
第二次握手可以让客户端知道服务端能够发消息也能收消息
第三次握手:
客户端向服务端发送消息
传递三个信息:一是表示现在开始发送(SYN=0),二是确认收到刚才的消息(ack=刚才的seq+1),三是消息序列号(seq=最开始发出的序列号+1)
第三次握手可以让服务端知道客户端能够接收消息
四次挥手
四次挥手主要是为了确认客户端已经发完消息,以及服务端已经接收完消息。
所以四次挥手是:发完了,知道发完了,收完了,知道收完了。
第一次挥手:
传递两个信息:一是请求连接终止(FIN=1),二是发出序列号(seq=n)
第一次挥手客户端告诉服务端数据发完了
第二次挥手:
传递三个信息:一是确认收到终止信号(ACK=1),二是确认收到刚才的消息(ack=n+1),三是发送自己的序列号(seq=x)
第二次挥手服务端知道客户端数据发完了
第三次挥手:
传递三个信息:一是已经准备好释放连接(FIN=1,ACK=1),二是确认号(ack=n+1),三是发送自己的序列号(seq=y)
第三次挥手服务端告诉客户端数据收完了
第四次挥手:
传递三个信息:一是接收到服务器准备好终止连接的信号(ACK=1),二是发送确认号(ack=y+1),三是序列号(seq=n+1)
第四次挥手客户端知道服务端数据收完了
边栏推荐
猜你喜欢
随机推荐
What should I do if Windows 10 cannot connect to the printer?Solutions for not using the printer
关于推荐系统的随想
pygame拖动条的实现方法
Doubled and sparse tables
2342. 数位和相等数对的最大和 哈希优化
6.统一记录日志
深入理解Golang之Map
Project: combing the database table
Software Testing Basics (Back)
unity Domain Reload & scene Reload 静态变量重置
STM32LL library - USART interrupt to receive variable length information
word方框怎么打勾?
LeetCode 2344. 使数组可以被整除的最少删除次数 最大公约数
Lightweight AlphaPose
golang-reflect-method-callback
cmake configure libtorch error Failed to compute shorthash for libnvrtc.so
Test case exercises
unity-shader(入门)
总结计算机网络超全面试题
Golang 垃圾回收机制详解