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

注意下面情形:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

假设节点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. awk及sum求和!

    awk 也是一个强大的编辑工具,它比 sed 的功能更加强大,可以在无交互的情况下实现相当复杂的文本操作. 1.awk 的语法 awk [选项] ' print $1' 文件名 选项 -F指定分隔符 ...

  2. Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate

    通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...

  3. 2.Git知识

    Git安装 Git在不同的操作系统上安装是不一样的,这里只讲解我们需要的,也就是在Windows下的安装,主要安装msysGit和TortoiseGit 安装msysGit,到https://code ...

  4. 中山Day4——普及

    生活开始日益平淡了呢...今天130分. 收获:归并排序求逆序对 背包问题(01.完全.多重)(外带滚动数组优化) T1:题目链接(才不会告诉你们下面的代码也是洛谷上弄来的) 思路:动态规划.首先,设 ...

  5. python读取文件用b模式读取

    f = open('aaa','rb')    返回的是字节 字符串编码 python中所有的字符串编码为Unicode,如果从一个文件读取字符串,那么该字符串的编码就是该文件的编码. f.tell( ...

  6. GPU运行Tensorflow的几点建议

    1.在运行之前先查看GPU的使用情况: 指令:nvidia-smi 备注:查看GPU此时的使用情况 或者 指令:watch nvidia-smi 备注:实时返回GPU使用情况 2.指定GPU训练: 方 ...

  7. java的浅拷贝和深拷贝(待解决)

    1.什么是浅拷贝,什么是深拷贝? 2.storm的并行度问题,需要使用全局变量static ConcorrentHashMap,因为加了static,所有的线程只能拷贝该全局变量的一个唯一的副本,进行 ...

  8. English-Phonics

    English-Phonics 1. 音节 1.1 字组 1.2 音节概述及分类 1.3 音节的划分 2. 元音字组的自然发音 2.1 元音字母 2.2 元音字母的长音 2.3 元音字母+r 2.4 ...

  9. 车林通购车之家--购车计算器模块js实现

    //jsq-nav.twig <ul class="switch-nav db-tags bgfff clearfix"> <li id="qk&quo ...

  10. Day10:关于桃子的和关于游戏新的设想(顺手做个记录孩子吃喝拉撒的工具)

    公历2015年6月3日~ 北京时间晚上8:42~ 在美中宜和~ 一个叫桃子的小美女出生了! 没错!小桃子终于出生了!真心不容易啊! 6月3日 03:00 AM 老婆推我,叫我起来,她说她肚子疼,还想上 ...