TCP连接的建立与释放及SYN Flood介绍

TCP三次握手与四次挥手:深入解析网络连接的生命周期 在计算机网络中,传输控制协议(TCP)是确保数据可靠传输的核心机制。其工作原理基于面向连接和可靠传输的设计理念,通过序列号、确认应答和滑动窗口等机制保障数据的完整性与顺序。这一技术价值在于为上层应用提供了稳定的字节流服务,是互联网通信的基石。在实际应用场景中,无论是网页浏览、文件传输还是实时通信,都依赖于TCP连接的建立与释放过程。其中,三次握手通过SYN和ACK标志位的交互,同步双方序列号并确认通信能力,有效防止了失效连接请求造成的资源浪费;四次挥手则通过FIN和ACK报文,在全双工信道中实现双向连接的优 阅读详情

Preface

总结一下TCP连接的三次握手过程,连接释放的四次挥手过程,以及其原生的缺陷引起的SYN Flood的简单介绍。


目录


TCP连接建立——三次握手


几个概念

  • seq:序号,占4个字节,范围[0,4284967296],由于TCP是面向字节流的,传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。此外序号是循环使用的

  • ACK: 仅当ACK=1时确认字段才有效,当ACK=0时确认字段无效,并且TCP规定,在连接建立后所有的传送报文段都必须要把ACK置为1

  • SYN:同步序列号,用来发起一个连接。当SYN=1而ACK=0时表明这是一个请求报文段;若对方同意连接,则响应报文中SYN=1,ACK=1

  • FIN :用来释放一个连接,当FIN=1表示此报文段的发送方已经发送完毕。并要求释放链接

这里写图片描述


三次握手过程

服务端的TCP进程先创建传输控制块TCB,准备接受客户端进程的连接请求,然后服务端进程处于LISTEN状态,等待客户端的连接请求,如有,则作出响应。

  • 客户端的TCP进程也首先创建传输控制模块TCB,然后向服务端发出连接请求报文段,该报文段首部中的SYN=1,ACK=0,同时选择一个初始序号 seq=i。TCP规定,SYN=1的报文段不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入SYN—SENT(同步已发送)状态,这是 TCP连接的第一次握手。
  • 服务端收到客户端发来的请求报文后,如果同意建立连接,则向客户端发送确认。确认报文中的SYN=1,ACK=1,确认号ack=i+1,同时为自己选择一个初始序号seq=j。同样该报文段也是SYN=1的报文段,不能携带数据,但同样要消耗掉一个序号。这时,TCP服务端进入SYN—RCVD(同步收到)状态,这是TCP连接的第二次握手。
  • TCP客户端进程收到服务端进程的确认后,还要向服务端给出确认。确认报文段的ACK=1,确认号ack=j+1,而自己的序号为seq=i+1。 TCP的标准规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号,因此,如果不携带数据,则下一个报文段的序号仍为seq=i+1。这时,TCP连接已经建立,客户端进入ESTABLISHED(已建立连接)状态。这是TCP连接的第三次握手,可以看出第三次握手客户端已经可以发送携带数据的报文段了。
  • 当服务端收到确认后,也进入ESTABLISHED(已建立连接)状态。

这里写图片描述

为什么是三次握手?

前俩比较容易理解,第三次握手看似多余其实不然,这主要是为了防止已失效的请求报文段突然又传送到了服务端而产生连接的误判。

比如:客户端发送了一个连接请求报文段A到服务端,但是在某些网络节点上长时间滞留了,而后客户端又超时重发了一个连接请求报文段B该服务端,而后 正常建立连接,数据传输完毕,并释放了连接。但是请求报文段A延迟了一段时间后,又到了服务端,这本是一个早已失效的报文段,但是服务端收到后会误以为客户端又发出了一次连接请求,于是向客户端发出确认报文段,并同意建立连接。那么问题来了,假如这里没有三次握手,这时服务端只要发送了确认,新的 连接就建立了,但由于客户端没有发出建立连接的请求,因此不会理会服务端的确认,也不会向服务端发送数据,而服务端却认为新的连接已经建立了,并在 一直等待客户端发送数据,这样服务端就会一直等待下去,直到超出保活计数器的设定值,而将客户端判定为出了问题,才会关闭这个连接。这样就浪费了很多服务 器的资源。而如果采用三次握手,客户端就不会向服务端发出确认,服务端由于收不到确认,就知道客户端没有要求建立连接,从而不建立该连接。



