计算机网络面经-TCP三次握手一文说清

目录

说一下TCP的三次握手?

为什么要三次握手?两次行不行?四次呢?

为什么建立连接是三次握手,关闭连接确是四次挥手呢?

TCP四次挥手的过程?

如果已经建立了连接,但是客户端突然出现故障了怎么办?

为什么客户端最后还要等待2MSL?


说一下TCP的三次握手?

官方回答:

1. 客户端发送SYN ( seq=x )报文给服务器端,进入SYN_SEND 状态。

2. 服务器端收到SYN 报文, 回应一个SYN (seq =y ) 和ACK ( ack=x+ I )报文,进入SYN RECV 状态。

3. 客户端收到服务器端的SYN 报文, 回应一个ACK ( ack=y+ 1 )报文,进入Established 状态

为什么要三次握手?两次行不行?四次呢?

非官方解释三次握手

第一次握手:客户端发送网络包,服务端收到了。服务端得出结论:客户端的发送能力、服务端的接收能力是正常的。

第二次握手:服务端发包,客户端收到了。客户端得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。

第三次握手:客户端发包,服务端收到了。服务端得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。

三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号

不使用「两次握手」和「四次握手」的原因:

  • 「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
  • 「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

为什么建立连接是三次握手,关闭连接确是四次挥手呢?

TCP 在建立连接时要进行三次握手,在断开连接时要进行四次挥手,这是由于TCP的半关闭造成的。因为TCP 连接是全双工的(即数据可在两个方向上同时传递),所以在进行关闭时对每个方向都要单独进行关闭,这种单方向的关闭叫作半关闭。在二方完

成它的数据发送任务时,就发送一个FIN 来向另一方通告将要终止这个方向的连接。

TCP四次挥手的过程?

1. 客户端应用进程调用断开连接的请求,向服务器端发送一个终止标志位FIN = 1,seq=u 的消息,表示在客户端关闭链路前要发送的数据已经安全发送完毕,可以开始关闭链路操作,并请求服务器端确认关闭客户端到服务器的链路操作。此时客户端处于

FIN-WAIT-l 状态。

2. 服务器在收到这个FIN 消息后返回一个ACK=l,ack=u+ 1 ,seq=v 的消息给客户端,表示接收到客户端断开链路的操作请求,这时TCP 服务器端进程通知高层应用进程释放客户端到服务器端的链路服务器处于CLOSE - WAIT 状态,即半关闭状态。客户端在收到消息后处于FIN - WAIT- 2 状态

3. 服务器端将关闭链路前需要发送给客户端的消息发送给客户端,在等待该数据发送完成后, 发送一个终止标志位FIN = l ,ACK= l ,seq=w,a ck= u+ 1 的消息给客户端,表示关闭链路前服务器需要向客户端发送的消息已经发送完毕,请求客户端确认关闭从服务器到客户端的链路操作, 此时服务器端处于LAS 下A C K 状态,等待客户端最终断开链路。

4. 客户端在接收到这个最终FI N 消息后,发送一个ACK = l ,seq=u + l ,ack=w+ I 的消息给服务器端,表示接收到服务器端的断开连接请求并准备断开服务器端到客户端的链路。此时客户端处于TIM-WA IT 状态, TCP 连接还没有释放,然后经过等待计时器

( 2MSL )设置的时间后,客户端将进入CLOSE 状态。

如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

为什么客户端最后还要等待2MSL?

MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

  • 保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器
  • 防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文

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

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

相关文章

TSL四次握手

HTTPS 常用的密钥交换算法有两种,分别是 RSA 和 ECDHE 算法。 其中,RSA 是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用的。而 ECDHE 算法具有前向安全,所以被广泛使用。 1. ECDHE算法 1.…

PostgreSQL如何使用UUID

离线安装时,一般有四个包,都安装的话,只需要开启uuid的使用即可,如果工具包(即 postgresql11-contrib)没有安装的话,需要单独安装一次,再进行开启。 开启UUID方法 下面介绍一下如何开启&#…

ELK介绍以及搭建

基础环境 hostnamectl set-hostname els01 hostnamectl set-hostname els02 hostnamectl set-hostname els03 hostnamectl set-hostname kbased -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config systemctl stop firewalld & systemctl disable firewalld# 安…

互联设备-中继器-路由器等

网卡的主要作用 1 在发送方 把从计算机系统要发送的数据转换成能在网线上传输的bit 流 。 2 在接收方 把从网线上接收来的 bit 流重组成计算机系统可以 处理的数据 。 3 判断数据是否是发给自己的 4 发送和控制计算机系统和网线数据流 计算机的分类 1、台式机 2、小型机和服…

亿道丨三防平板丨加固平板丨为零售业提供四大优势

随着全球经济的快速发展,作为传统行业的零售业也迎来了绝佳的发展机遇,在互联网智能化的大环境下,越来越多的零售企业选择三防平板电脑作为工作中的电子设备。作为一种耐用的移动选项,三防平板带来的不仅仅是坚固的外壳。坚固耐用…

