Android常见面试题:请你描述TCP三次握手与四次挥手的过程与意义
这个问题属于网络体系中的基础理论知识,对于这种类型的问题如果没有一个清晰的认识,那会让你在掌握一些“高大上“技术的时没有支撑,也难以把整体框架理顺。比如Http、RTSP 、RTMP等被广泛运用的应用层协议都是基于TCP来实现的。所以被问到这个问题并不稀奇。
网络的基础知识
TCP/IP协议定义了计算机在网络中如何发送数据、数据格式如何定义、发出消息后在网络中如何寻址找到目标计算机,最后目标计算机又如何检验收到消息的正确性、对数据拆解最后得到消息内容的一套处理标准。
有了这些标准后生产提供TCP/IP服务的软件商家就有了一套统一的规范,只要遵循这个规范去实现自己的软件功能。
在进行业务通信前,必须建立好连接,而TCP/IP连接的建立需要经过三次握手的过程。其过程如下图:
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。三次握手是确定通信双方通讯线路是全双工的最小次数,全双工通信是指:通信的双方可以同时发送和接收信息 。
正如双方电话通话:A:喂,能听到吗?B:可以此时如果A没有反馈,B无法确定A是否能够接收数据。另外TCP是可靠传输协议,保证通信的可靠性的手段中包含序列号与确认应答机制。
序列号:TCP传输时将每个字节的数据都进行了编号,保证数据的有序性与可靠性(当接收到的数据总少了某个序号的数据时,能马上知道 );确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。 而三次握手的同时也能确定通信双方的初始序列号。
C --> S SYN my sequence number is X S <-- C ACK your sequence number is X my sequence number is Y C --> S ACK your sequence number is Y如果C 未确认收到 B 的。也就是说,只有 C 发送给 S 的包都是可靠的, 而 S 发送给 C 的则不是,所以这不是可靠的连接。
除此之外,第一次握手:客户端发送连接请求消息到服务端,服务端收到信息后需要进行第二次握手:应答告知客户端已经接收连接请求。而服务端发送出去的应答消息,需要等客户端第三次握手响应后,才能确定此次连接为有效连接。
若客户端发出去的第一个连接请求由于某些原因在网络节点中滞留了导致延迟,直到客户端放弃连接后的某个时间点才到达服务端,这是一个早已失效的报文,但是此时服务端仍然认为这是客户端的建立连接请求第一次握手,于是服务端第二次握手回应了客户端。如果没有第三次握手,那么到这里,连接就建立了,但是此时客户端并没有任何数据要发送,会让服务端空等,造成资源浪费。
在完成数据交互之后,如果选择关闭连接,以回收资源,则完成四次挥手来进行“和平分手”。过程如下图:
第一次挥手:主动关闭方发送第一个包,其中FIN标志位为1,发送顺序号seq为X。第二次挥手:被动关闭方收到FIN包后发送第二个包,其中发送顺序号seq为Z,接收顺序号ack为X+1。第三次挥手:被动关闭方再发送第三个包,其中FIN标志位为1,发送顺序号seq为Y,接收顺序号ack为X。第四次挥手:主动关闭方发送第四个包,其中发送顺序号为X,接收顺序号为Y。至此,完成四次挥手。三次握手是因为建立连接时,ACK和SYN可以放在一个报文里来发送。而关闭连接时,被动关闭方可能还需要发送一些数据后,再发送FIN报文表示同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。因此断开连接需要4次。
特意整理出了有分类目录的Android面试题,方便大家平时复习和收藏。
Java 基础面试题Java集合面试题Java多线程面试题Java虚拟机面试题Android 四大组件面试题Android 异步任务和消息机制 面试题Android UI 绘制面试题Android 性能调优 面试题Android 中的 IPC 面试题Android 系统 SDK 相关面试题第三方框架 面试题数据结构与算法面试题设计模式 面试题计算机网络面试题Kotlin 面试题音视频开发面试题Flutter面试题Android Framework面试题这些Android面试题都整理打包好了→:点击下载
所有的面试题目都不是一成不变的,面试题目只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。
希望正在准备面试的朋友们能顺顺利利找到自己心仪的工作!!!
最近更新未来教育
- 打通通关“最后一公里”,青岛海关助力即墨服装产业发展擦亮“针织名城”名片
- 「人社日课·10月20日」试用期未签劳动合同,劳动关系成立吗?
- 还没入学就做课题?大工这波操作很有“未来感”!
- 宜都荣膺“全国生态文明建设示范区”称号
- 海报时评丨口碑是“好客山东”最好的名片
- 新时代 新征程 新伟业丨喜看豫东好“枫”景——商丘市坚持和发展新时代“枫桥经验”
- “以每一位学生成长为中心”培养创新型人才
- 新电商赋能开启“数智新时代” 数字化平台从业者达2.4亿人
- 绿色航空制造业发展纲要发布 相关产业链迎重大发展机遇
- 上海宝山180米、150米超高层项目已开工,轨交江杨南路站将建地铁TOD
- 做细做实“三个强化” 提升老干部归属感、幸福感、使命感
- 68所网络教育都有什么学校 网教有什么优势
- 26岁女孩咳嗽咳痰,以为是感冒,没想到是心脏出了大问题,万分凶险!
- 湖南怀化:房企可给予备案价下浮20%优惠 公积金贷款金额提升至60万
- 自学考试考籍办理要求是什么?
- 全国职业院校技能大赛区块链技术应用赛河北保定开赛
- 银龄教师发展 提质增量为要
- 科德教育三季度净利润增58.2%,中昊芯英已成参股公司
- 紧密团
- 福建省固定资产投资持续向好 前三季度全省投资同比增长3.0%
- 上海已步入重度老龄化阶段!60岁及以上户籍老年人553.66万人 占户籍总人口的
- 相聚医圣故里,感受仲景文化,探析交流医药零售发展新挑战
- 不忘初心 牢记使命
- 是新生,也是新市民!这所大学的始业教育别样精彩
- 计划3