缺陷引起的SYN Flood

SYN Flood 攻击

SYN- Flood攻击是当前网络上最为常见的DDoS攻击,也是最为经典的拒绝服务攻击,它就是利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量 的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。这种攻击早在1996年就被发现,但至今仍然显示出强大的生命力。很多操作系统,甚至防火墙、路由器都无法有效地防御这种攻击,而且由于它可以方便地伪造源地址,追查起来非常困难。它的数据包特征通常是,源发送了大量的SYN包,并且缺少三次握手的最后一步握手ACK回复。

原理:攻击者首先伪造地址对服务器发起SYN请求,服务器回应(SYN+ACK)包,而真实的IP会认为,我没有发送请求,不作回应。服务器没有收到回应,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries)。这样的话,对于服务器的内存,带宽都有很大的消耗。攻击者如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难。

SYN Flood 防护措施

主要通过以下3种方式:

  • 无效连接监视释放

这种方法不停的监视系统中半开连接和不活动连接,当达到一定阈值时拆除这些连接,释放系统资源。这种绝对公平的方法往往也会将正常的连接的请求也会被释放掉,”伤敌一千,自损八百“

  • 延缓TCB分配方法

SYN Flood关键是利用了,SYN数据报文一到,系统立即分配TCB资源,从而占用了系统资源,因此有俩种技术来解决这一问题

Syn Cache技术

这种技术在收到SYN时不急着去分配TCB,而是先回应一个ACK报文,并在一个专用的HASH表中(Cache)中保存这种半开连接,直到收到正确的ACK报文再去分配TCB

Syn Cookie技术

Syn Cookie技术则完全不使用任何存储资源,它使用一种特殊的算法生成Sequence Number,这种算法考虑到了对方的IP、端口、己方IP、端口的固定信息,以及对方无法知道而己方比较固定的一些信息,如MSS、时间等,在收到对方 的ACK报文后,重新计算一遍,看其是否与对方回应报文中的(Sequence Number-1)相同,从而决定是否分配TCB资源

  • 使用SYN Proxy防火墙
    原理:对试图穿越的SYN请求进行验证之后才放行。


TCP连接释放——四次挥手

挥手过程

这里写图片描述

数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。

  • 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  • 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
  • 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  • 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  • 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
  • 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

这里写图片描述

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

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

PS:实际用抓包工具抓包分析时,有时候会发现TCP的释放只有三次的挥手,那是因为客户端发送请求断开连接后,服务器没有数据要再发给客户端了,所以把第二次的ACK和第三次的FIN两次的TCP报文段合成了一次ACK+FIN发送。

为什么TIME_WAIT状态还需要等2MSL?

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

关闭TCP连接一定需要4次挥手吗?

不一定,4次挥手关闭TCP连接是最安全的做法。但在有些时候,我们不喜欢TIME_WAIT 状态(如当MSL数值设置过大导致服务器端有太多TIME_WAIT状态的TCP连接,减少这些条目数可以更快地关闭连接,为新连接释放更多资源),这时我们可以通过设置SOCKET变量的SO_LINGER标志来避免SOCKET在close()之后进入TIME_WAIT状态,这时将通过发送RST强制终止TCP连接(取代正常的TCP四次握手的终止方式)。但这并不是一个很好的主意,TIME_WAIT 对于我们来说往往是有利的。

QGIS效率提升神器:qgis_mcp插件+VSCode联合工作流配置全解析 本文详细解析了如何通过配置qgis_mcp插件与VSCode的联合工作流,实现语音控制和代码自动化来大幅提升QGIS操作效率。该方案将自然语言交互与现代编辑器生态结合,为地理信息专业人士构建了智能、高效的全新工作模式,彻底改变传统GIS操作方式。 阅读详情

