一、TCP/IP四层架构

分为四层,从上倒下为:

第一层:应用层,主要有负责web浏览器的HTTP协议, 文件传输的FTP协议,负责电子邮件的SMTP协议,负责域名系统的DNS等。

第二层:传输层,主要是有可靠传输的TCP协议,特别高效的UDP协议。主要负责传输应用层的数据包。

第三层:网络层,主要是IP协议。主要负责寻址(找到目标设备的位置)

第四层:数据链路层,主要是负责转换数字信号和物理二进制信号。

 

二、TCP协议

2.1 TCP 协议是什么

是一种面向连接的、可靠的、基于字节流的 传输层 通信协议

 

2.2 TCP 最主要的特点

  • TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接
  • 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点
  • TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达
  • TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据
  • 面向字节流。TCP 中的“流”指的是流入到进程或从进程流出的字节序列
  • 为上层应用层提供服务,不关心具体传输的内容是什么,也不知道是二进制流,还是ascii字符(不关心编码)

 

三、IBC协议

3.1 IBC 协议是什么

IBC是 interblockchain communication 的缩写,表示 区块链跨链通信, IBC 协议是 类似于 TCP 协议的 传输层 通信协议,主要包括以下部分:Client,Connection,Channel 和 port,其中:

  1. Client 是 用来指导编写同构或异构链的 轻客户端产生的。类似于 L2 routing 或 TLS。
  2. Conection和 Channel 一起组成了二阶段的握手连接,
    1. 相同点: 都需要经过握手才能建立连接,
    2. 异同点:channel 可以关闭,但 connection 不可以关闭
  3. port的语义就是端口,但这里面的端口是用的字符串,指向某个模块

 

四、TCP与IBC的对比

IBC概念 TCP/IP 概念 差异
IBC TCP 更多内容请参考 IBC 架构文章
Port(eg. “bank”) Port(eg. “80”) IBC用字符串表示端口号
Module(eg. “bank”) Application(eg. nginx) 应用相关
Client - 不直接类比,有点像L2路由又有点像TLS
Connection - 不直接类比,折叠成TCP中的连接
Channel Connection 一个Prot可以打开任意数量的Channel

注意

  1. L2 路由:指的是二层交换机,二层交换机工作于OIS模型的第2层(数据链路层),故而称为二层交换机。可以识别数据帧中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中
  2. TLS:传输层安全性协议,用于在两个通信应用程序之间提供保密性和数据完整性。

 

4.1 握手(建立连接)

4.1.1 TCP 握手

tcp 握手为三个阶段,称为:三次握手

image-20230815150634901
 

4.1.2 IBC 握手

IBC 协议的握手,为两阶段握手

第一阶段为 connection 握手,握手时序图如下:

image-20230815150657719

第二阶段为 channel 握手, 握手时序图如下:

image-20230815150720236
 

4.2 挥手(断开连接)

4.2.1 TCP 挥手

tcp的断开连接分为四个阶段,称为:四次挥手

image-20230815150746247
 

4.2.2 IBC 挥手

IBC 的挥手和tcp不太一样,IBC 的挥手只需要 channel断开,而且只需要两次

image-20230815150823772

 

4.3 数据报文

4.3.1 TCP 报文

image-20230815150852239
 

4.3.2 IBC 报文

image-20230815150930855