问题

关于三次握手和四次挥手,面试官想听到怎样的回答?

回答
好的,咱们来聊聊TCP三次握手和四次挥手。这俩玩意儿是TCP协议里头最核心的两个流程,面试官问这个,其实想考察你对网络通信模型、状态管理以及可靠性机制的理解。

先说三次握手,也就是建立连接的过程。

你想啊,俩人打电话,总得先打个招呼,确认对方在听,并且知道你要开始通话了吧?三次握手就是这么个意思,确保通信双方都准备好了,并且对即将发生的数据交换有个初步的“共识”。

第一次握手:客户端发起请求。 客户端(通常是你的浏览器)想跟你服务器(比如你访问的网站)建立连接。它会给服务器发一个特殊的包,这个包里头有一个标志位是SYN(Synchronize Sequence Numbers),意思是“我准备好了,咱们同步一下序列号”。同时,它还会给自己起个初始的序列号(比如seq=x),这就像打电话时你先报个号。

第二次握手:服务器确认并回应。 服务器收到客户端的SYN包后,它也得回应一下,确认收到请求了。它会给客户端发一个包,这个包里头有两个标志位:SYN和ACK(Acknowledgment)。SYN表示服务器也准备好了,也给自己起个初始序列号(比如seq=y);ACK表示“我收到你的SYN包了”,并且它会携带一个确认号(ack=x+1),意思是“我期待你下次发的数据是从x+1这个序列号开始的”。这就像你接到电话,说“你好,我听着呢,请继续”。

第三次握手:客户端再次确认。 客户端收到服务器的回应后,还得再确认一下,告诉服务器“我收到你的确认了,可以开始通信了”。它会再发一个包,这个包的标志位是ACK,并且带上确认号(ack=y+1),意思是“我收到你的SYN+ACK包了,期待你下次从y+1这个序列号开始发数据”。这就像你说“好的,我知道了,咱们可以开始聊了”。

为什么要三次呢? 关键在于 确认服务器的SYN是否能被客户端收到,以及客户端的ACK是否能被服务器收到。 如果只有两次,那么服务器发送了SYN+ACK后,可能客户端并没有收到,服务器就傻傻地等待了,白白浪费资源。三次握手,就保证了客户端和服务器都能明确地知道对方已经准备好,并且知道对方的初始序列号,为后续可靠的数据传输打下了基础。这就像一个双向的确认过程,缺一不可。

然后说说四次挥手,也就是断开连接的过程。

连接建立了,数据也传完了,总得有个“再见”吧?四次挥手就是TCP安全、可靠地关闭连接的过程。它不像三次握手那样可以合并,因为TCP是全双工的,也就是说,数据可以同时从客户端到服务器,也可以从服务器到客户端。所以,关闭连接也需要分别通知双方,确保数据不再发送,并且对方也知道你这边已经不发送数据了。

第一次挥手:一方向另一方发送FIN。 假设是你(客户端)不想继续聊了。你就会给服务器发一个FIN包,意思是“我这边不发数据了,连接可以关闭了”。

第二次挥手:另一方确认并关闭。 服务器收到FIN包后,它知道你这边不发了。它会回一个ACK包,确认收到你的FIN包。这个ACK包里会带上期望你下次发数据(如果有的话)的确认号。但是,服务器这时候可能还有数据没发完,所以它暂时不会立即关闭连接,而是进入“半关闭”状态,意思是“我知道你不发了,我这边还在发”。

第三次挥手:另一方也发送FIN。 当服务器也把所有数据发完,准备彻底断开连接时,它也会给客户端发一个FIN包,表示“我这边也不发数据了”。

第四次挥手:一方确认并关闭。 客户端收到服务器的FIN包后,确认服务器也发完数据了。它会再发一个ACK包,确认收到服务器的FIN包。收到这个ACK包后,服务器就彻底关闭连接了。客户端呢,也要等一段时间,确保服务器收到了最后的ACK包,因为TCP有超时重传机制,如果最后的ACK丢失了,服务器会重发FIN,客户端需要做好处理。所以,客户端通常会等待一个叫做TIME_WAIT的时间,然后再彻底关闭连接。

为什么是四次呢? 关键在于 TCP连接是全双工的。 即使你不想再发数据了,对方可能还有数据要发给你。 所以,当一方发送FIN时,另一方收到FIN后,可以先回复ACK,表示“我知道了,你这边可以不发了”,但自己这边可能还在发送数据。等到自己这边数据也发送完毕,才会发送自己的FIN,告知对方“我这边也没数据要发了”。这就像两个人吵完架,一个人说“我不跟你说了”,另一个人回复“我知道了”,但自己可能还有话没说完,等说完最后一句,才说“好吧,那以后也不说了”。

