详解TCP三次握手(详细到不能再详细了,能不能吊打面试官就靠你自己了)

面试官问此问题的原因:

作为一个中高级,甚至是资深程序猿,大家在面试的过程中可能经常被面试官问到<TCP的三次握手和四次挥手>这个问题,这个问题是网络基础中的经典问题,尤其作为面试官考察面试人员对HTTP协议的了解程度是非常有参考意义的,同时关于TCP/IP和HTTP协议这一类问题,由于初中级程序员在常规开发中不需要了解其中的原理也不影响相关开发,因此面试时问到此类问题是非常能够考察面试人员在平时中的知识积累和对技术的研究程度的。(写了一大段废话,让我们进入正题)

TCP的三次握手的目的是什么?

三次握手是为了建立TCP连接
四次挥手是为了断开TCP连接

三次握手后的结果是什么?

首先,HTTP三次握手的本质是为了确认客户端(client)与服务端(server)收发数据的能力,也就是说三次握手是为了确保数据能够到达指定目标。

简单描述一下三次握手的过程(简单易懂的语言描述)(由于作者刚看过大话设计模式,因此特别喜欢有"剧情"的讲解!)

就使用古时候吴签在大狱和网红通过飞鸽传书这个典故来介绍吧。

  • 第一次握手:吴签把牙签绑在鸽子腿上发给网红

当网红能收到牙签:

此时由于网红收到牙签,因此网红知道吴签的发件能力没问题,网红的收件能力没问题

  • 第二次握手:

当吴签能收到网红回复的牙签:

此时吴签收到牙签,说明吴签知道网红的发件和收件能力没问题,同时也知道自己的发件和收件能力没问题。

  • 第三次握手:

当网红收到吴签的回复的牙签:

此时网红收到牙签,说明网红知道吴签的收件能力没问题,自己的发件能力也没问题

吴签的发件能力吴签的收件能力网红的发件能力网红的收件能力
第一次握手网红知道未知未知网红知道
第二次握手吴签知道吴签知道吴签知道吴签知道
第三次握手双方已知网红知道网红知道双方已知

总结:双方都知道各自和对方的收件和发件能力,确保数据能够到达指定目标

三次握手中的专业术语

首先我们先了解一下三次握手中的一些名词定义:

关键名词含义
SYNsynchronous建立联机标志位
SEQ(非TCP标志位)Sequence number顺序号码,为了让上下游的命令串起来
ACKacknowledgement 确认

总结:SYN,ACK是TCP标志位,TCP标志位共有6种,具体6种的详情描述我会在后面的文章中特别描述,还望朋友们尽情期待。

三次握手交互图:

事先说明,如果你不是完全掌握三次握手流程,建议自己手画此交互图,这样在面试的时候你直接画出来,然后给面试官打趴下。

请添加图片描述

三次握手中客户端和服务端的状态都有哪些?

客户端服务端
Closed关闭状态
Listen监听状态
SYN_SENT请求连接状态
SYN_RCVD服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态
ESTABLISHED连接成功状态连接成功状态

本文到这里就暂时结束了,其实我还想写一些关于三次握手的实际面试题,奈何面试次数太少,涉及这个知识点的面试题我了解的也不多,望请各位看官们把自己在面试中遇到的面试题留言在评论区,本人会根据面试题补充本文内容,还望看官们多多评论点赞,手打博客不易。
关于四次挥手的详解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值