Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >33. 传输层TCP协议十大主要特性(3) —— 连接管理(三次握手四次挥手)

33. 传输层TCP协议十大主要特性(3) —— 连接管理(三次握手四次挥手)

作者头像
小雨的分享社区
发布于 2022-10-26 07:51:52
发布于 2022-10-26 07:51:52
2250
举报
文章被收录于专栏:小雨的CSDN小雨的CSDN

连接管理

连接管理是分为两大块的: 1.建立连接:三次握手的过程 2.断开连接:四次挥手的过程

为什么要建立连接?

1.为了更好的保证可靠性,建立连接的过程就是让通信双方都确认验证一下各自的发送和接受能力是否能够正常 2.协商一些重要参数

建立连接:三次握手

假设我们现在在打电话,那么通信双方刚接通电话的时候就会有这样的情景:

TCP的实际连接过程中,是需要经历一下过程的:

三次握手中几个重要的状态: LISTEN:相当于手机打开了,有信号了,可以随时有人打电话进来 SYN_SEND/SYN_RCND:建立简介过程期间,如果建立连接顺利,这两个状态都是一瞬间就会消失的 ESTABLISHED:表示建立连接完成,可以开始正是通信了

断开连接:四次挥手

用两人分手的例子再来向大家做一些解释:

在TCP的实际连接过程中,是需要经历一下过程的:

对于CLOSE_WAIT的解释: 一般而言,对于服务器上出现大量的 CLOSE_WAIT 状态, 原因就是服务器没有正确的关闭 socket, 导致四次挥手没有正确完成. 这是一个 BUG. 只需要加上对应的 close 即可解决问题。(文件泄露问题)(一些文件出现相关异常也可能会导致跳过了close方法)

对于TIME_WAIT的解释: 谁主动断开连接,谁就进入了TIME_WAIT状态,到这一步的时候该主机已经完成了四次挥手的过程,但是仍然不能立刻释放资源,而是要以TIME_WAIT状态来保持一段时间的连接后在彻底释放资源(为了处理ACK丢包之后自动重传的问题,TIME_WAIT的时间是2MSL)

提问:

将三次握手改成两次行不行? 【不行,主机A还要给主机B应答,这样才能保证双方都能确认连接】 将三次握手改成四次行不行? 【行,但是没必要,因为ACK和SYN都在内核中,是同一时间发送的,把两个包合并成一个比较高效】 将四次握手改成三次行不行? 【ACK实在内核中的,FIN是需要处理完一些数据之后才会发送,ACK和FIN发送的时期不同,如果出发了延时应答机制(让ACK晚一会发送),就可以】

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【TCP】连接管理:三次握手和四次挥手
此处建立连接发送的 SYN 是同步的意思,可以延伸成:客户端希望服务器和它统一步调,来完成手续的传输
椰椰椰耶
2024/09/13
1590
【TCP】连接管理:三次握手和四次挥手
传输层TCP 三次握手与四次挥手:你真的理解了吗?
如果说三次握手是“恋爱的开始”,那么四次挥手就是“分手的全过程”——理性且克制,既保证对方准备好,也不给彼此拖泥带水的机会。
神的孩子都在歌唱
2025/04/06
2090
传输层TCP 三次握手与四次挥手:你真的理解了吗?
tcp的四次挥手(为什么三次握手和四次挥手)
在断开连接之前客户端和服务器都处于ESTABLISHED状态,双方都可以主动断开连接,以客户端主动断开连接为优。
全栈程序员站长
2022/07/29
7900
tcp的四次挥手(为什么三次握手和四次挥手)
TCP的三次握手和四次挥手
注意: IP层只包含IP地址,端口是在传输层上的,IP+端口号可以唯一表识一个进程(套接字)
承苏凯
2020/07/24
4890
TCP的三次握手和四次挥手
TCP协议三次握手与四次挥手通俗解析
 TCP/IP协议三次握手与四次握手流程解析 一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式  上图中有几个字段需要重
