一文彻底搞懂TCP三次握手和四次挥手,及常见的面试题带答案

news2024/11/30 12:43:05

TCP(传输控制协议)是一种可靠的、面向连接的协议。在TCP/IP协议栈中,它负责在两个网络应用程序之间建立可靠的会话连接。TCP通过“三次握手”建立连接,通过“四次挥手”断开连接。本文将详细介绍这两个过程,并给出一些面试题及答案。

一:TCP三次握手 (Three-Way Handshake)

过程

SYN:客户端发送一个SYN(同步序列编号)报文到服务器,并进入SYN_SENT状态,等待服务器确认。

SYN-ACK:服务器收到SYN报文后,发送一个SYN+ACK(确认)报文给客户端,并进入SYN_RCVD状态。

ACK:客户端收到服务器的SYN+ACK报文后,会发送一个ACK报文给服务器,然后双方进入ESTABLISHED(已建立连接)状态,完成三次握手,开始数据传输。
在这里插入图片描述

目的

TCP三次握手的主要目的是建立一个可靠的会话连接,确保双方通信端口的正确性,以及同步双方的序列号和确认号,为数据传输做好准备。

二:TCP四次挥手 (Four-Way Handshake)

过程

FIN:当通信的一方完成所有数据传输后,会发送一个FIN(结束)报文来关闭连接。

ACK:另一方收到FIN报文后,会发送一个ACK报文作为应答,并将接收到的序列号加1。

FIN:在发送了ACK报文后,该方也可以发送一个FIN报文请求关闭连接。

ACK:最初发送FIN报文的一方收到对方的FIN报文后,发送一个ACK报文作为回应,然后等待足够时间以确保对方收到这个ACK报文。
TCP四次挥手

目的

四次挥手的目的是允许双方均能清楚地关闭已建立的TCP连接。由于TCP是全双工的,因此每个方向必须单独进行关闭。

在这里插入图片描述

三:面试题及答案

TCP三次握手面试题:

问题1:请简要描述TCP三次握手的过程。

答:第一次握手,客户端发送SYN包到服务器;第二次握手,服务器收到SYN包,回复一个SYN+ACK包;第三次握手,客户端收到服务器的SYN+ACK包后,回复一个ACK包,完成三次握手。

问题2:为什么TCP连接需要三次握手?两次不行吗?

答:三次握手可以确保双方都能够发送和接收数据,防止因网络延迟导致的问题。两次握手可能会导致服务器资源被浪费。

问题3:在TCP三次握手中,客户端和服务器分别扮演什么角色?

答:客户端发送连接请求,服务器接收并回复确认。

问题4:如果在TCP连接过程中,客户端发送的SYN包丢失了,会发生什么情况?

答:服务器会超时等待,然后重新发送SYN+ACK包,进行连接。

TCP四次挥手面试题:

问题5: 请简要描述TCP四次挥手的过程。

答:第一次挥手,客户端发送FIN包到服务器;第二次挥手,服务器收到FIN包,回复一个ACK包;第三次挥手,服务器发送FIN包到客户端;第四次挥手,客户端收到FIN包,回复一个ACK包,完成四次挥手。

问题6:为什么TCP连接需要四次挥手?不能三次挥手吗?

答:四次挥手是为了确保双方都能够完全关闭连接,防止因网络延迟导致的数据丢失或重发问题。

问题7:在TCP四次挥手中,客户端和服务器分别扮演什么角色?

答:客户端发送关闭请求,服务器确认并发送关闭请求,客户端再确认关闭。

问题8: 如果在TCP连接过程中,服务器收到客户端的FIN包后立即回复ACK包,会发生什么情况?

答:客户端可能还有数据需要发送,服务器需要等待客户端发送完数据后再发送FIN包,进行关闭连接

下载链接博主已将以下这些面试题整理成了一个面试手册,是PDF版的

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Women of Polkadot:波卡生态的女性社群与创新力量

在 Web3 行业里,女性似乎总是被忽视的群体。线下峰会的合照一眼望去尽是西装革履的男性成员,项目和机构高管的名单里也似乎难以寻觅到女性领导者的身影。在这个强调技术、编程、极客精神的行业里,女性身份的缺席看起来如此天生自然。 根据 B…

湖北省地质灾害分布数据 崩塌滑坡泥石流空间分布地质灾害详查等数据集

地质灾害是指在自然或者人为因素的作用下形成的,对人类生命财产造成的损失、对环境造成破坏的地质作用或地质现象。地质灾害在时间和空间上的分布变化规律,既受制于自然环境,又与人类活动有关,往往是人类与自然界相互作用的结果。…

防火墙的原理和配置

“防火墙”一词起源于建筑领域,用来隔离火灾,阻止火势从一个区域蔓延到另一个区域。引入到通信领域,防火墙这一具体设备通常用于两个网络之间有针对性的、逻辑意义上的隔离。这种隔离是选择性的,隔离“火”的蔓延,而又…

Vue.js+SpringBoot开发大学生相亲网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询会员4.2 查询相亲大会4.3 新增留言4.4 查询新闻4.5 新增新闻 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的大学生相亲网站,包含了会员管理模块、新闻管…

python 基础知识点(蓝桥杯python科目个人复习计划65)

