### 一、概述
**CAT_TP协议**定义了在ETSI TS 102 223基础上,用于卡应用工具包(CAT)的传输协议第二阶段描述。
**主要功能:**
* 提供UICC与远程实体之间的可靠数据传输
* 全双工通信信道
* 可靠交付上层数据
* 检测并丢弃损坏和重复的PDU
* 按序交付SDU
* 分段和重组SDU
* 使用UDP、IP或其他网络实现端到端可靠通信
**协议架构:**
* 基于RDP版本2
* 运行在BIP(独立承载协议)之上
**不涉及内容:**
* API的具体实现
* CAT_TP之上的安全性
### 二、 协议层
**CAT_TP层**由两个实体组成:
1. **分段管理:**
* 负责将过长的SDU分割成多个PDU,并在接收端进行重组。
* 使用SEG位指示分段信息(1表示后续还有分段,0表示最后一个分段或未分段)
2. **传输管理:**
* 负责CAT_TP连接管理、可靠通信、流控制等。
### 三、连接管理
**1. 连接类型:**
* 面向连接协议,提供全双工通信信道
* 使用源端口、目标端口和网络标识符唯一标识连接
**2. 端口:**
* 16位标识符,用于标识CAT_TP上层进程
* 1-1023:保留端口,用于被动连接请求
* 1024-65535:可分配端口,用于主动连接请求
**3. 连接建立:**
* **主动模式:**
* CAT_TP客户端发送SYN PDU进入SYN-SENT状态,等待服务器响应(SYN-ACK PDU)。
* 客户端需要知道服务器端口,自身端口可指定或动态分配。
* **被动模式:**
* CAT_TP服务器进入LISTEN状态,监听连接请求。
* 服务器需指定自身端口,可选指定客户端端口。
**4. 连接状态:**
| 状态 | 描述 |
| ----------- | ------------------------------------------------------------ |
| CLOSED | 无连接存在 |
| LISTEN | 服务器等待连接请求 |
| SYN-SENT | 客户端发送SYN PDU,等待SYN-ACK PDU |
| SYN-RCVD | 服务器收到SYN PDU,发送SYN-ACK PDU,等待ACK PDU |
| OPEN | 连接建立,双方可进行全双工通信 |
| CLOSE-WAIT | 等待一段时间后关闭连接 |
**5. 连接关闭:**
* 发起方发送RST PDU进入CLOSE-WAIT状态,等待一段时间后关闭连接。
* 接收方收到RST PDU后进入CLOSE-WAIT状态,等待一段时间后关闭连接。
**6. 半开连接和连接失效检测:**
* 通过发送NUL PDU验证连接状态。
* 无活动连接定义为:没有未确认的PDU、没有待处理PDU、并且一段时间内没有流量。
**7. 版本号管理:**
* SYN/SYN-ACK PDU中包含版本号,用于协商双方支持的协议版本。
### 四、可靠通信
**机制:**
1. **序列号:**
* 每个数据PDU都有一个唯一的序列号。
* 初始序列号在连接建立时选择。
* SYN PDU始终使用初始序列号。
* 需要确认的PDU发送后序列号递增1。
2. **校验和:**
* 使用16位TCP校验和检测损坏的PDU。
* 不使用TCP伪头部。
3. **确认:**
* 使用累积确认和扩展确认。
* 累积确认用于确认所有序列号小于等于指定值的PDU。
* 扩展确认用于确认乱序接收的PDU。
4. **超时重传:**
* 为每个SYN、NUL和数据PDU设置重传定时器。
* 超时后重传PDU并重启定时器。
* 达到最大重传次数后关闭连接。
### 五、流控制和窗口管理
**机制:**
* 接收方在ACK PDU中通告当前接收窗口大小(Window Size)。
* 发送方根据接收窗口大小发送PDU。
* 窗口大小为0时停止发送数据。
* 接收方资源可用后,通过发送NUL PDU更新窗口大小。
### 六、PDU格式
**1. CAT_TP PDU头部:**
| 字段 | 描述 |
| --------------- | ------------------------ |
| 第一个字节 | 包含标志位和版本号 |
| 头部长度 | 头部长度(字节) |
| 源端口 | 16位 |
| 目标端口 | 16位 |
| 数据长度 | 数据长度(字节) |
| 序列号 | 16位 |
| 确认号 | 16位 |
| 窗口大小 | 16位 |
| 校验和 | 16位 |
| 可变头部区域 | 用于SYN和EACK PDU参数 |
| 保留字段 | 16位 |
**2. PDU类型:**
| PDU类型 | 描述 |
| ------- | ------------------------------ |
| SYN | 建立连接,同步序列号 |
| ACK | 确认接收 |
| EACK | 扩展确认,确认乱序接收 |
| RST | 重置连接 |
| NUL | 探测连接状态 |
**3. 头部标志位:**
| 标志位 | 描述 |
| ------ | ------------------------------ |
| SYN | 建立连接,同步序列号 |
| ACK | 确认接收 |
| EACK | 扩展确认 |
| RST | 重置连接 |
| NUL | 空PDU |
| SEG | 分段标志 |
### 七、 BIP实现
**1. 数据传输:**
* 一个CAT_TP PDU对应一个BIP SDU。
* 使用SEND DATA/RECEIVE DATA命令传输PDU。
**2. 定时器:**
* 需考虑定时器精度。
* 需设置确认和重传定时器。
### 八、 其他信息
**附录A** 提供了连接建立、PDU丢失、乱序接收、长延迟路径通信等场景示例。
**附录B** 定义了CAT_TP与上层应用的接口,包括OPEN、SEND、RECEIVE、CLOSE和STATUS等操作。
**附录C** 记录了协议版本变更历史。
### 九、 结论
该文档详细描述了CAT_TP协议的核心功能、连接管理、可靠通信机制、PDU格式以及在BIP上的实现方式,为UICC与远程实体之间可靠数据传输提供了规范。
## ETSI TS 102 127 V12.0.0 (2018-08) 定义部分笔记
### 1. 独立承载协议 (BIP)
**定义:**
BIP是一种机制,终端设备(TE)通过该机制为通用集成电路卡(UICC)提供对终端和网络支持的数据承载者的访问。
**作用:**
* 使UICC能够利用终端和网络支持的各种数据承载者进行通信,而无需依赖特定类型的物理连接。
### 2. CAT_TP客户端
**定义:**
在连接阶段发起与CAT_TP服务器建立CAT_TP链接的实体。
**位置:**
* 位于UICC或远程实体上。
### 3. CAT_TP实体
**定义:**
能够打开CAT_TP链接、交换CAT_TP协议数据单元(PDU)并关闭CAT_TP链接的实体。
### 4. CAT_TP链接
**定义:**
CAT_TP实体之间用于交换CAT_TP PDU的逻辑连接。
### 5. CAT_TP端口
**定义:**
16位标识符,用于标识CAT_TP上层进程。
### 6. CAT_TP服务器
**定义:**
在连接阶段接收来自CAT_TP客户端的CAT_TP链接建立请求的实体。
**位置:**
* 位于UICC或远程实体上。
### 7. CAT_TP服务数据单元 (SDU)
**定义:**
在OSI参考模型中,指在同级(N+1)层实体之间传输的信息单元,其身份在传输过程中保持不变,并且不被支持它的(N)层实体解释。
**说明:**
* 在CAT_TP协议中,(N)层即CAT_TP层。
### 8. 下层
**定义:**
在(N)层中,下层是指位于其下方的(N-1)层。
**说明:**
* 对于CAT_TP协议,下层可能是物理层。
### 9. 物理连接
**定义:**
由UICC和TE之间的BIP信道以及TE和远程实体之间的特定承载者链路组成。
### 10. 上层
**定义:**
在(N)层中,上层是指位于其上方的(N+1)层。
**说明:**
* 对于CAT_TP协议,上层可能是应用层。
**总结:**
这些定义描述了CAT_TP协议中涉及的关键实体、连接、端口以及与OSI模型的关系,为理解协议的工作原理和功能提供了基础。
## CAT_TP协议功能描述笔记
**CAT_TP协议**是一种传输协议,旨在为UICC(通用集成电路卡)与远程实体之间提供可靠的数据传输。
**主要参与者:**
* UICC
* TE(终端设备)
* 远程实体
**CAT_TP协议功能:**
1. **全双工通信通道:**
* CAT_TP在每个传输连接的两个端口之间提供全双工通信通道,允许双向同时传输数据。
2. **可靠数据传输:**
* CAT_TP可靠地交付所有上层数据。
* 如果发生任何传输故障,CAT_TP会向上层报告错误。
3. **PDU损坏和重复检测:**
* CAT_TP尝试检测并丢弃所有损坏和重复的PDU(协议数据单元),以确保数据的完整性和唯一性。
4. **按序交付SDU:**
* CAT_TP提供SDU(服务数据单元)的按序交付。
* 乱序交付SDU的功能有待进一步研究(FFS)。
5. **SDU分段和重组:**
* 在发送端,CAT_TP将大型SDU分割成较小的PDU进行传输。
* 在接收端,CAT_TP将接收到的分段PDU重新组装成原始的SDU。
**传输机制:**
* CAT_TP通过使用UDP、IP或其他网络,在UICC和远程实体之间实现端到端的可靠数据通信。
* 这意味着CAT_TP可以在不同的网络环境下运行,并利用底层协议提供的传输服务。
**总结:**
CAT_TP协议的主要目标是为UICC与远程实体之间的数据传输提供可靠性和完整性保障。它通过全双工通信、错误检测、按序交付和分段传输等机制,确保数据能够准确无误地从发送端传递到接收端,即使在不可靠的网络环境下也能保持数据传输的可靠性。