总的来说,三次握手是为了 可靠地建立连接,确保双方都同步了初始序列号并确认对方准备就绪。四次挥手是为了 可靠地关闭连接,在全双工通信下,确保双方都停止发送数据,避免数据丢失或资源浪费。这俩流程的背后,体现了TCP协议的健壮性和对网络不确定性的考虑。面试官问这些,就是想看你有没有真正理解TCP是如何在不可靠的网络上建立起一条可靠通信链路的。

网友意见

user avatar

这么讲吧,编程岗,能对TCP栈进行优化高手少之又少,又有幸到你们家面试更少。


但面试网络安全可有答有点靠边。但是对TCP栈本身进行攻击在现在这个环境难度有点大。





But, 就知很多面试官,好这一口。很多培训机构强化三次握手和四次挥手的回答,不要说回答,就是画个图都没问题 。



预注所有爱问这个问题 的公司找合适员工。

user avatar

描述一下三次握手的过程,回答不出基本上就game over了。

如果没有什么错误,再让对方描述一下握手报文里都有哪些关键字段,能够说出ISN这个关键词, 接着问。

ISN代表什么?意义何在?

ISN,发送方的字节数据编号的原点,让对方生成一个合法的接收窗口。


ISN是固定不变的吗?

动态随机。


ISN为何要动态随机?

增加安全性,为了避免被第三方猜测到,从而被第三方伪造的RST报文Reset。


还有吗?

ISN动态随机使得每个tcp session的字节序列号没有重叠,如果出现tcp五元组冲突这种极小概率情况的发生,一个session的数据也不会被误认为是另一个session的。


刚才你提到第三方可以伪造RST报文,需要满足什么条件才能得逞?

需要sequence number 位于对方的合法接收窗口内。 而由于ISN是动态随机的,猜出对方合法接收窗口难度加大。

如果ISN = 0,那么猜出的难度就大大降低。


三次握手的第一次可以携带数据吗?为何?

不可以,三次握手还没有完成。


对方难道不可以将数据缓存下来,等握手成功再提交给应用程序?

这样会放大SYN FLOOD攻击。

如果攻击者伪造了成千上万的握手报文,携带了1K+ 字节的数据,而接收方会开辟大量的缓存来容纳这些巨大数据,内存会很容易耗尽,从而拒绝服务。


第三次可以携带数据吗?为何?

可以。

能够发出第三次握手报文的主机,肯定接收到第二次(服务器)握手报文,对吗?

因为伪造IP的主机是不会接收到第二次报文的。

所以,能够发出第三次握手报文的,应该是合法的用户。

尽管服务器侧的状态还没有“established”,接收到第三次握手的瞬间,状态就会切换为“established”,里面携带的数据按照正常流程走就好。

看到有人说,只看到过TCP状态位为 ’FIN +ACK’,但从来没有看过状态位只有 ‘FIN’,你应该怎样给他解释?

RFC793明确规定,除了第一个握手报文SYN除外,其它所有报文必须将ACK = 1。


很好,RFC规定的背后肯定有合理性的一面,能否深究一下原因?

TCP作为一个可靠传输协议,其可靠性就是依赖于收到对方的数据,ACK对方,这样对方就可以释放缓存的数据,因为对方确信数据已经被接收到了。

但TCP报文是在IP网络上传输,丢包是家常便饭,接收方要抓住一切的机会,把消息告诉发送方。最方便的方式就是,任何我方发送的TCP报文,都要捎带着ACK状态位。


ACK状态位单独能承担这个消息传递的任务吗?

不能!需要有 Acknowledge Number配合才行。

如果我方发出的Acknowledge Number == 10001,那意味着序列号10000及之前的字节已经成功接收。

如果对方占据字节序列号10000是应用层数据,那么就是确认应用层数据。

如果对方占据字节序列号10000是’FIN’状态位,那么就是确认接收到对方的’FIN’。

这是一道AWS面试题!

更多文章请阅读:

