首页 > 其他分享 >TCP的连接与释放

TCP的连接与释放

时间:2024-10-15 10:33:03浏览次数:7  
标签:释放 报文 TCP 计时器 序号 连接

TCP的连接与释放

  1. TCP是面向连接的协议,它基于运输连接来传送TCP报文段
  2. TCP运输连接的建立和释放,是每一次面向连接的通信中必不可少的过程
  3. TCP运输连接有以下三个阶段:
    • 通过“三报文握手”来建立TCP连接。
    • 基于已建立的TCP连接进行可靠的数据传输。
    • 在数据传输结束后,还要通过“四报文挥手”来释放TCP连接。

img

“三报文握手”建立TCP连接的目的在于解决以下三个主要问题

  1. 使TCP双方能够确知对方的存在。
  2. 使TCP双方能够协商一些参数(例如最大报文段长度、最大窗口大小、时间戳选项等)
  3. 使TCP双方能够对运输实体资源进行分配和初始化。运输实体资源包括缓存大小、各状态变量、连接表中的项目等。

img

  • TCP规定同步标志位SYN被设置为1的报文段(例如TCP连接请求报文段和TCP连接请求确认报文段)不能携带数据,但要消耗掉一个序号。
  • 按上述规定,TCP连接请求报文段不能携带数据(即没有数据载荷)但是会消耗掉序号x。

TCP规定第三次握手的报文段可以携带数据,但如果不携带数据,则不消耗序号

为什么不能采用两报文握手建立连接

img

四次挥手释放连接

img

从这里我们可以看到,FIN=1的报文段同样要消耗掉一个序号

为什么要等待一段时间之后再进入关闭状态?

img

  • 处于时间等待(TIME-WAIT)状态后要经过2MSL时长,可以确保TCP服务器进程能够收到最后一个TCP确认报文段而进入关闭(CLOSED)状态。
  • 另外,TCP客户进程在发送完最后一个TCP确认报文段后,再经过2MSL时长,就可是使本次连接持续时间内所产生的的所有报文段都从网络中消失。这样就可以使下一个新的TCP连接中不会出现旧连接中的报文段。

保活计时器

img

服务器每收到一次客户机发送的报文段,就会重置一次保活计时器,当保活计时器到时后,就向客户机发送探测报文。连续发送10次没有得到响应,就会释放TCP连接。

标签:释放,报文,TCP,计时器,序号,连接
From: https://www.cnblogs.com/AH20/p/18466945

相关文章

  • TCP协议
    TCP报文段源端口和目的端口。各占2B。分别表示发送方和接收方使用的端口号。序号。占4B,范围为0~\(2^{32}-1\),共\(2^{32}\)个序号。TCP连接中传送的字节流中的每个字节都要按顺序编号,序号字段值指的是本报文段所发送的数据的第一个字节的序号。例如,一报文段的序号字段值是301,......
  • 实战篇:(二)React 创建项目并连接 MySQL 后台的实战教程
    React创建项目并连接MySQL后台的实战教程一、项目概述本篇博客将介绍如何使用React搭建前端项目,并通过Node.js和MySQL实现简单的后台数据连接。通过这个项目,你将掌握从前端到后端数据库的基础开发流程,适合初学者或正在项目实战中的开发者。二、项目准备1.环境......
  • Connection to tcp://192.168.112.137:1935?tcp_nodelay=0 failed: Connection timed
    记录一下自己的报错和解决步骤输入catnginx.conf 查看Nginx的配置文件nginx.conf修改nginx核心配置文件nginx,添加rtmp模块rtmp{                                          ......
  • Scala连接数据库(mysql,redis)
    1、Scala连接mysql数据库:importjava.sql.{Connection,DriverManager,PreparedStatement,ResultSet}objectmysqlConn{defmain(args:Array[String]):Unit={Class.forName("com.mysql.jdbc.Driver")valconn:Connection=DriverManager.getCon......
  • 在 Android 开发中,如何实现蓝牙连接设备?
    在Android开发中,实现蓝牙连接设备通常通过BluetoothAdapter、BluetoothDevice、BluetoothSocket等类来实现。你可以使用这些API来搜索蓝牙设备、配对设备以及通过蓝牙进行通信。以下是实现蓝牙连接设备的详细步骤,包含设备扫描、连接以及数据传输的Java代码示例。1.......
  • 设备连接100万+,数据并发20万点/秒!——万德高科通用物联网管理平台
    万德高科通用物联网管理平台 低成本便捷接入个性化灵活可拓 高效率部署数据终身升级售后无忧设备连接100万+数据并发20万点/秒设备延迟<30ms平台简介通用物联网管理平台是一款完善的物联网设备接入、管理和数据分析应用平台,提供多元异构设备的接入与管理、数据存储......
  • c3p0数据库连接池出现Could not get JDBC Connection An attempt by a client to chec
    c3p0有些年头了,也曾红极一时。但你是否遇到过,明明并发并不高,连接池最大连接数也设的挺大了,还是报无法获取新连接。CouldnotgetJDBCConnectionAnattemptbyaclienttocheckoutaConnectionhastimedout.参考文章:https://cloud.tencent.com/developer/article/2319703......
  • 虚拟机之间能够ping通,但是建立tcp连接时却显示Failed in connect to TCP server: No r
    实验环境:A、B、C三台虚拟机,A、B一个子网、B、C一个子网,AC之间通信通过B进行转发。现象:A、C相互能够ping通,但是尝试建立TCP连接时却一直显示Noroutetohost。能够ping通,按理讲路由表应该没问题,但是还是先对几个虚拟机之间的路由表进行检查。通过以下指令查看路由表:iproute......
  • 网页提示连接数据库失败是怎么回事
    网页提示“连接数据库失败”通常是因为以下几个原因:数据库服务器未启动:可能是数据库服务没有正常运行,导致应用程序无法连接。网络问题:应用程序与数据库之间的网络连接存在问题,如端口不通、IP地址错误等。配置错误:数据库连接字符串中的信息如用户名、密码、服务器地址等配置不......
  • 请问数据库如何连接网站
    数据库连接网站通常是指网站的应用程序(如后端服务)与数据库建立通信的过程。这个过程涉及几个关键步骤和技术选择。下面是一些基本步骤和建议:选择合适的数据库根据你的应用需求选择适合的数据库类型,例如关系型数据库(如MySQL,PostgreSQL)或非关系型数据库(如MongoDB,Redis)。......