用户1214487
2018/01/24
8410
TCP协议三次握手与四次挥手通俗解析
网络通信——TCP “三次握手“、“四次挥手“ 详解
第一次握手: 客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
SmallRoll小卷
2023/03/03
5460
网络通信——TCP “三次握手“、“四次挥手“ 详解
在tcp协议的三次握手中(tcp/ip协议三次握手)
假设现在 A 想去 B 家里玩游戏,于是 A 给 B 发消息,若消息没有出现错误且顺序正确 结果如下所示:
全栈程序员站长
2022/07/25
5770
在tcp协议的三次握手中(tcp/ip协议三次握手)
一文搞懂TCP的三次握手和四次挥手
三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。
不脱发的程序猿
2021/01/20
30.6K0
TCP协议—三次握手四次挥手的原理<转> 三次握手四次挥手的原理
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信息。
飞天小子
2018/08/31
5150
TCP协议—三次握手四次挥手的原理<转>
		三次握手四次挥手的原理
TCP连接的建立(三次握手)和释放(四次挥手)
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。  三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手 第一次握手: 客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。 第二次握手: 服务器发回确认包(A
汤高
2018/01/11
1.1K0
TCP连接的建立(三次握手)和释放(四次挥手)
TCP三次握手和四次挥手
TCP三次握手 所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。整个流程如下图所示: 第一次握手:
武培轩
2018/04/18
8890
TCP三次握手和四次挥手
简述TCP的三次握手过程
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
ITer.996
2019/08/28
1K0
简述TCP的三次握手过程
TCP/IP三次握手四次挥手
背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次。 从好上开始,到现在,一年多也算坚持下来了。 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声音,过一会儿之后才会恢复。 中间双方可能就要不断的确认网络是否恢复,但是有时候会: 她:“你可以听到了吗?” 我:“可以了,你呢?”、 她:“喂喂,你可以听到了吗?” 我:“可以了,我可以听到了,你呢?” 她:“你可以听到了吗?” ..... 这种情况很蛋疼,那么怎样
运维小白
2018/02/06
1K0
TCP/IP三次握手四次挥手
TCP 三次握手和四次挥手
所谓三次握手,是指建立一个 TCP 连接时,需要客户端和服务器总共发送 3 个包。
希希里之海
2019/05/15
7890
TCP 三次握手和四次挥手
tcp为什么是三次握手不是两次握手_tcp四次挥手
TCP的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度。看似简单的面试问题。如果你的回答不符合面试官期待的水准,有可能就直接凉凉了。
全栈程序员站长
2022/11/09
1.7K0
tcp为什么是三次握手不是两次握手_tcp四次挥手
TCP 三次握手 和 四次挥手
概述 我们都知道 TCP 是 可靠的数据传输协议,UDP是不可靠传输,那么TCP它是怎么保证可靠传输的呢?那我们就不得不提 TCP 的三次握手和四次挥手。 三次握手 下图为三次握手的流程图 下面通过我
java404
2018/06/04
1K0
三次握手四次挥手例题(tcp三次握手原理)
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。
全栈程序员站长
2022/07/25
3260
三次握手四次挥手例题(tcp三次握手原理)
TCP三次握手&四次挥手
TCP提供一个面向连接的,可靠的字节流服务 面向连接意味着两个使用TCP的应用(通常是一个客户端和服务器)在彼此交换数据之前必须先建立 一个TCP连接。 在一个TCP连接中,仅有两方进行彼此通信
切图仔
2022/09/14
5440
TCP三次握手&四次挥手
【JavaEE初阶】网络原理-TCP连接管理之“三次握手和四次挥手”
在之前我们知道TCP的特性之一就是“有连接的”,那我们客户端建立连接是通过在应用程序中进行调用的,然后系统内核帮我们建立连接
用户11288949
2024/11/21
1190
【JavaEE初阶】网络原理-TCP连接管理之“三次握手和四次挥手”
三次握手四次挥手
此笔记默认已经熟悉TCP协议头的首部格式了,因为握手和挥手是建立的TCP协议上的,具体来说是建立在其内部的各种字段上
晚上没宵夜
2020/04/30
7040
三次握手四次挥手
推荐阅读
相关推荐
【TCP】连接管理:三次握手和四次挥手
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档