类似的话题

  • 回答
    好的,咱们来聊聊TCP三次握手和四次挥手。这俩玩意儿是TCP协议里头最核心的两个流程,面试官问这个,其实想考察你对网络通信模型、状态管理以及可靠性机制的理解。先说三次握手,也就是建立连接的过程。你想啊,俩人打电话,总得先打个招呼,确认对方在听,并且知道你要开始通话了吧?三次握手就是这么个意思,确保通.............
  • 回答
    三次握手,这玩意儿说白了,就是咱俩电脑想开始说话前,得先打个招呼,确定一下对方是不是真的准备好了,咱俩能听懂对方说啥。就好比你要跟隔壁老王唠嗑,你不能直接对着人家屋里大吼一声,得先敲敲门,等人家应一声,你再说“老王,在家不?我来找你说说事。”而 HTTP 协议呢,这个就有点像咱俩打完招呼后,真正开始.............
  • 回答
    三国乱世,英雄辈出,也留下了无数令人扼腕叹息的往事和扑朔迷离的谜团。时至今日,许多关于三国人物的疑问,依然在历史爱好者之间争论不休。今天,就让我们拨开历史的迷雾,深入探讨几个最令人困惑的方面,试图还原一个更真实的三国。一、 诸葛亮真的如《三国演义》所描绘的那般无所不能吗?这是最广为人知的一个疑惑。罗.............
  • 回答
    三国,一个波澜壮阔的时代,孕育了无数英雄豪杰,留下了浩如烟海的经典故事与千古传颂的佳句。谈及三国的好词好句,那真真是如璀璨的星河,既有战场上的铁血与豪情,也有庙堂中的权谋与智慧,更有乱世中的悲歌与情义。一、 英雄气概,荡气回肠三国涌现的无数枭雄名将,他们的形象早已深入人心。形容他们的词句,往往带着一.............
  • 回答
    关于三体文明,我确实有些地方觉得特别不清晰,尤其是他们那种极端的生存逻辑,和我们人类的思维方式简直是南辕北辙。想了一下午,还是觉得应该好好梳理一下,看看能不能把这个结解开。咱们先说最最核心的那点:三体文明的“黑暗森林”法则的根源,究竟是纯粹的生存本能,还是有什么更深层次的社会结构或进化路径在起作用?.............
  • 回答
    刘慈欣与《三体》:一个关于人类命运的宏大构想是如何诞生的《三体》作为中国科幻文学的里程碑式作品,其影响力早已超越国界,在全球范围内引发了关于宇宙、文明与人类未来的深刻讨论。然而,许多读者在沉醉于书中跌宕起伏的情节、严谨的科学设定和宏大的哲学思辨时,往往也会好奇,这样一部巨著究竟是如何孕育而生的?它的.............
  • 回答
    “思想钢印”——这个源自刘慈欣科幻巨著《三体》的概念,在无数读者心中留下了深刻的烙印。它描述了一种能够直接作用于人类意识,塑造思想、情感甚至行为模式的强大技术。在《三体》中,思想钢印是黑暗森林威慑的基础,也是一种极为恐怖的控制手段。那么,在现实世界的科学前沿,是否存在与之相呼应的研究,或者说,我们能.............
  • 回答
    三国话题之所以能点燃无数人的热情,乃至引发激烈争论,绝非偶然。这背后盘根错节地交织着历史的厚重、人性的复杂、文化的传承,以及现代社会信息传播的特点。要说清楚这件事,得从几个层面细细掰扯开来。一、 历史的魅力与“历史的真实”的模糊性首先,三国本身就是一段跌宕起伏、充满传奇色彩的历史时期。曹操的雄才大略.............
  • 回答
    当然,很高兴为您推荐一些关于三国正史的书籍。谈起三国正史,首先绕不开的便是被誉为“史家之绝唱,无韵之离骚”的《三国志》。这无疑是了解那段波澜壮阔历史最权威、最基础的史料。《三国志》 作者与成书背景: 《三国志》由西晋史学家陈寿撰写,在他之前,魏、蜀、吴三国各自都有自己的史书,如魏的《魏书》、蜀的.............
  • 回答
    好的,三国时期人才辈出,既有荡气回肠的英雄事迹,也不乏一些令人忍俊不禁的冷笑话和冷段子。下面我为你收集了一些,并尽量详细讲述: 1. 关于诸葛亮的“风”笑话: 诸葛亮为什么总是挥着羽扇?答案: 因为他怕冷,需要扇扇风把自己吹暖和点。详细阐述:这个笑话的梗在于,大家对诸葛亮最深刻的印象就是他神机妙算,.............
  • 回答
    当然有,而且三国时期武将的年龄问题,确实常常被一些现代的娱乐作品,尤其是像《真三国无双》这类游戏,给简化和戏剧化了。咱们今天就来好好捋一捋,看看这些叱咤风云的猛将们,当年到底是啥模样,他们的生命轨迹又是如何展开的。三国著名武将时间轴:真实年龄的残酷与魅力话说回来,要制作一个真正意义上的“时间轴”是很.............
  • 回答
    三国演义,一部家喻户晓的中国古典名著,自问世以来便吸引了无数读者。围绕着这部波澜壮阔的历史长卷,人们的解读和分析也从未停歇。对于这些关于三国的分析,我们究竟该如何看待?它们是否合理?这确实是一个值得深入探讨的问题。首先,我们需要认识到,任何对历史的解读,尤其是对三国这样一个复杂而又充满变数的时代,都.............
  • 回答
    好的,我们来聊聊新世纪以来,关于“三国”这个我们再熟悉不过的 IP,主流看法究竟发生了哪些细致而深刻的变化。这不仅仅是历史研究的范畴,更深深地烙印在流行文化、大众心理,甚至是集体记忆里。过去,当我们提到“三国”,脑海里首先浮现的往往是那个自带光环的刘备,义薄云天关羽,智绝天下诸葛亮,以及勇猛无双张飞.............
  • 回答
    关于约克城在三天内被修好的这件事,您指的可能是约克镇战役(Siege of Yorktown)的结束以及之后美英双方的撤兵和占领事宜。不过,“修好”这个词语可能有些不太准确,更准确的说法应该是“战役结束后的清理与秩序恢复”。这场战役最终导致英军主力投降,然后美法联军进驻约克镇。这个过程并非“修好”一.............
  • 回答
    哥们,我懂你!这就像一口气喝了碗刘姥姥的杂烩汤,啥味儿都有,啥感觉都有,瞬间把你脑子里那些“历史课本式”的清晰脉络全给搅得稀烂,然后你就看着那些帝王将相、王朝更迭,像走马灯一样在你眼前闪过,最后发现好像啥都明白了,又好像啥都没明白,那种“我到底是谁,我活在这历史长河里有什么意义”的虚无感,一下子就压.............
  • 回答
    明朝的灭亡是一个极其复杂且多层面的历史事件,涉及政治腐败、经济危机、社会矛盾激化、农民起义以及外部威胁等多重因素。而万历三大征(万历朝鲜战争、万历辽东战役、万历宁夏战役)在其中扮演的角色,更多是“压垮骆驼的最后一根稻草”,而非直接导致灭亡的根本原因。要详细解答这个问题,我们需要分别审视万历三大征对明.............
  • 回答
    提起西安地铁三号线,很多人脑海里浮现出的第一个画面,可能就是那场轰动一时的“漏水门”。这事儿啊,说起来真是让人哭笑不得,也反映出不少现实问题。事情大概是这样的,起因是在2017年夏天,有市民反映西安地铁三号线个别站点存在漏水现象,特别是北郊的几个站点,像是市图书馆站、辛家庙站,漏水挺明显的。一开始,.............
  • 回答
    “穷不过三代”这句老话,听起来简单,但细细咂摸,却又不是那么直观好懂。尤其像你说的,如果穷到娶不上媳妇,连个后代都没有,那这“三代”之说,岂不是无从谈起?我试着从几个角度来给你掰扯掰扯,希望多少能有点意思。首先,咱们得明白,这“三代”不一定是指血脉传承的直系三代人。 古人说话,很多时候是讲究个意境和.............
  • 回答
    唐家三少关于起点新合同的言论,以及他呼吁网文作者相信腾讯的这番话,可以说是最近网络文学圈里一件相当有分量的事情。要理解他的观点,得从几个层面来看。首先,唐家三少是谁? 他是网络文学界毋庸置疑的头部作家,可以说是“现象级”的代表。他的作品销量、影响力都达到了一个普通作者难以企及的高度。这意味着他的话语.............
  • 回答
    唐家三少作为国内网络文学的头部作家,拥有一大批忠实粉丝,他的创作风格和影响力毋庸置疑。当他对《魔戒》这样的经典奇幻IP发表看法时,自然会引起广泛的关注和讨论,尤其是他的粉丝群体,更会对他的观点产生浓厚的兴趣。首先,我们得理解唐家三少《魔戒》言论的背景。 大多数情况下,这种言论会出现在他自己的社交媒体.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有