相关推荐

Labview程序框架介绍

当掌握LabVIEW基础知识并达到,理解单个小型模块程序会相对轻松。而若想进一步探索大型程序,就必然需要了解程序框架相关内容。LabVIEW常用的程序架构包括等。在多年工作中,我接触过的众多高级工程师所开发的大型程序,基本都基于这些架构搭建。接下来,将为大家详细介绍这些框架。

Misterlhw的博客 4619

计算机网络复习------TCP的三次握手

IP协议是无连接的通信协议,它不会占用两个正在通信的计算机之间的通信线路,这样IP就降低对网络线路的需求,每条线都可以满足许多计算机之间的通信需要,通过IP,消息或者其他会被分割为较小的独立的包,并通过在因特网在计算机之间传送。IP负责将每个包,路由至其目的地。但IP协议没有做任何事情来确认数据包是否按顺序发送,或者包被破坏。所以IP数据包是不可靠的,需要由它的上层协议作出控制。 传输控制协议T...

qq_41398448的博客 2053

Kubernetes集群资源优化实战:Volcano调度器如何帮你省下30%GPU算力

本文详细介绍了如何通过Volcano调度器的Binpack策略优化Kubernetes集群中的GPU资源利用率,解决AI模型训练中的资源碎片化问题。通过实战配置和调优指南,帮助用户提升30%的GPU算力利用率,显著降低任务等待时间和硬件成本。

weixin_30832143的博客 506

网络原理:三次握手和四次挥手中的一些问题

啦啦啦,寡人累了

qq_45036591的博客 1020

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

大数据架构中的数据血缘追踪技术解析

数据血缘(Data Lineage)是指数据从源头到目标的完整流转路径,它记录了数据在整个生命周期中的变化过程。在大数据架构中,数据血缘追踪技术已经成为数据治理的核心组成部分。本文旨在全面解析数据血缘追踪的技术原理、实现方法和应用实践,帮助读者深入理解这一关键技术。本文将从基础概念入手,逐步深入到技术实现细节,最后探讨实际应用和未来趋势。数据血缘的核心概念和技术原理数据血缘的数学模型和算法实现实际项目案例和代码解析主流工具和解决方案比较未来发展方向和技术挑战。

架构师的AI之路,分享AI应用开发架构的学习与实践。 688

TCP三次握手相关问题详细解读

TCP三次握手相关情况

weixin_51490695的博客 1433

【雕爷学编程】Arduino动手做(71)---红外遥控器及接收模块3

雕爷学编程,Arduino动手做,开源硬件,创客传感器,红外遥控器及接收模块

雕爷学编程 2285

【某农业大学计算机网络实验报告】实验五 TCP 运输连接管理

通过回顾实验内容可以看到,本实验中连接释放过程的第二、三次挥手同时进行的,服务器0收到第一次挥手的FIN后,向PC0发送一个ACK报文段,表示收到了PC0的FIN,并与此同时,服务器0发起自己的关闭过程,向PC0发送了一个FIN,这种同时进行的挥手效率较高。随后,单击逻辑工作空间中的 PC,在 Desktop 选项卡中打开 Web Browser,在 URL 框中输入服务器的IP 地址,然后单击 Go 按钮,最小化模拟浏览器窗口,可以看到此时在主机上已经预备发送TCP数据包,至此数据准备工作已经全部完毕。

m0_69187448的博客 2603

C#项目实战——YModem协议文件传输【实例】

1、先由上位机发送*update*的握手信号,下位机返回响应字符‘C’(字符C,ASII码为0x43),之后通信双方开始以YMODEM协议进行数据通信。2、 YMODEM协议格式说明(1)起始帧数据格式帧类型(1byte)帧序号帧序号反码传输的文件名文件大小数据CRCSOH00FFfilenamefileziseNULCRCSOH=0x01,表示这个数据帧中包含着128个字节的数据(STX表示1024字节,初始帧只有128个);00表示数据帧序号,初始是0,依次向下排。

