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

注意下面情形:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

假设节点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. RESTFul Client入门实例

    client.html文件内容为: <!DOCTYPE html> <html> <head> <title>RESTFul Client test p ...

  2. SpringMvc 初步配置

    spring-aop.jarspring-bean.jarspring-context.jarspring-core.jarspring-web.jarspring-webmvc.jarcommons ...

  3. 谈谈spring mvc与struts的区别

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  4. ubuntu 中怎么安装 jdk 7

    Jdk1.7 安装包的下载地址是: http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u4-downloads-1591156. ...

  5. FLASK - 请求和响应

    请求都封装在request对象里面了 from flask import Flask from flask import request from flask import render_templa ...

  6. java编程,通过代理服务器访问外网的FTP

    有些时候我们的网络不能直接连接到外网, 需要使用http或是https或是socket代理来连接到外网, 这里是java使用代理连接到外网的一些方法, 希望对你的程序有用.方法一:使用系统属性来完成代 ...

  7. SVN commit,update用法

    https://blog.csdn.net/studyvcmfc/article/details/4528896

  8. C# FileStream 对象的Seek()方法-----转载

    原创 kevin617 发布于2010-12-08 11:22:00 阅读数 8630 收藏展开 FileStream 可以随机读写文件 使用 Seek 方法 Seek()  ----------有两 ...

  9. SciPy 基础功能

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  10. L2-012. 关于堆的判断(最小堆)

    将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y are siblings”:x和y ...