今日复习内容:做题 例题1:遥远的雪国列车 问题描述: 小蓝和小红今天在房间里一起看完了“雪国列车”这部电影,看完之后他们感触颇深,同时他们想到了这样一道题目: 现在有一个数轴,长度为N&a…

【Godot4.2】2D导航02 - AstarGrid2D及其使用方法

概述 AstarGrid2D是Godot4.0新增的A*寻路辅助类型。可以看做是Astar2D的加强版。它允许你通过设置其size和cell_size属性来创建一个虚拟的网格。 并使用set_point_solid()这样的方法来在指定位置创建障碍物。 AstarGrid2D的好处是你不再需要手动的添加点以及点与点之间的连接…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——自适应大邻域算法(ALNS)

基于python语言,采用经典自适应大邻域算法(ALNS)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作,目前…

OPTEE v3.20.0 FVP环境搭建

目录 一、前提条件 二、下载fvp代码 三、下载工具链 四、下载Foundation_Platform FVP平台 五、编译及运行 一、前提条件 1、安装如下的依赖工具 sudo apt-get install android-tools-adb android-tools-fastboot autoconf \ automake bc bison build-essential ccache c…

精酿啤酒:开启时尚派对的钥匙

Fendi club啤酒,一个代表着时尚与品味的品牌,如今进入了啤酒市场,推出了名为“Fendi club”的啤酒。这一创新的举措不仅展现了品牌的多元化发展,更为消费者提供了一种全新的时尚生活方式。 Fendi club啤酒不仅仅是一种产品&#x…

IPD集成产品开发:塑造企业未来竞争力的关键

随着市场竞争的日益激烈,企业对产品开发的要求也越来越高。如何在快速变化的市场环境中,既保证产品的批量生产效率,又满足客户的个性化需求,成为了企业面临的重要挑战。IPD(集成产品开发)模式,作…

HarmonyOS NEXT应用开发—投票动效实现案例

介绍 本示例介绍使用绘制组件中的Polygon组件配合使用显式动画以及borderRadius实现投票pk组件。 效果预览图 使用说明 加载完成后会有一个胶囊块被切割成两个等大的图形来作为投票的两个选项,中间由PK两字分隔开点击左边选项,两个图形会随着选择人数…

简单了解多线程

并发和并行 并发: 在同一时刻,多个指令在单一CPU上交替指向 并行:在同一时刻,多个指令在多个CPU上同时执行 2核4线程,4核8线程,8核16线程,16核32线程 基础实现线程的方式 Thread :继承类 &…

英伟达深夜放王炸|字节跳动游戏之路波折不断|文旅短剧风口将至|25岁QQ魅力不减,5亿人在用|云计算市场疯长152%|电商巨头齐瞄向富足悠闲银发族

新闻一分钟速览 文旅短剧风口将至,一地狂拍十部,影视界看法分歧,悬念丛生!字节跳动游戏之路波折不断,能否逆风翻盘引关注。折叠屏手机痛症治愈,实力席卷高端市场,势头强劲!雷军豪言…

框架篇常见面试题

1、Spring框架的单例bean是线程安全的吗? 2、什么是AOP? 3、Spring的事务是如何实现的? 4、Spring事务失效的场景 5、SpringBean的声明周期 6、Spring的循环依赖 7、SpringMVC的执行流程 8、SpringBoot自动配置原理 9、Spring常见注解

1.IP复习课作业

1.IP复习课作业 1.为路由器各接口配置IP以及环回 R1 R2 R3 R4 R5 R6 2.配置dhcp为主机下发IP PC1 PC2 3.配置静态路由 R1 R2 R3 R4 R5 PC端通信 4.防止成环 R1 R2、4、5一样 5.修改优先级 R1 R2、3、4、5同样进行修改 6.均可访问R6环回 R5配置easy IP R1 ping R6环回 PC ping R…

微信小程序开发学习笔记——4.4常见的导航栏api接口

>>跟着b站up主“咸虾米_”学习微信小程序开发中,把学习记录存到这方便后续查找。 课程连接:https://www.bilibili.com/video/BV19G4y1K74d?p29&vd_source9b149469177ab5fdc47515e14cf3cf74 一、属性 界面 / 导航栏 / wx.showNavigationBar…

Java项目打包成Docker镜像

将项目打包成Docker镜像 将项目打包成Docker镜像的原因是可以在一台电脑的环境下模拟多台不同性能电脑响应高并发请求时候的表现。这里我们模拟半个CPU、一个CPU还有两个CPU的情况 在pom.xml文件中添加jib插件(前提电脑安装了maven和Java 的 JDK才能成功完成编译&…

一般做策划的的,上哪儿找策划方案借鉴?

许多策划人担忧,借鉴他人的经验和方案会会削弱自己的创新能力和独立思考。 但是,实际上,借鉴他人的经验和方案可以为自己提供更多的灵感和创意,同时也可以提高策划的成功率。 这里推荐策划人必备的宝藏网站(专治不会…

Linux系统学习总结(上)

B站大学地址:第二章-04-ls命令的参数和选项_哔哩哔哩_bilibili 操作系统概述 1、计算机是由硬件和软件两部分组成的 2、操作系统是软件的一类,主要作用是协助用户调度硬件工作,充当用户和计算机硬件之间的桥梁 3、常见的操作系统分为两类…

【Vue3】Vue3中的编程式路由导航 重点!!!

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…