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

注意下面情形:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

假设节点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. webservice之实现天气预报

    前通过传智的视频自学了webservice的基本使用,也了解到webservice就是一种跨编程语言和跨操作系统平台的远程调用技术. 对于这些理论知识在这里也不再做过多的解释,本次主要就是记录与分享使 ...

  2. Using Watch Mode

    官方文档地址:https://webpack.js.org/guides/development/#using-watch-mode You can instruct webpack to " ...

  3. 「HNOI2010」弹飞绵羊

    「HNOI2010」弹飞绵羊 传送门 考虑分块. 每一个位置 \(i\) ,记 \(to[i]\) 表示从这个位置一直往右跳回落在哪个位置. 然后修改的时候直接暴改,查询也是暴跳,复杂度 \(O(n ...

  4. 4.使用Redis+Flask维护动态代理池

    1.为什么使用代理池 许多⽹网站有专⻔门的反爬⾍虫措施,可能遇到封IP等问题. 互联⽹网上公开了了⼤大量量免费代理理,利利⽤用好资源. 通过定时的检测维护同样可以得到多个可⽤用代理理. 2.代理池的要 ...

  5. FFmpeg笔记-基本使用

    FFmpeg是目前最牛逼的开源跨平台音视频处理工具. 准备知识 我不是音视频编解码出身的,对于这一块非常的不了解,导致在学习FFmpeg的时候云里雾里的,所以学习之前最好看些资料对音视频编解码有点认识 ...

  6. Python使用正则表达式(Regular Expression)超详细

    一.导入re库 python使用正则表达式要导入re库. import re在re库中.正则表达式通常被用来检索查找.替换那些符合某个模式(规则)的文本.ps:另外很多人在学习Python的过程中,往 ...

  7. 用C语言写一个Helloworld_实现第一步编译运行

    编写第一个hello world 创建helloworld.c // 程序头文件 #include <stdio.h> // 主入口函数 int main(int arc, char* a ...

  8. SparkSQL 疫情Demo练习

    在家闲着没事干, 写个简单的疫情数据处理Demo, 顺便回顾下SparkSQL. 模拟数据(以下数据皆为虚构, 如有雷同不胜荣幸) 市民信息(civic_info.csv) id_no,name,se ...

  9. 十六 Spring的JDBC模版入门,默认连接池

    Spring是EE开发一站式框架,有EE开发的每层的解决方案,Spring对持久层也提供了解决方案:ORM模块和JDBC的模版

  10. 「CF1C Ancient Berland Circus」

    CF第一场比赛的最后一题居然是计算几何. 这道题的考点也是比较多,所以来写一篇题解. 前置芝士 平面直角坐标系中两点距离公式:\(l=\sqrt{(X_1-X_2)^2+(Y_1-Y_2)^2}\) ...