參考书籍:《计算机网络第5版》

TCP是面向连接的协议,採用C/S模型建立连接,由client主动发起连接请求,server端允许请求的模式建立连接,通常称为三次握手建立TCP连接。

准备条件:B的server端先创建传输控制块TCB。准备接受client进程的连接请求,此时server进程处于LISTEN(监听)状态。

SYN(synchronous):同步的

1、A的client进程首先创建传输控制块TCB,然后向server端发出连接请求报文段(SYN=1,seq=x)。

此时client进入SYN-SENT(同步已发送)状态。

2、server端收到client的连接请求报文段后,如允许连接,则向client发送确认(SYN=1,ACK=1,seq=y,ack=x+1)。此时服务端进入SYN-RCVD(同步接收)状态。

3、client进程收到server端的确认后。还要向server端给出确认(ACK=1,seq=x+1,ack=y+1)。

A进入ESTABLISHED(已建立连接)状态。

当B收到确认后,server端进程也进入ESTABLISHED状态。

至此。TCP连接已经全然建立。

相同关于TCP连接释放的过程也存在四次握手经过,简述例如以下。

初始状态:client与server端均处于ESTABLISHED状态。

1、client进程向server端发出连接释放报文段(FIN=1,seq=u)。并停止发送数据。主动关闭TCP连接。

此时进入FIN-WAIT-1(终止等待1)状态。等待server端的确认

2、server端收到client的连接释放报文段后。发出确认(ACK=1,seq=v,ack=u+1)。然后server端进入CLOSE-WAIT(关闭等待)状态。A收到来自B的确认后。进入FIN-WAIT-2(终止等待2)状态。此时TCP连接处于半关闭(half-close)状态。即A已经不能再发数据给B了。但B依旧能够发数据给A。

3、若B没有要向A发送的数据,此时server端向client发出连接释放报文段(FIN=1,seq=w,ack=u+1)。此时server端进入LAST-ACK(最后确认)状态。等待A的确认。

4、client收到server端的连接释放报文段后,发出确认(ACK=1。seq=u+1。ack=w+1)。此时client进入TIME-WAIT(时间等待)状态。server端收到确认后,随即关闭连接(CLOSED)。client经过2MSL后关闭TCP连接。

至此,整个TCP连接释放。

TCP从连接到释放过程全解的更多相关文章

  1. TCP的连接和释放过程

    TCP的连接和释放过程 1.三次握手的过程 1)主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x.(其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接 ...

  2. TCP建立连接和释放连接过程

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP建立连接需要三次握手,释放连接需要四次握手. 1.TCP整 ...

  3. TCP建立连接与释放连接过程中的几个问题

    TCP为何采用三次握手来建立连接,若采用两次握手可以吗,请说明理由? 不可以.采用三次握手是为了防止失效的连接请求报文段突然又传送到服务器,从而发生错误.当客户端发出的连接请求报文段由于某些原因没有及 ...

  4. TCP建立连接和释放的过程,及TCP状态变迁图

    一.TCP报文格式 下面是TCP报文格式图: 重要字段介绍: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占 ...

  5. TCP建立连接与释放连接

    1.建立连接:(三次握手) (1)客户端发送一个SYN包给服务器,然后等待应答. (2)服务器端回应给客户端一个ACK=1.SYN=1的TCP数据段. (3)客户必须再次回应服务器端一个ACK确认数据 ...

  6. TCP/IP协议的数据传输过程详解——IP与以太网的包收发操作

    MTU:一个网络包的最大长度,以太网中一般是1500字节:(含有头部长度,包括IP头部,TCP头部,不包括MAC头部) MSS:除去头部后,一个网络包所能容纳的TCP的数据的最大长度 下图为TCP/I ...

  7. 专家揭秘:STM32启动过程全解

    电子发烧友网核心提示:本文主要阐述了STM32启动过程全面解析,包括启动过程的介绍.启动代码的陈列以及深入解析. 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方 ...

  8. TCP传输连接建立与释放详解

    一直以来有许多读者朋友对TCP的传输连接建立和释放过程不是很理解,而这又是几乎网络认证中必考的知识点,包括软考.CCNA\CCNP.H3CNA\H3CNE等,为此再把笔者年度巨作,广受好评的——< ...

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

    TCP建立连接三次握手和释放连接四次握手     [转载]http://blog.csdn.net/guyuealian/article/details/52535294   在谈及TCP建立连接和释 ...

随机推荐

  1. java线程学习2

    sleep  变为阻塞态  但不释放锁  休眠指定毫秒时间 yield  变为就绪态  可能立即被执行  也可能不立即被执行 join   插队  暂停当前执行的线程  让调用join的线程先执行 线 ...

  2. caffe blob理解

    blob数据结构是caffe中基本的数据存储单元,它主要存储的数据是网络中的中间数据变量,比如各层的输入和输出:代价函数关于网络各层参数的梯度. blob中除了存储数据外,还有一些标记数据的参数,以下 ...

  3. listener.log文件过大导致oracle假死

    /home/u01/oracle/product/11gr2/db_1/log/diag/tnslsnr/VM_179_95_centos/listener/trace/listener.log li ...

  4. JVM优化(上)

    02.我们为什么要对jvm做优化: 1.标准参数:-help-version 2. -X参数(非标) -Xint-Xcomp -Xint : interpreted-Xcomp: complied   ...

  5. thinkphp5入口文件对应模块绑定

    在配置文件config.php中找到或者添加 // 入口自动绑定模块 'auto_bind_module' => true, 修改其属性为true

  6. 只允许特定IP访问本网站的前端写法

    在开发的过程中,有时会遇到只允许特定的几个IP访问.今天来记录一下前端的写法. 首先,引入 <script src="http://pv.sohu.com/cityjson?ie=ut ...

  7. 初识 Bootstrap

    Bootstrap 概述 Bootstrap 是一个前端框架,使用它可以快速开发响应式页面,还能专门针对 PC 端或移动端快速开发,大大提高了开发效率. Bootstrap 是最受欢迎的 HTML.C ...

  8. Spider-Python爬虫之XPath 教程

    原文链接:https://www.runoob.com/xpath/xpath-syntax.html XPath 术语 XPath 节点 七种类型:在 XPath 中,有七种类型的节点:元素.属性. ...

  9. sscanf,sprintf

    sprintf函数 sprintf函数原型为 int sprintf(char str, const char format, ...).作用是格式化字符串,具体功能如下所示: 将数字变量转换为字符串 ...

  10. 【XML】-- C#读取XML中元素和属性的值

    Xml是扩展标记语言的简写,是一种开发的文本格式. 啰嗦几句儿:老师布置的一个小作业却让我的脑细胞死了一堆,难的不是代码,是n多嵌套的if.foreach,做完这个,我使劲儿想:我一女孩,没有更多女孩 ...