TCP 三次握手
来源:互联网 发布:如何进行数据库优化 编辑:程序博客网 时间:2024/05/16 05:50
三次握手
根据下面这幅图我们来看一下TCP三次握手。p.s: 每个箭头代表一次握手。
tcp三次握手第一次握手
client发送一个SYN(J)包给server,然后等待server的ACK回复,进入SYN-SENT
状态。p.s: SYN为synchronize的缩写,ACK为acknowledgment的缩写。
第二次握手
server接收到SYN(seq=J)包后就返回一个ACK(J+1)包以及一个自己的SYN(K)包,然后等待client的ACK回复,server进入SYN-RECIVED
状态。
第三次握手
client接收到server发回的ACK(J+1)包后,进入ESTABLISHED
状态。然后根据server发来的SYN(K)包,返回给等待中的server一个ACK(K+1)包。等待中的server收到ACK回复,也把自己的状态设置为ESTABLISHED
。到此TCP三次握手完成,client与server可以正常进行通信了。
为什么要进行三次握手
我们来看一下为什么需要进行三次握手,两次握手难道不行么?这里我们用一个生活中的具体例子来解释就很好理解了。我们可以将三次握手中的客户端和服务器之间的握手过程比喻成A和B通信的过程:
- 在第一次通信过程中,A向B发送信息之后,B收到信息后可以确认自己的收信能力和A的发信能力没有问题。
- 在第二次通信中,B向A发送信息之后,A可以确认自己的发信能力和B的收信能力没有问题,但是B不知道自己的发信能力到底如何,所以就需要第三次通信。
- 在第三次通信中,A向B发送信息之后,B就可以确认自己的发信能力没有问题。
wireshark
上面分析还不够形象,很容易忘记,下面我们利用wireshark来证明一下上面的分析过程。从下面的的输出就可以很容易看出来,必须要经过前面的三次tcp请求才会有起一次http请求。
第一次请求客户端发送一个SYN包,序列号是0。
wireshark-tcp-01第二次请求服务器会发送一个SYN和一个ACK包,序列号是0,ack号是1。
wireshark-tcp-02第三次本地客户端请求会发送一个ACK包,序列号是1,ack号是1来回复服务器。
阅读全文
0 0
- TCP:三次握手/四次握手
- TCP三次握手/四次握手
- TCP三次握手,四次握手
- tcp 三次握手 四次握手
- TCP三次握手,四次握手
- TCP三次握手四次握手
- TCP三次握手
- TCP三次握手协议
- TCP的三次握手
- TCP三次握手
- TCP三次握手
- TCP 三次握手协议
- TCP/IP三次握手
- TCP 三次握手
- TCP三次握手
- tcp连接三次握手
- TCP三次握手
- tcp三次握手示意图
- OC语言学习12-NSUserDefaults存储数据
- 面向对象,多态
- 安装和配置机房收费系统
- MongoDB数据库文档操作
- windows下如何安装和启动mysql
- TCP 三次握手
- Java Object类中的方法
- 惰性加载 参考网址
- ASP.NET并行处理的步骤
- Hadoop学习笔记:MapReduce任务Namenode DataNode Jobtracker Tasktracker之间的关系
- iPhone各种机型尺寸、屏幕分辨率
- 一种根据ImageView的大小缩放Bitmap的方法
- Javascript进阶(二)
- 文件的几种模式