做有价值的事,积累有价值的笔记! 3654

VTK API 详解(103):vtkGPUVolumeRayCastMapper - GPU加速体绘制

是 VTK 中基于 GPU 的高效体绘制映射器,利用现代显卡的计算能力,通过射线投射算法实现快速且高质量的三维体积渲染。相比 CPU 版本的,GPU 映射器性能大幅提升,支持更复杂的光照和渲染效果,是体绘制的主流选择。是 VTK 中性能优异的GPU体绘制映射器;适合大数据集和实时交互应用;配合灵活设置颜色、透明度和光照;建议在支持OpenGL的环境中使用。

yumeiguo的博客 292

TCP协议与UDP协议学习笔记

引子 今天正好是周末,刚好偶然翻到了之前学习计算机网络的时候做的关于TCP协议、UDP协议的笔记。TCP三次握手、四次挥手又是面试中的高频考点,正好自己最近也在准备各种面试,这里就总结一下TCP协议和UDP协议相关的知识点。 TCP协议与UDP协议 TCP协议和UDP协议是运输层的两个主要协议。 TCP:Transmission Control Protocol,传输控制协议 UDP:U...

蛋壳城堡 713

嵌入式开发环境Vscode开发STM32单片机程序

STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的。这里介绍一些使用 gcc +开发单片机程序的经验。(这里不解释 gcc 是什么)。

嵌入式技术开发 1842

关于三次握手与四次挥手你要知道这些

TCP的整个连接过程 如果没有基础的话,直接看这张图或者网络上各种文字描述,十分生涩,所以先看懂接下来的握手挥手的图,理解之后,再看这个有限状态机就感觉原来如此简单。 三次握手 握手过程 第一次握手:主机A发送位码为syn=1,随机产生seq number=x的数据包到服务器,客户端进入SYN_SEND状态,等待服务器的确认;主机B由SYN=1知道A要求建立连接。 第二次握手:主...

bajiezhan7788的博客 124

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算机网络中TCP连接管理,计算机网络 TCP协议

TCP:面向连接的运输TCP协议是面向连接的协议,把连接作为最基本的抽象。每一条TCP连接唯一的被通信两端的两个端点所确定。TCP协议是点对点,而不是点对多点。端点又被称为套接字,TCP协议规定,IP地址拼接端口号就构成套接字。预备知识:1 可靠数据运输原理:1、TCP协议发送两种数据包,一种数据包用来传输数据,一种数据包用来发送控制信息。TCP数据都会有一个包头,包头中有相应标志位,标志位的设定...

weixin_39694174的博客 167

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【计算机网络】TCP连接管理详解:三次握手、四次挥手与异常处理机制

本文深入解析了TCP协议的三次握手和四次挥手过程。三次握手通过同步序列号、验证全双工通信可靠性来避免资源浪费,防止SYN Flood攻击。四次挥手则由于TCP全双工特性,需要双方独立关闭各自的数据通道。同时探讨了TIME_WAIT状态的作用,以及Socket API与TCP连接的关系,指出连接建立由操作系统完成,accept仅用于获取连接句柄。通过图解和详细分析,阐明了TCP通信的核心机制及其设计原理。

2403_88316985的博客 1375

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

传输层通信协议 TCP 的经典问题:建连接与断连接

