网络面试-卧槽!牛皮了,居然把TCP三次握手四次挥手讲的这么详细
创始人
2024-02-29 10:12:24
0

TCP的定义

TCP全称为Transmission Control Protocol(传输控制协议),是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。

TCP的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度。看似简单的面试问题。如果你的回答不符合面试官期待的水准,有可能就直接凉凉了。

本文会围绕,从三次握手和四次挥手相关的一系列核心问题,分享如何更准确回答和应对常见的面试问题,以后面对再刁钻的面试官,你都可以随意地跟他扯皮了

优雅回答三次握手 三次握手:服务端新建套接字,绑定地址信息后开始监听,进入LISTEN状态。客户端新建套接字绑定地址信息后调用connect,发送连接请求SYN,并进入SYN_SENT状态,等待服务器的确认。服务端一旦监听到连接请求,就会将连接放入内核等待队列中,并向客户端发送SYN和确认报文段ACK,进入SYN_RECD状态。客户端收到SYN+ACK报文后向服务端发送确认报文段ACK,并进入ESTABLISHED状态,开始读写数据。服务端一旦收到客户端的确认报文,就进入ESTABLISHED状态,就可以进行读写数据了

为什么握手是三次,而不是两次或者四次? 答:两次不安全,四次没必要。tcp通信需要确保双方都具有数据收发的能力,得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信的能力。第一次握手是客户端发送SYN,服务端接收,服务端得出客户端的发送能力和服务端的接收能力都正常;第二次握手是服务端发送SYN+ACK,客户端接收,客户端得出客户端发送接收能力正常,服务端发送接收能力也都正常,但是此时服务器并不能确认客户端的接收能力是否正常;第三次握手客户端发送ACK,服务器接收,服务端才能得出客户端发送接收能力正常,服务端自己发送接收能力也都正常。

三次握手可以携带数据吗? 答:第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。假设第一次可以携带数据,如果有人恶意攻击服务器,每次都在第一次握手中的SYN报文放入大量数据,重复发送大量SYN报文,此时服务器会花费大量内存空间来缓冲这些报文,服务器就更容易被攻击了

tcp三次握手失败,服务端会如何处理? 答:握手失败的原因有两种,第一种是服务端没有收到SYN,则什么都不做;第二种是服务端回复了SYN+ACK后,长时间没有收到ACK响应,则超时后就会发送RST重置连接报文,释放资源

ISN代表什么?意义何在?ISN是固定不变的吗?ISN为何要动态随机 答:ISN全称是Initial Sequence Number,是TCP发送方的字节数据编号的原点,告诉对方我要开始发送数据的初始化序列号。ISN如果是固定的,攻击者很容易猜出后序的确认号,为了安全起见,避免被第三方猜到从而发送伪造的RST报文,因此ISN是动态生成的

什么是半连接队列 答:服务器第一次收到客户端的SYN之后,就会处于SYN_RECD状态,此时双方还没有完全建立连接。服务器会把这种状态下的请求连接放在一个队列里,我们把这种队列称之为半连接队列。当然还有一个全连接队列,就是已经完成三次握手,建立起来连接的就会放在全连接队列中,如果队列满了就有可能出现丢包现象

优雅回答四次挥手 四次挥手:客户端主动调用close时,向服务端发送结束报文段FIN报,同时进入FIN_WAIT1状态;服务器会收到结束报文段FIN报,服务器返回确认报文段ACK并进入CLOSE_WAIT状态,此时如果服务端有数据要发送的话,客户端依然需要接收。客户端收到服务器对结束报文段的确认,就会进入到FIN_WAIT2状态,开始等待服务器的结束报文段;服务器端数据发送完毕后,当服务器真正调用close关闭连接时,会向客户端发送结束报文段FIN包,此时服务器进入LAST_ACK状态,等待最后一个ACK的带来;客户端收到服务器发来的结束报文段, 进入TIME_WAIT, 并发出送确认报文段ACK;服务器收到了对结束报文段确认的ACK,进入CLOSED状态,断开连接。而客户端要等待2MSL的时间,才会进入到CLOSED状态

【TCP和UDP原理及应用场景-为什么有了UDP还需要TCP?C/C++/Linux/FFmpeg/webRTC/rtmp/hls/rtsp/ffplay/srs】

为什么握手是三次,而挥手时需要四次呢? 答:其实在TCP握手的时候,接收端将SYN包和ACK确认包合并到一个包中发送的,所以减少了一次包的发送。对于四次挥手,由于TCP是全双工通信,主动关闭方发送FIN请求不代表完全断开连接,只能表示主动关闭方不再发送数据了。而接收方可能还要发送数据,就不能立即关闭服务器端到客户端的数据通道,所以就不能将服务端的FIN包和对客户端的ACK包合并发送,只能先确认ACK,等服务器无需发送数据时在发送FIN包,所以四次挥手时需要四次数据包的交互

TIME_WAIT状态有什么作用,为什么主动关闭方没有直接进入CLOSED状态释放资源? 答:如果主动关闭方进入CLOSED状态后,被动关闭方发送FIN包后没有得到ACK确认,超时后就会重传一个FIN包。如果客户端没有TIME_WAIT状态而直接进入CLOSED状态释放资源,下次启动新的客户端就可能使用了与之前客户端相同的地址信息,有两个危害,第一种是这个刚启动的新的客户端绑定地址成功时,就会收到了一个重传的FIN包,对新连接就会造成影响。第二种是如果该新客户端向相同的服务端发送SYN连接请求,但是此时服务端处于LAST_ACK状态,要求收到的是ACK而不是SYN,因此就会发送RST重新建立请求。