计算机网络面经-从浏览器地址栏输入 url 到显示主页的过程?

大概的过程比较简单,但是有很多点可以细挖:DNS解析、TCP三次握手、HTTP报文格式、TCP四次挥手等等。 DNS 解析:将域名解析成对应的 IP 地址。TCP连接:与服务器通过三次握手,建立 TCP 连接向服务器发送 HTTP 请求服务器…

模型 KISS复盘法

系列文章 分享 模型,了解更多👉 模型_总纲目录。重在提升认知。反思过去,不断进步。 1 KISS复盘法的应用 1.1 团队项目复盘 在一个团队项目结束后,团队成员可以使用KISS模型进行复盘,以总结经验教训并改进未来的工作…

Web3之光:揭秘数字创新的未来

随着数字化时代的深入发展,Web3正以其独特的技术和理念,为我们打开数字创新的崭新视角。作为数字化时代的新兴力量,Web3将深刻影响着我们的生活、工作和社会。本文将揭秘Web3的奥秘,探讨其在数字创新领域的前景和潜力。 1. 重新定…

HTTP 与 HTTPS-HTTP 解决了 HTTP 哪些问题?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 解决了 HTTP 哪些问题? HTTP 由于是明文传输,所以安全上存在以下三个风险: 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。篡改风险,比如…

Spark: a little summary

转眼写spark一年半了,从之前写机器学习组件、做olap到后面做图计算,一直都是用的spark,惭愧的是没太看过里面的源码。这篇文章的目的是总结一下Spark里面比较重要的point,重点部分会稍微看一下源代码,因为spark是跟cli…

(done) 矩阵的对角化,以及是否可对角化的判断、还有对角化的本质。相似对角化计算过程

相似对角化 和 对角化 很大程度上是一回事 甚至判断两个矩阵的相似性,也跟对角化有很大关系 参考视频1:https://www.bilibili.com/video/BV1PA411T7b5/?spm_id_from333.788&vd_source7a1a0bc74158c6993c7355c5490fc600 参考视频2:http…

在 Jupyter Notebook 中查看所使用的 Python 版本和 Python 解释器路径

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 我们在做 Python 开发时,有时在我们的服务器上可能安装了多个 Python 版本。 使用 conda info --envs 可以列出所有的 conda 环境。当在 Linux 服务器上使用 which python 命令时&#xff0…

解决IDEA中Maven下载依赖包过慢或报错的问题

由于公司项目迭代,越来越多的项目开始转型新版本,由于我对Java一直不感冒,但要顺应公司项目要求,遂自己要逐步开始完善Java相关的知识层面,此篇是我在学习SpringBoot时对一些不懂地方及遇到问题时的记录。 学习视频链…

ChatGPT plus 的平替:9个可以联网的免费AI搜索引擎

ChatGPT plus 的平替:9个可以联网的免费AI搜索引擎。 由于ChatGPT 训练数据截止到2021年9月,在该时间点之后发生的事件,ChatGPT均无法给出答复。所以,大家现在都非常期待ChatGPT能够联网,访问实时的信息。 ChatGPT pl…

详解编译和链接!

目录 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理 2.2 编译 2.3 汇编 2.4 链接 3. 运行环境 4.完结散花 悟已往之不谏,知来者犹可追 创作不易,宝子们!如果这篇文章对你们…

如何用壁纸讲述你的墙故事?

1、方小童在线工具集 网址: 方小童 该网站是一款在线工具集合的网站,目前包含PDF文件在线转换、随机生成美女图片、精美壁纸、电子书搜索等功能,喜欢的可以赶紧去试试!

Linux Android USB gadget(从设备驱动)

Linux Android USB gadget 一:Linux usb gadget 与 Android Composite Gadget二:原生方式和Android方式如何配置函数调用逻辑内核配置原生驱动android驱动三:mass_storage配置虚拟化U盘四:遍历usb设备五:adb usb判断usb设备为adb获取adb配置信息adb设备序列号发送与接收《Linux…

linux服务器tomcat日志中文出现问号乱码

目录 一、场景二、排查三、原因四、解决 一、场景 tomcat日志的中文出现问号乱码 乱码示例 ??[377995738417729536]????????? ac??????????????message:二、排查 1、使用locale命令查看服务器当前使用的语言包 发现只用的语言包为utf-8&#xff0…

2001~2023年中国MOD17A3HGF NPP数据

各位同学们好&#xff0c;今天和大伙儿分享的是2001~2023年中国MOD17A3HGF NPP数据。如果大家有下载处理数据等方面的问题&#xff0c;请私信或评论。 Running, S., M. Zhao. <i>MODIS/Terra Net Primary Production Gap-Filled Yearly L4 Global 500m SIN Grid V061<…

ACM题解Day6 | 质数素数模块 | 完数难题

学习目标&#xff1a; 博主介绍: 27dCnc 专题 : 数据结构帮助小白快速入门算法 &#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d; ☆*: .&#xff61;. o(≧▽…