首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >面试题:三次握手

面试题:三次握手

作者头像
GeekLiHua
发布2025-01-21 14:41:30
发布2025-01-21 14:41:30
1300
举报
文章被收录于专栏:JavaJava

面试题:三次握手

三次握手是TCP协议用于建立可靠连接的过程,保证数据能够正常传输。具体地,三次握手的流程如下:

  1. 客户端向服务器发送SYN包(同步序列号)请求建立连接,并在自己的TCP缓冲区中设置初始序列号seq。
  2. 服务器收到SYN包后,向客户端返回SYN + ACK包(同步序列号+确认序列号),并在自己的TCP缓冲区中设置序列号seq和确认序列号ack。同时也向客户端发送一个ACK(确认序列号)包,表示已收到SYN包。
  3. 客户端接收到服务器的SYN + ACK包后,向服务器发送一个ACK包,表示已收到服务器的响应报文。而该ACK包会使得服务器的TCP缓冲区中所有等待该连 接的数据包都被发送出去。至此,TCP握手成功,双方便开始传输数据。

举例来说,当我们通过浏览器访问一个网站时,浏览器和服务器之间就需要建立TCP连接。首先,浏览器向服务器发送一个SYN包,告诉服务器自己要发给对方一些数据,并将自己的初始化序列号seq以及一些其他信息发送过去。服务器接到这个SYN包后,如果可以处理浏览器请求,则返回一个SYN + ACK包,在其中再发送一个确认序列号ack,一般是指前面收到的客户端的seq+1,并存储起来以回答客户端。此时,服务器进入SYN_RECEIVED状态;当服务器发回SYN + ACK后,浏览器(客户端)接到响应包后会再次发送一个ACK报文,告诉服务器收到了它的请求,并存储这个确认序号。至此,连接已建立,双方就可以传输数据了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面试题:三次握手
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档