面试真题 | 说说TCP为什么需要三次握手和四次挥手?

一、三次握手

三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包

主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备

过程如下:

  • 第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c),此时客户端处于 SYN_SENT 状态
  • 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,为了确认客户端的 SYN,将客户端的 ISN+1作为ACK的值,此时服务器处于 SYN_RCVD 的状态
  • 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,值为服务器的ISN+1。此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接

上述每一次握手的作用如下:

  • 第一次握手:客户端发送网络包,服务端收到了 这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
  • 第二次握手:服务端发包,客户端收到了 这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常
  • 第三次握手:客户端发包,服务端收到了。 这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

ARM/Linux嵌入式真题 文章被收录于专栏

让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论
😁
点赞 回复 分享
发布于 07-21 09:12 四川

相关推荐

头像
09-12 12:38
已编辑
去哪儿_测试开发工程师
随着秋招不断进行,许多同学应该已经进入HR面或者即将进入HR面。当HR询问你是否手头有其他offer时,回答这个问题需要既展示你的市场竞争力,也要表现出对当前面试公司的高度兴趣。如果已有其他offer:1. 目前我确实收到了几个公司的offer。这些公司虽然各有千秋,但我发现它们与我的职业发展规划并不完全吻合。相比之下,贵公司的职位更符合我的长远职业目标。我对贵公司的企业文化和发展潜能非常感兴趣,因此我非常期待能有机会加入您的团队。2. 是的,我已经拿到了两个offer,这些公司与贵公司在行业定位上有不少相似之处。然而,通过今天的了解,无论是从公司的发展前景、职业成长空间,还是面试过程中的体验...
牛客485316751号:说我有一个跟提问hr的公司差不多级别的offer,但是那个xx公司路程远,工资比你们低几k,又有xxxx的缺点(这个缺点最好是面的公司的优点,例如不要当着pdd的hr说xx的缺点是加班)。不知道怎么提就编点更希望来当前公司的理由,核心是表达出我有后手有退路,但只要你们给,一定是选你们。而且别搞得太生硬,整些什么仰慕公司文化之类的就太假太尬了。尽量是些软理由。 如我男/女朋友要去你们那里发展/拿了那边公司的offer,我不想异地恋。 我有个xx亲戚在你们那xx城市,可以给我点帮助,这样我不用租房。 看中xx城市户口,希望给未来自己孩子xx条件
点赞 评论 收藏
分享
08-29 07:47
已编辑
莆田学院 Java
路上小荷:小孙,你好,我是由XX幼儿园、XX小学、XX初中、XX高中、XX大***合培养的研究生,想寻找能够陪我一起成长,登上人生巅峰的公司。在公司任职期间公司需要提供免费食宿、百万年薪以及私人医生。预计65岁退休,退休后公司可以求我给新员工讲述奋斗历程
点赞 评论 收藏
分享
09-03 10:42
已编辑
小米_人力资源
点赞 评论 收藏
分享
1 5 评论
分享
牛客网
牛客企业服务