有一个情形我突然之间想明白了。

注意下面情形:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

假设节点A与节点B已经 正常的建立了连接,并且进行了通讯。

假设 节点B收到了 节点A 的 "建立连接"命令

节点B上的连接定时器启动,假设定时为10秒, 同时 节点B置位他的已连接标志

LinkedHard_Flag=1 ; 同时,节点B给节点A上传正常的响应帧, 告知节点A ,节点A与节点B 已经握手成功。

 

在接下来的10秒内,节点A可以向节点B发送 写数据命令的数据帧,节点B正常的接收的节点A的命令帧以后,就返回给节点A响应帧。

 

注意两点:(1)在接下来的10秒内,节点B若收到了节点A的命令帧以后,又会将自己(节点B)的定时器的初值重新装载,即重新开始10秒计时。

(2)节点B处于连接中状态(即LinkedHard_Flag=1),在这个前提下,节点B才能接收 写数据 或者 读数据,或者 删除连接的命令帧。

 

下面就是问题的表现形式了:

LinkedHard_Flag=1标志 对于节点B来讲,仅仅表示了他和网络上的某一节点正在连接,但是具体和哪个网络节点连接是不清楚的,(我目前写的软件,是区分不了B和网络上哪个节点连接的。如果在软件中要体现连接关系,软件会变复杂)。

假设某一时刻,在该时刻B节点处于连接中状态(LinkedHard_Flag=1 ),假设此时C节点 要发送写数据命令帧,给B节点,B节点知道自己在连接状态,固可以接受来自C节点的命令,(目前我软件中是可以接受来自C节点发送的写数据 或者 读数据命令的,我没有区分,这个现象也在试验中验证了,但此时 我如果规定让节点C先发送连接命令,则我软件是可以简单处理的,并告知C节点不能正常连接),

所以:如果节点B处于和节点A的连接中的时候, 节点C突然不按照规则的发送了一个连续 写 或者 连续 读命令帧, (我目前的软件 B可以接收C) , 那么 我现在该怎么办呢。

 

实际上: 你还是没有理解这个具体的过程,

硬规定:主机在和网络上某一节点通讯的时候,必须先向从机发送建立连接, 然后从机空闲的情况下,接收到主机的命令,并发送了应答帧。 主机在接收到应答帧以后, 然后置位自己的状态,连接 成功, 主机在这个连接成功的前提下, 才会发送后面的命令帧。。

 

主机在不建立连接的情况下,命令帧根本就发不出去。

 

综上,以前的困惑迎刃而解。 你也就理解了握手帧的意义。 这样的规定也使软件的设计简化。

 

把上面的东西 最后用图画表示。

 

 

 

该部门没有视频与程序

Ican协议建立连接我的感悟的更多相关文章

  1. HTTP协议建立连接、通讯与关闭连接全过程

    为解决服务器TimeWait多的问题,了解了一下TCP/IP协议的连接过程.以访问一静态页面为例,从建立连接到访问拿到数据,然后关闭的整个过程.使用EtherPeek截图如下:   图首为一次交互过程 ...

  2. 计算机网络:TCP协议建立连接的过程为什么是三次握手而不是两次?【对于网上的两种说法我的思考】

    网上关于这个问题吵得很凶,但是仔细看过之后我更偏向认为两种说的是一样的. 首先我们来看看 TCP 协议的三次握手过程 如上图所示: 解释一下里面的英文: 里面起到作用的一些标志位就是TCP报文首部里的 ...

  3. 为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?

    看到了一道面试题:"为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?为什么不能用两次握手进行连接?",想想最近也到金三银四了,所以就查阅了相关资料,整理出来了这篇文章 ...

  4. TCP建立连接的三次握手过程

    TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A运行的是TCP客户程序,B运行的是TCP服务器程序.最初两端的TCP进 ...

  5. TCP 建立连接:三次握手

    转自:http://www.cnblogs.com/winner-0715/p/5032661.html 感谢! TCP 建立连接过程 TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是T ...

  6. 详解TCP建立连接全过程

    TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A是TCP客户端,B是服务端.最初两端的TCP进程都处于CLOSED状态 ...

  7. Oracle建立连接的过程分析

    Oracle建立连接的过程 如果我们想登陆数据库并在数据库中真正做事情,就必须先建立连接,首先我会介绍如何建立连接,再介绍建立连接的两种方式的原理,以及建立连接的过程中在客户端和服务端都做了些什么. ...

  8. TCP/IP协议的建立连接与关闭连接过程

    一.建立连接(三次握手) 第一次握手:建立连接时,客户端发送SYN(seq=x)包到服务器,并进入SYN_SENT状态,等待服务器的确认.SYN:同步序列编号(Synchronize Sequence ...

  9. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...

随机推荐

  1. 第3节 Scala中的模式匹配:1 - 5

    7.    模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配. 7.1 ...

  2. 2020牛客寒假算法基础集训营4 J 二维跑步

    https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43035417 假设有i步选择不动,就有n-i步移动 假设其中又有a ...

  3. java中读取文本文件的时候@Test方法中没有中文乱码,但是@Controller中却有中文乱码

    今天遇到了一个非常牛逼的BUG,在@Test标注的测试类中没有中文乱码,但是访问@Controller标注的接口却报中文乱码,找了一系列资料以及各种尝试之后,发现是因为eclipse编辑工具字符编码的 ...

  4. 46 求1+2+3+...+n 静态成员函数和静态变量

    题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 思路: 1)使用构造函数的方法,需要使用sta ...

  5. 5款微信小程序开发工具使用报告,微信官方开发工具还有待提升

    微信小程序已经内测有一段时间了,笔者本着好奇加学习的心态写了几个小demo,虽然在MINA框架上并没有遇到太多的坑,但官方开发工具实在不敢恭维. api提示不全,要一个个查api啊,写代码超级慢啊 很 ...

  6. Solr与tomcat搭建(搭建好)

    https://pan.baidu.com/s/1kXagNYJ  密码:hgxd

  7. openstack的一台Nova主机上的虚拟机网络的配置

    1.一台虚拟机器的网络配置,通过openstack/nova计算节点服务生成的虚拟机配置文件 <interface type='bridge'> <mac address='fa:1 ...

  8. 初学JQuery

    JQuery是对JavaScript的封装,简化了JS代码,是主流框架的基础(VUE,EasyUI,Bootstrap) 它是2006年推出的 JQuery的优势:体积小,压缩后只有100KB左右强大 ...

  9. [c#]如何访问 JArray 的元素

    JArray 格式文件. public void TestJson() { var jsonString = @"{""trends"": [ { & ...

  10. 「SP2713」GSS4 - Can you answer these queries IV

    传送门 Luogu 解题思路 区间开方以及区间求和. 考虑用线段树来做. 开方操作看似没有任何结合律可言,但这题有另外一个性质: 一个数的初始值不超过 \(10^{18}\) ,而这个数被开方6次左右 ...