您好、欢迎来到现金彩票网!
当前位置:ds视讯 > 服务原语 >

TCP连接建立和释放过程中状态机的变化

发布时间:2019-07-04 17:56 来源:未知 编辑:admin

  TCP是面向连接的协议,TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。

  TCP连接采用的是客户服务器方式。主动发起连接建立请求的应用进程叫客户,而被动等待连接建立的应用进程叫服务器。

  如下图所示TCP连接建立的过程。假定A主机运行的是TCP客户程序,而B主机运行的是TCP服务器程序。最初两端都处于CLOSED(关闭)状态。A主动打开连接,B被动打开连接。

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

  A的TCP客户进程也是先创建传输控制块TCB,然后向B发送连接请求报文,这是首部中的同步位SYN=1,同时选择一个厨师序号seq = x。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但要消耗掉一个序号,这时,TCP客户进程进入SYN_SENT(同步已发送)状态。

  B收到连接请求报文段后,如同意建立连接,则向A发送确认。在确认报文中应把SYN位和ACK位都置1,确认号是ack = x+1,同时也为自己选择一个厨师序号seq = y.这个报文段也不能携带数据,但同样要消耗掉一个序号。这时,TCP服务器进程进入SYN_RCVD(同步收到)状态

  TCP客户进程收到B的确认后,还要向B给出确认。确认报文段的ACK置1,确认号ack = y+1,而自己的序号seq = x+1。TCP的标准规定,ACK的报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq = x+1。这时TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。

  A发送确认主要是为了防止已经失效的连接请求报文段突然又传送到了B,因而产生错误。

  数据传输结束后,通信的双方都可以释放连接。现在A和B都处于ESTABLISHED状态。

  A的应用进程先向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。A吧连接释放报文段首部的终止控制位FIN置1,其序号seq = u,它等于前面已传送过的数据的最后一个字节的序号加1 。这时A进入FIN_WAIT_1(终止等待1)状态,等待B的确认。TCP规定,FIN报文段即使不懈怠数据,也要消耗点一个序号。

  B收到连接释放报文后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于B前面已经传送过的最后一个字节的序号+1.这时,B进入CLOSE_WAIT(关闭等待)状态。

  TCP服务器进程此时应该通知高层应用进程,一二从A到B这个方向的连接已经关闭,这时的TCP进程属于半关闭(half_close)状态,即A已经不会像B发送数据了,但B要向A发送数据,A还得接收。

  A收到来自B的确认后,就进入了FIN_WAIT_2(终止等待2),等待B发出的连接释放报文。如果B没有数据向A发送,其应用进程就通知TCP释放链接。这时B发出的连接释放报文段FIN=1.现假定B的序号是w(半关闭状态B向A发送了数据)。B还必须重复上次已发送过的确认号ack=u+1。这时B就进入了LASK_ACK(最后确认)状态,等待A的确认。

  A在收到B的释放链接报文段后,必须对此发出确认。在确认阿伯文段中吧ACK置1,确认号ack = w+1,而自己的序号是seq = u+1(根据TCP标准,前面发送过的FIN要消耗一个序号)。然后进入到TIME_WAIT(时间等待)状态。但是,现在TCP连接还没有释放,必须经过时间等待计时器(TIME_WAIT timer)设置的时间2MSL后,A才能进入到CLOSED状态。

  为了更清晰的看出TCP连接的各种状态之间的关系,如下图给出了TCP的有限状态机。

  tcp状态:LISTEN:侦听来自远方的TCP端口的连接请求SYN-SENT:再发送连接请求后等待匹配的连接请求SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认ESTABL...博文来自:wangzhaotongalex的专栏

  1.前言2.TCP状态机3.TCP连接的建立4.同时打开连接请求5.TCP连接释放6.同时关闭连接7.TCP相关疑问1.前言TCP是面向连接的,可靠的字节流协议。因此,在传输数据之前通信双方必须建...博文来自:oyhy_的博客

  TCP建立连接三次握手和释放连接四次握手  【尊重原创,转载请注明出处】在谈及TC...博文来自:pan_jinquan的博客

  一、TCP连接过程1、TCP连接状态图TCP的三次连接中,客户端是主动链接,服务器是被动连接,整个过程有三次数据报文段的传送,所以TCP建立过程又称为三次握手。服务器进程先创建传输控制块TCB,准备接...博文来自:Sunnylunch-blog

  TCP---传输控制协议报头格式:(1)源端口和目的端口:与UDP类似,TCP的分用是通过端口实现的。(2)序号:TCP是面向字节流的,在TCP连接中传送的字节流的每一个字节都是有顺序的,整个要传送的...博文来自:YANG

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

  10.3.5TCP连接的状态转移  从表10-6中可以看出,TCPSocket服务原语只有8个,比OSI/RM中定义的传输层服务原语还要少,但是在这8种TCPSocket服务原语中,有的原语又可以有不...博文来自:王达专栏

  TCP的运输连接管理本片文章总结了TCP连接的建立和释放过程,过程说明中只说明了相应过程的做了什么,具体的报文段字段可以在图片中查看TCP的连接建立(三报文握手)前提假设:A为客户端,B为服务端连接建...博文来自:的博客

  1.TCP状态转换图(TCP状态转换图)上图截取自UNIX网络编程卷1TCP的11种状态:CLOSED:起始点,在连接关闭或超时的时候变成此状态LISTEN:监听来自网络节点上其他主机的TCP端口连接...博文来自:tiankong_的博客

  今天又看了一遍TCP的连接建立和释放,因为面试的时候被问住了,1.三次握手,下图是使用wireshark抓包工具抓的数据,ARP从ip到MAC地址的转换,首先是ARP广播,然后机器报给路由主机,首先是...博文来自:企鹅菜鸟的成长过程

  一、TCP连接的建立(三次握手)二、TCP连接的释放(四次握手)A必须等待2ML的时间:1.为了保证A发送的最后一个ACK报文段能够到达B。2.防止“已失效的连接请求报文段”出现在本连接中。A在发送完...博文来自:pinhole的博客

  参考书籍:《计算机网络第5版》TCP是面向连接的协议,采用C/S模型建立连接,由客户端主动发起连接请求,服务器端允许请求的模式建立连接,通常称为三次握手建立TCP连接。准备条件:B的服务器端先创建传输...博文来自:fzzjoy的专栏

  TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项。因此TCP报文段的最小长度为20个字节。首部固定部分的各字段的意义如下:1、源端口和目的端口:加上IP首部的源IP地址和目...博文来自:兰亭风雨的专栏

  在可靠的TCP网络通信中,客户端和服务器端通信建立连接的过程可简单表述为三次握手(建立连接的阶段)和四次挥手(释放连接阶段),下图是这两个阶段的一个完整的表述:其状态图可以表示为,下面我们从建立...博文来自:caoyan_12727的博客

  TCP状态图,展示的是TCP从连接建立到连接关闭的整个生命周期,TCP的状态转换以及处理流程。TCP面向的是端口,Linux里面可以通过netstat-a命令查看连接状态。笔者遇到Tomcat生成大量...博文来自:永无止境,上下求索

  首先介绍Wireshark抓包工具,它长这样:下面我们要设置过滤规则:按如下设置,主要设置:1、需要监控的网卡;2、过滤规则(图示是“HTTPTCPport(80)”,即只监控TCP连接):如果你最上...博文来自:披萨大叔的博客

  1.前言  关于TCP连接过程与状态,其实网上已经有非常多的好文章了,为什么我还要抽时间写一遍,一是对知识的整理,二是近期在换工作,人生第一次跳槽,觉得应该找个博客网站当港湾,养成知识整理的好习惯,因...博文来自:vip若尘的专栏

  Wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。通过Wireshark的抓包数据可以获取那些信息呢?Frame:物理层的数据帧概况Ether...博文来自:lemonTree的博客

  TCP/IP协议在世界上,各种各样的电脑运行着各自不同的操作系统,就像世界各地的人们说着不同的语言,他们不能直接沟通交流,所以需要制定一系列的规则来帮助他们互相理解交流,然后才能将世界连接起来。同样,...博文来自:立志要成为海贼王的男人

  TCP概述TCP是运输层的传输控制协议。TCP提供了一种面向连接的(connection-oriented)、可靠的字节流服务面向连接是指:使用TCP的两个应用程序必须在它们可交换数据之前,通过相互联...博文来自:WangZX

  前置:连接的建立采用三次握手建立连接一方(server)被动地等待一个进来的连接请求...博文来自:加载中...

  本文通过wrieshark抓取TCP包,来对TCP进行细致的解析,从实践中了解TCP各个过程。首先介绍下TCP的6种标志位,wriehark会根据这些标志位,在抓取的包中进行标记,方便我们查看:SYN...博文来自:youge_chen的博客

  一、三次握手与四次挥手建立TCP连接需要三次握手,断开连接则需要四次挥手,整个过程如下:(一)连接建立阶段:(1)客户端发送一个SYN包给服务器,然后等待应答。(2)服务器端回应给客户端一个ACK=1...博文来自:ancientmoondjay的博客

  首先,是需要明白一些字段的含义,这样三次握手、四次握手的流程图就立马可以很轻松地理解,并迅速手绘了。(至于这两个流程图,网上铺天盖地都是,这里就不贴出来了。)SYN:该字段被设置为1(即true),表...博文来自:u013914309的博客

  TCP协议的特点:1)面向连接2)可靠传输:数据保证能发生过去,而且数据准确3)流式服务UDP协议的特点:1)无连接2)不可靠3)数据报服务IP协议的特点:1)无状态2)不可靠3)无连接...博文来自:TING_1119的博客

  TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认序列号分别为简化一下,其实有两个序列,客户端发送X,服务器发送Y。...博文来自:ustcyy91的博客

  计算机网络自顶向下方法的第三部分,传输层的TCP协议,建立连接传输数据以及拆除连接的过程总结...博文来自:lqadam的博客

  如下图所示,以TCP流客户端192.168.1.110:52582与服务端23.67.181.145::80为例,说明一下在TCP连接建立和断开时的序列号使用情况。首先在连接建立时,先看一下客户端的...博文来自:redwingz的博客

  客户端和服务器的TCP连接的建立通过3步TCP发送和接收完成的。当建立了TCP连接后,客户端和服务器就可以通过TCP传输数据了。当数据传输完成后,如果要关闭TCP连接,那么要通过4步TCP发送和接收完...博文来自:yeguiyou002的专栏

  一、首先附上下图:tcp报文段的首部格式做点必要解释1,序号是随机产生的,不一定从1开始,另外每一个字节都有编号,而报文段的序号就是第一个字节的编号,数据到达目的地后,会被按照序号排序重组,保障数据的...博文来自:weixin_39933549的博客

  建立一个连接需要三次握手,而终止一个连接需要四次挥手。这是由TCP的半关闭造成的。既然一个TCP连接是全双工(数据能在两个方向上同时传递),因此每个方向必须单独的进行关闭。现在我们介绍TCP的四次挥手...博文来自:Jacoob1024的博客

  TCP的三次握手TCP的三次握手大家都不陌生,下面用wireshark这个工具抓包,进一步的说明三次握手的细节。1.由客户端发起tcp连接的请求,此时客户端发送一条报文,其中包含SYN标志位,将SYN...博文来自:的博客

  运维工作中,和TCP打交道的时间还是比较多,抓抓包,看看连接,排查一下服务器性能等。以前在学校学习的时候,从课本中学到TCP,但是没有真实的感受,而以前准备面试的时候,大多数时候就是死记硬背的记一下三...博文来自:achenwenping的专栏

  写博客前先碎碎念,TCP报文三次握手在大二的时候学过,大三的时候《计算机网络》专业课又学了一遍,这次因为是专业课 学习,对整个计算机网络的理解更深刻了。正好我们做了关于用WireShark抓包...博文来自:DavidChen的博客

  listen函数与TCP连接建立过程的关系 TCP服务端程序创建过程:建立监听socket,通过bind绑定到服务地址和端口后,调用listen开始监听服务端口。这时在操作系统内核会建立SYN队列(未...博文来自:andywang201001的博客

  1.TCP状态机TCP协议太复杂了,连接的建立与终止在前面都已经有所介绍,所有的规则都可以用一张TCP状态变迁图来表示。图1TCP状态机这张图非常经典,网络上都可以找得到,但是这里我用彩色线条重新画了...博文来自:进击的小学生

  帐号相关流程注册范围n企业n政府n媒体n其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自:小雨同学的技术博客

  MATLAB编程题rn题目描述:从一个NxM的矩阵C中找出与1xM的矩阵P欧氏距离最小的某一行row,要求不能用循环!!!rn输入:矩阵C(NxM)、矩阵P(1xM)rn输出:rowrnrnrn解题思...博文来自:henryzhihua

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...博文来自:Websites

  由于CLion的工程都是基于CMake来构建的,因此导入第三方库就需要在CMake文件中进行配置。这里把利用CMake导入第三方库的过程记录下来。...博文来自:大迷毛的LALALAND

  卷积神经网络是深度学习的基础,但是学习CNN却不是那么简单,虽然网络上关于CNN的相关代码很多,比较经典的是tiny_cnn(C++)、DeepLearnToolbox(Matlab)等等,但通过C语...博文来自:tostq的专栏

  扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  一、定义状态(State)模式又称为状态对象模式(Pattern of Objects for State),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变时改变其行为,用于解决系统中...博文来自:小小本科生成长之路

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!nnDocker的三大核心概念:镜像、容器、仓库n镜像:类似虚拟机的镜像、用俗话说就是安装文件。n容器:类似一个轻量...博文来自:我走小路的博客

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  一、概述最近在springboot项目引入thymeleaf模板时,使用非严格标签时,运行会报错。默认thymeleaf模板对html5标签是严格检查的。二、在项目中加NekoHTML库在Maven中...博文来自:Luck_ZZ的博客

  本文介绍如何使用VS2015作为编译开发环境,调用OpenCV3.31和Qt5.9.1写图像处理的GUI。rn1.目录结构rn假设我们要创建一个名为VideoZoom的工程,那么首先按下图构建目录结构...博文来自:zhhp1001的博客

  ZouTaooo:解压缩有问题啊...写入的时候是空的 根本没有东西写进去

http://wendevick.net/fuwuyuanyu/643.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有