大家好,今天聊聊传输层通信协议 TCP 的经典问题:建连接与断连接。网络上的传输是没有连接的,包括 TCP 也是一样的。而 TCP 所谓的“连接”,其实只不过是在通讯的双方维护一个“连接状态”,让它看上去好像有连接一样。所以,TCP 状态变换是非常重要的。 很多人会问,为什么建链接要 3 次握手,断链接需要 4 次挥手?对于建链接的 3 握手,主要是要初始化 Sequence Number 的初始值。通信的双方要互相通知对方自己的初始化的 Sequence Number(缩写为 ISN:Inital Seq

weixin_53953440的博客 450

TCP

1 TCP报文首部 源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 确认号,占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字...

海贼懒懒 1757

TCP连接管理——三次握手和四次挥手

客户端状态服务端状态CLOSEDCLOSEDSYN_SENTLISTENSYN_RCVDFIN_WAIT_1FIN_WAIT_2CLOSE_WAITTIME_WAITLAST_ACKCLOSEDCLOSED。

likuoelie的博客 1902

TCP考点

TCP 的数据包如何组织? 透视一个协议的最原始的方法就是看它的数据包,一个TCP 的报文格式如下: 这里面的字段就包括了: 源端口 表明发送端所使用的端口号,用于目标主机回应。 目的端口 表明要连接的目标主机的端口号。 序号 表明发送的数据包的顺序,一般为上次发送包中的顺序号+1。 若该数据包是整个TCP连接中的第一个包(SYN包),则该值是随机生成的。 确认号 表明本端TCP已经接...

shenhua969的专栏 363

价值2000元的Java学习资源泄露,面试篇

前言 从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 Linus 大神。 出来混总是要还的,前些天就遇到了 Git 里一种十分糟心的场景,并为之前没有深入理解 Git 命令付出了一下午时间的代价。 先介绍一下这种场景,我们一个项目从 N 版本升到 A 版本时引入了另一项目的 jar 包,又陆续发布了 B、C 版本,但在 C 版

122

大厂Mysql高频面试题!价值2000元的Java学习资源泄露

前言 从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 Linus 大神。 出来混总是要还的,前些天就遇到了 Git 里一种十分糟心的场景,并为之前没有深入理解 Git 命令付出了一下午时间的代价。 先介绍一下这种场景,我们一个项目从 N 版本升到 A 版本时引入了另一项目的 jar 包,又陆续发布了 B、C 版本,但在 C 版

m0_56830858的博客 117

成为高手前必懂的TCP干货

目录 一、起源 二、TCP 协议 TCP 的特点? 怎么理解全双工? TCP 的数据包如何组织? 三、TCP 工作流程 四、 三次握手 五、 四次挥手 小结 我们在平时的...

weixin_34138521的博客 160

tcp的三次握手与四次握手过程,各个状态的名称与含义,一些问题?

tcp建立连接的开始,会进行三次握手,tcp释放连接的时候,会进行四次挥手。 首先,三次握手 第一次握手,由客户端首先向服务器端发起请求,传送一个tcp连接请求的报文段,这个特殊的报文段不含应用层数据,其中首部的同步位SYN置1,ACK置0,另外,客户机会随机选择一个起始序号seq = x(连接请求不携带数据,但是需要消耗一个序号)。 第二次握手,由服务器的tcp收到连接请求报文段后,如果同...

weixin_39137699的博客 243

【原理+实战+视频+源码】java基础编程题及答案

TCP 报文段结构 一谈到 TCP 协议,大家最先想到的词就是「面向连接」和「可靠」。没错,TCP 协议的设计就是为了能够在客户端和服务器之间建立起一个可靠连接。 在讲连接过程之前,我们先来看看 TCP 的报文段结构,通过这个结构,我们可以知道 TCP 能够提供什么信息: 这里有几点是需要注意的: TCP 协议需要一个四元组(源IP,源端口,目的IP,目的端口)来确定连接,这要和 UDP 协议区分开。多说一句,IP 地址位于 IP 报文段,TCP 报文段是不含 IP 地址信息的。 基本 TCP 头部的长

m0_57472099的博客 170

tcp 二次握手时延_程序员面试被问到“三次握手,四次挥手”怎么办?

作者 | 饶全成责编 | 郭 芮记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去我也不懂,皆大欢喜!作为程序员,要有“刨根问底”的精神。知其然,更要知其所以然。这篇文章希望能抽丝剥茧,还原背后的原理。什么是“3次握手,4次...

weixin_39989875的博客 112
上一篇: 判断两个单链表是否相交及找到第一个交点
下一篇: 数值分析-范数的基础知识总结
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值