计算机网络协议分析 第14课 SCTP
第8章 流控制传输协议SCTP
SCTP的上层应用
H.248:媒体网关控制
H.323:IP电话
IUA:在IP上的ISDN
8.1 SCTP的特点
流:指需要按顺序递交到高层协议的消息序列
多宿主
多重流
当TCP流中某个报文段丢失后,位于其后的所有报文段都只能等待丢失部分重传之后才可提交给上层。
每个流都是独立的,有各自的编号
阻塞的流不会影响同一关联中的其他流,可以并行传输
初始化保护
8.2 SCTP分组格式
SCTP分组与TCP报文段的区别
控制信息:
- TCP首部中的六个标志位
- SCTP控制快
数据信息:
- TCP报文段中的数据是一个实体
- 一个SCTP分组可携带多个数据块,每个数据块可属于不同的流
- TCP首部变长,SCTP首部固定12字节(没有选项)
- TCP使用四元组表识一个TCP连接
- SCTP使用两个验证标志标识一个关联,两个方向验证标志不同
- 同一个关联同一个方向上传输的所有SCTP分组,其验证标识是相同的
- TCP用序号标识首字节;SCTP用TSN、SI和SSN标识数据块
TSN、SI和SSN
- 传输序号TSN:(0~2^32-1)TCP用序号对字节编号,SCTP用TSN对数据块编号
- 流标识号SI:(0~2^16-1)TCP中每个连接只有一个流,SCTP中每个关联有多个流,用SI标识一个流
- 流序号SSN:(0~2^16-1)SCTP用SSN标识数据块在相应流中的位置
- SCTP中每个数据块必须携带TSN、SI和SSN
分组通用格式
在一个SCTP分组中,控制块位于数据块之前
INIT块
在四握手的第一个分组
- 初始标志:定义对方所发送分组的“验证标志”
- 窗口大小:即rwnd
- 输出流:关联的发起者在输出方向上建议的流个数
- 最大输入流:关联的发起者在输入方向上支持的最大流个数
- 初始TSN:相当于TCP的SYN报文段中的初始序号
- 携带INIT块的分组不能再携带其他块
INIT ACK块
初始标志:定义对方所发送分组的“验证标志”
Cookie:服务器用自己的私钥生成
携带INIT ACK块的分组不能再携带其他块
COOKIE ECHO/ACK块
携带COOKIE ECHO/ACK块的分组可携带其他块
建立关联
两个验证标志(每个方向一个)标记一个关联
DATA块
- U=1时不使用SSN:不按序,类似TCP中的URG和紧急指针
- B=1,开始位,E=1,结束位
- 长度:一个数据块至少携带1字节数据
- 协议标识符:定义数据的类型
SACK块
累积TSN确认:最后一个按序收到的数据块
数据传输
SHUTDOWN
用于关闭一个关联
关闭关联
双方都可以关闭关联
不允许“半关闭”
HEARTBEAT/ACK块
ERROR/ABORT块
当收到的分组有差错时发送ERROR块
异常终止一个关联时发送ABORT块
习题
上一课:第13课 TCP第二部分
下一课:第15课 FTP