一、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,其中:
- Client 是 用来指导编写同构或异构链的 轻客户端产生的。类似于 L2 routing 或 TLS。
- Conection和 Channel 一起组成了二阶段的握手连接,
- 相同点: 都需要经过握手才能建立连接,
- 异同点:channel 可以关闭,但 connection 不可以关闭
- 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 |
注意:
- L2 路由:指的是二层交换机,二层交换机工作于OIS模型的第2层(数据链路层),故而称为二层交换机。可以识别数据帧中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中
- TLS:传输层安全性协议,用于在两个通信应用程序之间提供保密性和数据完整性。
4.1 握手(建立连接)
4.1.1 TCP 握手
tcp 握手为三个阶段,称为:三次握手
4.1.2 IBC 握手
IBC 协议的握手,为两阶段握手
第一阶段为 connection 握手,握手时序图如下:
第二阶段为 channel 握手, 握手时序图如下:
4.2 挥手(断开连接)
4.2.1 TCP 挥手
tcp的断开连接分为四个阶段,称为:四次挥手
4.2.2 IBC 挥手
IBC 的挥手和tcp不太一样,IBC 的挥手只需要 channel断开,而且只需要两次
4.3 数据报文
4.3.1 TCP 报文