本文主要探究tcp连接建立和释放过程中的状态演变

TCP连接的建立

三次握手

其实这张图已经说得很清楚了,客户端应用程序调用connect导致TCP发送一个SYN报文段,服务器端有一个监听套接字,该监听套接字收到SYN后,在待连接套接字队列中插入一项,然后发送SYN和对客户端确认的ACK(注意到ACK序列号总是和目前等待接收的序列号相同,此图中客户端发送的数据仅仅只有SYN 1个字节,所以在SYN的序列号J的基础上加1得到ACK的序列号,如果是其他数据报文段,那么报文段实际长度为多少,确认序列号就在该报文段的序列号基础上加多少)。客户端接收到该SYN和ACK以后,connect调用就成功返回,同时向服务端发送ACK。服务端接收到客户端发送的ACK之后,就将该连接从待连接套接字队列移到已连接套接字队列,等待accept调用从已连接套接字队列中取出。注意到accept总是对已连接套接字队列执行pop操作,因此accept得到的总是三路握手已完成,连接已建立的套接字,可以说即使不调用accept,这个已连接的套接字也已经存在于系统中。那么如果客户端在三路握手完成之后,accept调用之前crash掉怎么办,有些系统对accept之前crash掉的连接在内核层面已经解决,所以accept不会看到这种状态的出现,另一些对已经crash掉的连接调用accept则返回ECONNABORT错误,因此,最保险的做法是检查ECONNABORT错误,如果检查到该错误,直接进行下一次accept就行。

TCP连接的释放

服务器未能释放tcp连接,TCP连接的建立和释放相关推荐

  1. python连接redis_Python连接Redis

    Redis: 是一个高性能的key-value数据库. 简单来说就是:当你使用关系型数据库.文件或者其他介质存东西,性能不好反应慢,这个时候就要拿个东西做缓存.同类产品有好几种,目前比较流行,在我司进 ...

  2. tcp、udp协议连接的建立和释放

    tcp协议连接的建立和释放 一.tcp协议 (1)tcp的头部结构 (2)tcp的三次握手(重点) (3)tcp的四次挥手(重点) (4)tcp的状态转移图 (5)tcp可靠性的体现 二.UDP协议 ...

  3. TCP三次握手详解及释放连接过程

    TCP头部: 其中 ACK   SYN  序号  这三个部分在以下会用到,它们的介绍也在下面. 暂时需要的信息有: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的A ...

  4. TCP的三次握手建立连接和四次握手释放连接

    1.socket中TCP的三次握手建立连接详解 我们知道tcp建立连接要进行"三次握手",即交换三个分组.大致流程如下: 客户端向服务器发送一个SYN J 服务器向客户端响应一个S ...

  5. arm linux tcp,ARM Linux多连接TCP服务器的应用程序设计

    嵌入式Linux工控主板EM9160的主要功能之一就是作为网络平台,工控领域中比较常见的网络应用是利用TCP/IP协议进行数据通讯.在网络应用中,通常都实现多连接的应用需求,本文主要介绍EM9160作 ...

  6. TCP连接三次握手协议,释放连接四次挥手,以及使用 awl伪造mac地址进行多线程syn洪泛攻击。...

    这个TCP连接就是一次追女生-谈恋爱-分手,追求比分手简单,但是分手比追求复杂.哥,谈了半年的女朋友,在就快要成功了的时候分了,原因是因为有人在后面该老子背后搞SYN洪泛攻击,最后女朋友丢失了.学会T ...

  7. TCP连接的建立和释放过程详解(三次握手、四次挥手)

    1. TCP是基于连接的协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议.所谓面向连接,是指通信双方在进行通 ...

  8. TCP连接的建立与释放

    概述 TCP是一个面向连接的协议.无论哪一方向另一方发送数据前,都必须先在双方之间建立一条连接. 这种两端间连接的建立与无连接协议如UDP不同.一端使用UDP向另一端发送数据报时,无需任何预先的握手. ...

  9. 服务器系统2012怎么多人连接,windows2012服务器TCP连接数

    windows2012服务器TCP连接数 内容精选 换一换 使用远程登录方式连接登录Windows云服务器时出现如下错误:由于没有远程桌面授权服务器可以提供许可证,远程会话被中断,请跟服务器管理员联系 ...

  10. qt客户端连接服务器不响应,qt判断tcp客户端是否连接服务器

    qt判断tcp客户端是否连接服务器 内容精选 换一换 本章节指导您使用MongoDB客户端,通过弹性云服务器内网方式连接GaussDB(for Mongo)集群实例.操作系统使用场景:弹性云服务器的操 ...

最新文章

  1. java method 注释_Java注解
  2. !!!!Linux系统开发 系列 4 进程资源 环境 fork()子进程 wait() waitpid()僵尸 孤儿进程...
  3. vb.net datetimepicker月到当日的天数_【坦克世界】11月10日个人专属优惠商店限时开放...
  4. 一个简单的DDraw应用程序2
  5. 谁将称霸跨平台应用市场?
  6. 20140608 科技脉搏 -下半身需求是人类共同需求,有多少人就有多大市场
  7. ASP连接sql server实例解析
  8. 2012年3月份第2周51Aspx源码发布详情
  9. 知乎 高级操作系统_知乎问题:高级运营和普通运营有哪些区别?(更新版,赞赞赞!)...
  10. wiley 期刊Stix字体问题
  11. Wavel Sequence HDU - 6078 (dp)
  12. 基于51单片机的智能大棚光温控制系统
  13. 道阻且长,行则将至:搞科研,我们是认真的——数据院四周年系列报道之科研篇...
  14. 淘宝直播API接口协议
  15. 求逆序对数目(合并排序)
  16. hive学习笔记-数据操作
  17. python取整数部分的几种方法
  18. 三维重建技术 各种方法简介
  19. HTTP应用:模拟灌水机器人
  20. ssh总断 (by quqi99)

热门文章

  1. iOS —— 使用 Xcode 在越狱 iOS 设备上进行开发调试
  2. 【面试题】大厂面试官:你做过什么有亮点的项目吗?
  3. Vue【第2章】:Vue目录结构分析,常用指令-数据绑定、属性绑定、渲染数据、循环渲染数据...
  4. 基础知识(给要找工作的)
  5. 第五周 学习记录2--瞬间变装
  6. 发明了计算机体层成像 ct 的科学家是,发明了计算机体层成像(CT)的科学家是...
  7. 【MySQL8降版本到MySQL5.7】
  8. Android12之NV21/NV12/YV12编码格式及GPU渲染NV21(三十三)
  9. [退役]纪念我的ACM
  10. 国二计算机学什么最好,全国计算机专业“最好”的4所大学,榜首实至名归,清华仅第二...