为什么TIME_WAIT状态需要经过2MSL才能进入CLOASE状态? 答:MSL指的是报文在网络中最大生存时间。在客户端发送对服务端的FIN确认包ACK后,这个ACK包有可能到达不了,服务器端如果接收不到ACK包就会重新发送FIN包。所以客户端发送ACK后需要留出2MSL时间(ACK到达服务器器+服务器发送FIN重传包,一来一回)等待确认服务器端缺失收到了ACK包。也就是说客户端如果等待2MSL时间也没收到服务器端重传的FIN包,则就可以确认服务器已经收到客户端发送的ACK包

一台主机上出现大量的TIME_WAIT是什么原因?应该如何处理? 答:TIME_WAIT是主动关闭方出现的,一台主机出现大量的TIME_WAIT证明这台主机上发起大量的主动关闭连接。常见于一些爬虫服务器。这时候我们应该调整TIME_WAIT的等待时间,或者开启套接字地址重用选项

一台主机上出现大量的CLOSE_WAIT是什么原因?应该如何处理? 答:CLOSE_WAIT是被动关闭方收到FIN请求进行回复之后的状态,等待上层程序进一步处理,若出现大量CLOSE_WAIT,有可能是被动关闭方主机程序中忘了最后一步断开连接后调用close释放资源。这是一个 BUG.,只需要加上对应的 close 即可解决问题

tcp连接管理中的保活机制 答:tcp通信中,若两端长时间没有数据往来,则这时候每隔一段时间,服务端会向客户端发送一个保活探测数据报,要求客户端进行回复。若连续多次没有收到响应,就认为连接已经断开。长时间默认为7200s,每隔一段时间默认为75s,连续多次无响应默认为9次。这些数据都可以在套接字中修改,接口:Setsockopt 

原文链接:https://blog.csdn.net/qq_44443986/article/details/115966274

相关内容

热门资讯

今天,宜爬“山”! 转自:珠海发布大家都说,父爱如山,母爱又何尝不是!它以山的姿态站在我们的人生坐标里,它用山的沉默垒出...
汽车车门把手将迎来国家标准,释... 转自:新华网  新华社北京5月10日电 题:汽车车门把手将迎来国家标准,释放什么信号?  新华社记者...
10日付费短剧热度大盘5650... 来源:新腕儿今天发布的是昨天(5月10日)短剧付费大盘日榜,整体大盘热度值为5650万。特别声明:以...
漂泊 53 年,苏联金星探测器... IT之家 5 月 11 日消息,俄罗斯国家航天集团宣布,近地空间危险情况自动预警系统监测显示,宇宙-...
加州州长再就关税批评特朗普政府 转自:海客新闻 【#加州州长再就关税批评特朗普政府#】#...
都有数|玩儿着就能挣钱?国家认... 转自:北京日报客户端人社部日前公示拟新增无人机群飞行规划员、装修管家等17个新职业,以及黄金鉴定估价...
我爱你,不止今天! 咿呀学语时当我第一次模糊地喊出“妈妈”你尚且青涩的眼眸中亮起柔软的光长大离家后一声“妈妈”成了电话里...
焦点访谈 | 突围拓展多元市场... 来源:央视网 央视网消息(焦点访谈):当前我国的外贸行业正面临前所未有的挑战。美国肆意挥舞关税大棒,...
雨水按下暂停键 阳光重返天气舞...     昨日19时许,南宁城区迎来降雨,体感稍凉。    本报记者宋延康 摄  本报讯(记者赵金玲)...
科普大篷车进乡村 科技体验零距...     科技辅导员为学生讲授科技知识。    本报通讯员肖重虎 摄  本报讯(记者凌剑伊 通讯员蒙蓓...
镇江人才吸引力升至全国37位 金山网讯 5月9日,智联招聘旗下专业研究机构智联研究院联合“泽平宏观”正式发布《中国城市人才吸引力排...
【加快落实“五大任务” 推动高... 来源:内蒙古新闻网-《内蒙古日报  5月7日,在位于乌兰察布市四子王旗忽鸡图乡小东营村灌木林退化修复...
时政微纪录丨习主席的俄罗斯时间 来源:央视新闻客户端 应俄罗斯联邦总统普京邀请,国家主席...
常见故障100%识别 我国货运... 记者今天(11日)从国家能源集团获悉,我国货运铁路首套智能巡检机器人在河北沧州投用,这对促进我国铁路...
中共太原市委组织部公示 现对市委研究拟任职干部予以公示。郭强,男,汉族,1981年10月生,在职大学,中共党员,现任太原物产...
苏丹一州首府遭无人机袭击,20... 苏丹政府当地时间10日说,苏丹北科尔多凡州首府欧拜伊德市当天遭无人机袭击,造成20名囚犯死亡。苏丹文...
陈钧书画金石题跋艺术作品展在铜...   本报讯 (记者 吴洋凯)5月7日,由铜川书画院主办,铜川书画公园文化艺术有限公司承办的“砚耕四十...
花季少女被限制高消费,原因竟然... 转自:上观新闻2024年的夏天,大一学生小赵攥着身份证站在高铁站售票厅,屏幕上“无法购买高铁票”的提...
新职业新工种,开启无限可能! 转自:新华网 早上叫醒你的不是闹钟,可能是睡眠健康管理师...
政策一经出台,便在金融市场激起... 2025 年 5 月 7 日,中国人民银行今日向市场释放重磅政策组合拳。潘功胜行长在国务院新闻办发布...