SCTP 被視為一�(gè)傳輸層協(xié)議,它的上層為SCTP 用戶�(yīng)�,下層作為分組網(wǎng)�(luò)。在SIGTRAN �(xié)議的�(yīng)用中,SCTP 上層用戶是SCN 信令的適配模塊(如M2UA、M3UA),下層是IP �(wǎng)�
1. 傳送地址
傳送地址� IP 地址、傳輸層�(xié)議類型和傳輸層端口號(hào)定義。由�SCTP 在IP 上傳 �,所以一�(gè)SCTP 傳送地址由一�(gè)IP 地址加一�(gè)SCTP 端口�(hào)決定。SCTP 端口 �(hào)就是SCTP 用來�(shí)別同一地址上的用戶,和TCP 端口�(hào)是一�(gè)概念。比如IP � 址10.105.28.92 和SCTP 端口�(hào)1024 �(biāo)�(shí)了一�(gè)傳送地址,�10.105.28.93 � 1024 則標(biāo)�(shí)了另外一�(gè)傳送地址,同��10.105.28.92 和端口號(hào)1023 也標(biāo)�(shí)了一 �(gè)不同的傳送地址�
2. 主機(jī)和端�(diǎn)
主機(jī)(HoST� 主機(jī)配有一�(gè)或多�(gè) IP 地址,是一�(gè)典型的物理實(shí)��
端點(diǎn)(SCTP Endpoint�
端點(diǎn)是SCTP 的基本邏輯概�,是�(shù)�(jù)�(bào)的邏輯發(fā)送者和接收�,是一�(gè)典型的邏 輯實(shí)��
一�(gè)傳送地址(IP 地址+SCTP 端口�(hào))標(biāo)�(shí)一�(gè)端點(diǎn)。一�(gè)端點(diǎn)可以由多�(gè) 傳送地址�(jìn)行定�,但�(duì)于同一�(gè)目的端點(diǎn)而言,這些傳送地址中的IP 地址可以� 置成多�(gè),但必須使用相同的SCTP 端口�
3. 偶聯(lián)和流
偶聯(lián)(AssociaTIon� 偶聯(lián)就是兩�(gè) SCTP 端點(diǎn)通過SCTP �(xié)議規(guī)定的4 步握手機(jī)制建立起來的�(jìn)行數(shù)�(jù) 傳遞的邏輯聯(lián)系或者通道� SCTP �(xié)議規(guī)定在任何�(shí)刻兩�(gè)端點(diǎn)之間能且僅能建立一�(gè)偶聯(lián)。由于偶�(lián)由兩�(gè) 端點(diǎn)的傳送地址來定義,所以通過�(shù)�(jù)配置本地IP 地址、本地SCTP 端口�(hào)、對(duì)� IP 地址、對(duì)端SCTP 端口�(hào)等四�(gè)參數(shù),可以標(biāo)�(shí)一�(gè)SCTP 偶聯(lián)。正�?yàn)�?�,在GTSOFTX3000 中,偶聯(lián)可以被看成是一條M2UA 鏈路或M3UA 鏈路�
流(Stream� 流是 SCTP �(xié)議的一�(gè)特色�(shù)�。SCTP 偶聯(lián)中的流用來指示需要按順序遞交到高 層協(xié)議的用戶消息的序�,在同一�(gè)流中的消息需要按照其順序�(jìn)行遞�。嚴(yán)格地 �,“流”就是一�(gè)SCTP 偶聯(lián)�,從一�(gè)端點(diǎn)到另一�(gè)端點(diǎn)的單向邏輯通道。一 �(gè)偶聯(lián)是由多�(gè)單向的流組成�。各�(gè)流之間相�(duì)�(dú)�,使用流ID �(jìn)行標(biāo)�(shí),每�(gè) 流可以單�(dú)�(fā)送數(shù)�(jù)而不受其他流的影��
4. 通路(Path)和通路(Primary Path�
通路(Path� 通路是一�(gè)端點(diǎn)� SCTP 分組�(fā)送到�(duì)端端�(diǎn)特定目的傳送地址的路�。如果分� �(fā)送到�(duì)端端�(diǎn)不同的目的傳送地址�(shí),不需要配置單�(dú)的通路�
通路(Primary Path� 通路是在默認(rèn)情況�,目的地址、源地址在SCTP 分組中發(fā)到對(duì)端端�(diǎn)的通路�
如果可以使用多�(gè)目的地地址作為到一�(gè)端點(diǎn)的目的地址,則這�(gè)SCTP 端點(diǎn)為多 歸屬。如果發(fā)出SCTP 分組的端�(diǎn)屬于多歸屬節(jié)�(diǎn)�(shí),如果定義了目的地址、源� 址,能夠更好控制響�(yīng)�(shù)�(jù)塊返回的通路和數(shù)�(jù)包被�(fā)送的接口� 一�(gè) SCTP 偶聯(lián)的兩�(gè)SCTP 端點(diǎn)都可以配置多�(gè)IP 地址,這樣一�(gè)偶聯(lián)的兩�(gè) 端點(diǎn)之間具有多條通路,這就是SCTP 偶聯(lián)的多地址�。SCTP 偶聯(lián)的多地址性是 SCTP 與TCP 的不��
一�(gè)偶聯(lián)可以包括多條通路,但只有一�(gè)通路。如�1所示,MGC(如 GTSOFTX3000)一�(gè)端點(diǎn)包括兩�(gè)傳送地址�10.11.23.14�2905 �10.11.23.15� 2905�,而SG 一�(gè)端點(diǎn)也包括兩�(gè)傳送地址�10.11.23.16�2904 �10.11.23.17� 2904��
�1 SCTP 雙歸�
此兩�(gè)端點(diǎn)決定了一�(gè)偶聯(lián),該偶聯(lián)包括4 條通路(Path0、Path1、Path2 和Path3�� 根據(jù)�(shù)�(jù)配置可以確定�4 條通路的選擇方�,如�2所�。圖中定義了4 條� �,而且通路為Path0� Path0:本端傳送地址1�10.11.23.14�2905)發(fā)送SCTP 分組到對(duì)端傳送地 址1�10.11.23.16�2904��
Path1:本端傳送地址1�10.11.23.14�2905)發(fā)送SCTP 分組到對(duì)端傳送地 址2�10.11.23.17�2904)�
Path2:本端傳送地址2�10.11.23.15�2905)發(fā)送SCTP 分組到對(duì)端傳送地 址1�10.11.23.16�2904��
Path3:本端傳送地址2�10.11.23.15�2905)發(fā)送SCTP 分組到對(duì)端傳送地 址2�10.11.23.17�2904��
端點(diǎn)�(fā)送的 SCTP 工作原理為:本端�(diǎn)傳送地址A �(fā)送的SCTP 包通過通路�(fā) 送到�(duì)端端�(diǎn)。當(dāng)通路出現(xiàn)故障�,SCTP 可以自動(dòng)切換到其他備用通路�� �(yōu)先切換對(duì)端端�(diǎn)的傳送地址,再次切換本端端�(diǎn)的傳送地址�
SCTP 定義了心跳消息(Heart Beat�。當(dāng)某條通路空閑�(shí),本端SCTP 用戶要求 SCTP 生成相應(yīng)的心跳消息并通過該通路�(fā)送到�(duì)端端�(diǎn),而對(duì)端端�(diǎn)必須立即�(fā) 回對(duì)�(yīng)的心跳確�(rèn)消息。這種�(jī)制被用來精確�(cè)量回路時(shí)延RTT(Round Trip Time�,而且可以隨時(shí)�(jiān)視偶�(lián)的可用情況和保持SCTP 偶聯(lián)的激活狀�(tài)�
�2 確定通路選擇方式的數(shù)�(jù)配置
5. TSN 和SSN
傳輸順序�(hào) TSN(Transmission Sequence Number� SCTP 使用TSN �(jī)制實(shí)�(xiàn)�(shù)�(jù)的確�(rèn)傳輸。一�(gè)偶聯(lián)的一端為本端�(fā)送的每�(gè)�(shù)�(jù) 塊順序分配一�(gè)基于初始TSN �32 位順序號(hào),以便對(duì)端收到時(shí)�(jìn)行確�(rèn)� TSN 是基于偶�(lián)�(jìn)行維�(hù)��
流順序號(hào) SSN(Stream Sequence Number�
SCTP 為本端在這�(gè)流中�(fā)送的每�(gè)�(shù)�(jù)塊順序分配一�(gè)16 位SSN,以便保證流 �(nèi)的順序傳�� 在偶�(lián)建立�(shí),所有流中的SSN 都是�0 開始。當(dāng)SSN 到達(dá)65535 �,則接下� 的SSN �0� TSN 和SSN 的分配是相互�(dú)立的�
6. 擁塞窗口CWND(Congestion Window�
SCTP 也是一�(gè)滑動(dòng)窗口�(xié)�,擁塞窗口是針對(duì)每�(gè)目的地址維護(hù)�,它�(huì)根據(jù)�(wǎng) �(luò)狀況調(diào)節(jié)。當(dāng)目的地址的發(fā)送未證實(shí)消息長度超過其CWND �(shí),端�(diǎn)將停止向� �(gè)地址�(fā)送數(shù)�(jù)�
7. 接收窗口RWND(Receive Window�
RWND 用來描述一�(gè)偶聯(lián)�(duì)端的接收緩沖區(qū)大小。偶�(lián)建立過程中,雙方�(huì)交換� 此的初始RWND。RWND �(huì)根據(jù)�(shù)�(jù)�(fā)�、證�(shí)的情況即�(shí)地變化。RWND 的大 小限制了SCTP 可以�(fā)送的�(shù)�(jù)的大�。當(dāng)RWND 等于0 �(shí),SCTP 還可以發(fā)送一 �(gè)�(shù)�(jù)�(bào),以便通過證實(shí)消息得知�(duì)方緩沖區(qū)的變�,直到達(dá)到CWND 的限��
8. 傳輸控制塊TCB(Transmission Control Block�
TCB 是一種內(nèi)部數(shù)�(jù)�(jié)�(gòu),是一�(gè)SCTP 端點(diǎn)為它與其他端�(diǎn)之間已經(jīng)啟動(dòng)的每一 �(gè)偶聯(lián)生成的。TCB 包括端點(diǎn)的所有狀�(tài)、操作信息,便于維護(hù)和管理相�(yīng)的偶�(lián)�
如圖所示,SCTP 的功能主要包括:偶聯(lián)的建立和�(guān)�、流�(nèi)消息順序遞交、用戶數(shù)�(jù)分段、證�(shí)和避免擁�、消息塊綁定、分組的有效性和通路管理�
� SCTP 功能示意�
1、偶�(lián)的建立和�(guān)�
偶聯(lián)的建立是� SCTP 用戶(如M2UA、M3UA 等)�(fā)起請(qǐng)求來啟動(dòng)�。而且建立 過程相對(duì)于TCP 連接而言比較�(fù)�,是�(gè)“四次握手”過�,并用到了“COOKIE� 的機(jī)制。COOKIE 是一�(gè)含有端點(diǎn)初始信息和加密信息的�(shù)�(jù)�,通信的雙方在�(guān) �(lián)建立�(shí)需要處理并交換,從而增加協(xié)議的安全�,防止拒絕服�(wù)和偽裝等潛在� 攻擊� SCTP 提供了對(duì)激活偶�(lián)的正常的�(guān)閉程�,它必須根據(jù)SCTP 用戶的請(qǐng)求來�(zhí)�� �(dāng)然SCTP 也提供一種非正常(即中止)程�,中止程序的�(zhí)行既可以根據(jù)SCTP 用戶的請(qǐng)求來啟動(dòng),也可以由SCTP �(xié)議檢查出差錯(cuò)來中�� SCTP 不支持半打開狀�(tài)(即一端可以在另一端結(jié)束后繼續(xù)�(fā)送數(shù)�(jù)�。無論是� �(gè)端點(diǎn)�(zhí)行了�(guān)閉程�,偶�(lián)的兩端都�(yīng)停止接受從SCTP 用戶�(fā)來請(qǐng)求原��
2、流�(nèi)消息順序遞交
SCTP 提供�(shù)�(jù)�(bào)的順序傳�,順序傳遞的�(shù)�(jù)�(bào)必須放在一�(gè)“流”中傳遞。流 是順序傳遞的基石� 通過�,SCTP 將數(shù)�(jù)的確�(rèn)和傳�?shù)挠行蜻f交分成兩種不同機(jī)�。SCTP 使用TSN �(jī)制實(shí)�(xiàn)了數(shù)�(jù)的確�(rèn)傳輸,使用流�(hào)和SSN(流順序�(hào))則�(shí)�(xiàn)�(shù)�(jù)的有序遞�� �(dāng)SCTP 收到�(shù)�(jù)的SSN 連續(xù)的時(shí)�,SCTP 就可以將�(shù)�(jù)向SCTP 用戶遞交� 而不用等到數(shù)�(jù)的TSN �(hào)連續(xù)以后才向SCTP 用戶遞交�
�(dāng)一�(gè)流被閉塞�(shí),期望的下一�(gè)連續(xù)的SCTP 用戶消息可以從另外的流上�(jìn)行遞 交� SCTP 也提供非順序遞交的業(yè)�(wù),接收到的用戶消息可以使用這種方式立即遞交� SCTP 用戶,而不需要保證其接收順序�
3、用戶數(shù)�(jù)分段
SCTP 通過�(duì)傳送通路上PMTU(Path Maximum TransmissiON Unit)的檢測(cè)� �(shí)�(xiàn)在SCTP 層將超大用戶�(shù)�(jù)分片打包,避免在IP 層的多次分片、重�,可以減 少IP 層的�(shù)�(jù)�(fù)�(dān)�
在發(fā)送端,SCTP 可以�(duì)大的用戶�(shù)�(jù)�(bào)�(jìn)行分片以確保SCTP �(shù)�(jù)�(bào)傳遞� 低層�(shí)適合通路MTU(Maximum Transmission Unit��
在接收端,SCTP 將分片重組為完整的用戶數(shù)�(jù)�(bào),然后傳遞給SCTP 用戶�
4� 證實(shí)和避免擁�
證實(shí)和重傳是�(xié)議保證傳輸可靠性的策略,SCTP 也一�。證�(shí)�(jī)制是SCTP 保證 傳輸可靠性的基石。避免擁塞沿襲了TCP 的窗口機(jī)�,�(jìn)行合適的流量控制� ??
SCTP 在將�(shù)�(jù)(數(shù)�(jù)分片或未分片的用戶數(shù)�(jù)�(bào))發(fā)送給底層之前順序地為 之分配一�(gè)�(fā)送順序號(hào)(TSN��
TSN 和SSN(流順序�(hào))是相互�(dú)立的,TSN 用于保證傳輸?shù)目煽�?,SSN 用于保證流內(nèi)消息的順序傳��
TSN 和SSN 在功能上使可靠傳遞和順序傳遞分開。接收端證實(shí)所有收到的 TSNs,即使其中有些尚未收��
包重�(fā)功能�(fù)�(zé) TSN 的證�(shí),還�(fù)�(zé)擁塞消除�
5� 消息塊綁�
如果長度很短的用戶數(shù)�(jù)被帶上很大一�(gè) SCTP 消息頭,其傳遞效率會(huì)很低,因此, SCTP 將幾�(gè)用戶�(shù)�(jù)綁定在一�(gè)SCTP �(bào)文里�?zhèn)�?,以提高帶寬的利用率?/FONT>
SCTP 分組由公共分組頭和一�(gè)/多�(gè)信息塊組成,信息塊可以是用戶�(shù)�(jù),也 可以是SCTP 控制信息�
SCTP 用戶能夠可選地使用捆綁功能,決定是否將多�(gè)用戶�(shù)�(jù)�(bào)捆綁在一�(gè) SCTP 分組��
為提高效�,擁�/重發(fā)�(shí),捆綁功能可能仍被執(zhí)�,即使用戶已�(jīng)禁止捆綁�
6 、分組的有效�
分組的有效性是 SCTP 提供無差�(cuò)傳輸?shù)幕?。SCTP 分組的公共分組頭包含一�(gè) �(yàn)證標(biāo)簽(VerificATIon Tag)和一�(gè)可選�32 位校�(yàn)碼(Checksum�� �(yàn)證標(biāo)簽的值由偶聯(lián)兩端在偶�(lián)啟動(dòng)�(shí)選擇。如果收到的分組中如果沒有期望的�(yàn) 證標(biāo)簽�,接收端將丟棄這�(gè)分組,以阻止攻擊和失效的SCTP 分組� 校驗(yàn)碼由 SCTP 分組的發(fā)送方�(shè)�,以提供附加的保�(hù),用來避免由�(wǎng)�(luò)造成的數(shù) �(jù)差錯(cuò)。接收端將丟棄包含無效校�(yàn)碼的SCTP 分組�
7� 通路管理
�(fā)送端� SCTP 用戶能夠使用一組傳送地址作為SCTP 分組的目的地。SCTP 管理 功能可以根據(jù)SCTP 用戶的指令和�(dāng)前合格的目的地集合的可達(dá)性狀�(tài),為每�(gè)�(fā) 送的SCTP 分組選擇一�(gè)目的地傳送地址。當(dāng)其他分組�(yè)�(wù)量不能完全表明可�(dá)� �(shí),通路管理功能可以通過心跳消息來監(jiān)視到某�(gè)目的地地址的可�(dá)�,并�(dāng)任何 �(duì)端傳送地址的可�(dá)性發(fā)生變化時(shí),向SCTP 用戶提供指示。通路功能也用來在� �(lián)建立�(shí),向?qū)Χ�?bào)告合格的本端傳送地址集合,并把從�(duì)端返回的傳送地址�(bào)� 給本地的SCTP 用戶� 在偶�(lián)建立�(shí),為每�(gè) SCTP 端點(diǎn)定義一�(gè)通路,用來正常情況下�(fā)送SCTP 分組�
在接收端,通路管理功能在處理SCTP 分組�,用來驗(yàn)證入局的SCTP 分組屬于� 偶聯(lián)是否存在�
1 偶聯(lián)的建立和�(fā)送流�
SCTP 端點(diǎn)A 啟動(dòng)建立偶聯(lián),并向端�(diǎn)B �(fā)送一�(gè)用戶消息,隨后端�(diǎn)B 向A �(fā)� 兩�(gè)用戶消息。(假定這些消息沒有捆綁和分段)。信令流程如�1所��
�1 偶聯(lián)建立過程消息交互�
(1) 端點(diǎn)A �(chuàng)建一�(gè)�(shù)�(jù)�(jié)�(gòu)TCB(傳輸控制塊)來描述即將�(fā)起的這�(gè)偶聯(lián)(包 含偶�(lián)的基本信息),然后向端點(diǎn)B �(fā)送INIT �(shù)�(jù)�。INIT �(shù)�(jù)塊中主要� 括如下參�(shù)�
啟動(dòng)�(biāo)簽(Initiate Tag):�(duì)端驗(yàn)證標(biāo)簽,如設(shè)為Tag_A。Tag_A 是從1 � 4294967295 中的一�(gè)隨機(jī)�(shù)�
輸出流數(shù)量(OS):本端�(diǎn)期望的出局流的�(shù)��
輸入流數(shù)量(MIS):本端�(diǎn)允許入局流的�(shù)量�
(2) 端點(diǎn)B 收到INIT 消息�,立即用INIT ACK �(shù)�(jù)塊響�(yīng)。INIT ACK �(shù)�(jù)塊中 必須帶有如下參數(shù)�
目的� IP 地址:設(shè)置成INIT �(shù)�(jù)塊的起源IP 地址�
啟動(dòng)�(biāo)簽(Initiate Tag):�(shè)置成Tag_B�
狀�(tài) COOKIE(STATE COOKIE):根據(jù)偶聯(lián)的基本信息生成一�(gè)TCB,不 過這�(gè)TCB 是一�(gè)臨時(shí)TCB。這�(gè)TCB 生成以后,將其中的必要信息(包含 一�(gè)COOKIE 生成的時(shí)間戳、COOKIE 的生命期)和一�(gè)本端的密鑰通過 RFC2401 描述的算法計(jì)算成一�(gè)32 位的摘要MAC(這種�(jì)算是不可逆的�� 必要信息和MAC 組合成STATE COOKIE 參數(shù)�
本端�(diǎn)傳送地址�
入局流的�(shù)量�
出局流的�(shù)��
(3) 端點(diǎn)A 收到INIT ACK �,首先停止INIT 定時(shí)器離開COOKIE-WAIT 狀�(tài)� 然后�(fā)送COOKIE ECHO �(shù)�(jù)�,將收到INIT ACK �(shù)�(jù)塊中的STATE COOKIE 參數(shù)原封帶回。端�(diǎn)A 啟動(dòng)COOKIE 定時(shí)器并�(jìn)� COOKIE-ECHOED 狀�(tài)�
(4) 端點(diǎn)B收到COOKIE ECHO�(shù)�(jù)塊后,�(jìn)行COOKIE�(yàn)證。將STATE COOKIE 中的TCB 部分和本端密鑰根�(jù)RFC2401 的MAC 算法�(jìn)行計(jì)�,得出的MAC 和STATE COOKIE 中攜帶的MAC �(jìn)行比�。如果不同則丟棄這�(gè)消息;如 果相�,則取出TCB 部分的時(shí)間戳,和�(dāng)前時(shí)間比�,看�(shí)間是否已�(jīng)超過 了COOKIE 的生命期。如果是,同樣丟�。否則根�(jù)TCB 中的信息建立一�(gè) 和端A 的偶�(lián)。端�(diǎn)B 將狀�(tài)遷入ESTABLISHED,并�(fā)出COOKIE ACK �(shù) �(jù)塊。端�(diǎn)B 向SCTP 用戶�(fā)送SCOMMUNCIATION UP 通知�
(5) 端點(diǎn)A 向端�(diǎn)B �(fā)送一�(gè)DATA �(shù)�(jù)塊,啟動(dòng)T3-RTS 定時(shí)�。DATA �(shù)�(jù) 塊中必須帶有如下參數(shù)�
TSN:DATA �(shù)�(jù)塊的初始TSN�
流標(biāo)�(shí)符(Stream Identifier):用戶�(shù)�(jù)屬于的流,假�(shè)流標(biāo)�(shí)符為0�
流順序碼(Stream Sequence Number):所在流中的用戶�(shù)�(jù)的順序號(hào)�� 該字段從0 �65535�
用戶�(shù)�(jù)(User Data):攜帶用戶�(shù)�(jù)凈荷�
(6) 端點(diǎn)B 收到DATA �(shù)�(jù)塊后,返回SACK �(shù)�(jù)�。SACK �(shù)�(jù)塊中必須帶有 如下參數(shù)�
累積證實(shí) TSN �(biāo)簽(Cumulative TSN Ack):端點(diǎn)A 的初始TSN�
間隔塊(Gap Ack Block):此值為0� 端點(diǎn) A 收到SACK �(shù)�(jù)塊后,停止T3-RTX 定時(shí)��
(7) 端點(diǎn)B 向端�(diǎn)A �(fā)送�(gè)DATA �(shù)�(jù)�。DATA �(shù)�(jù)塊中必須帶有如下� �(shù)�
TSN:端�(diǎn)B �(fā)出DATA �(shù)�(jù)塊的初始TSN�
流標(biāo)�(shí)符(Stream Identifier):用戶�(shù)�(jù)屬于的流,假�(shè)流標(biāo)�(shí)符為0�
流順序碼(Stream Sequence Number):所在流中的用戶�(shù)�(jù)的順序號(hào)碼� 假設(shè)流順序碼�0�
用戶�(shù)�(jù)(User Data):攜帶用戶�(shù)�(jù)凈荷�
(8) 端點(diǎn)B 向端�(diǎn)A �(fā)送第二�(gè)DATA �(shù)�(jù)塊。DATA �(shù)�(jù)塊中必須帶有如下� �(shù)�
TSN:端�(diǎn)B �(fā)出DATA �(shù)�(jù)塊的初始TSN�1�
流標(biāo)�(shí)符(Stream Identifier):用戶�(shù)�(jù)屬于的流,假�(shè)流標(biāo)�(shí)符為0�
流順序碼(Stream Sequence Number):所在流中的用戶�(shù)�(jù)的順序號(hào)�� 此時(shí)流順序碼�1�
用戶�(shù)�(jù)(User Data):攜帶用戶�(shù)�(jù)凈荷�
(9) 端點(diǎn)A 收到DATA �(shù)�(jù)塊后,返回SACK �(shù)�(jù)�。SACK �(shù)�(jù)塊中必須帶有 如下參數(shù)�
累積證實(shí) TSN �(biāo)簽(Cumulative TSN Ack):端點(diǎn)B 的初始TSN�
間隔塊(Gap Ack Block):此值為0�
2 偶聯(lián)�(guān)閉流�
一�(gè)端點(diǎn)退出服�(wù)�(shí),需要停止它的偶�(lián)。偶�(lián)的停止使用兩種流程:偶聯(lián)的中� 流程(非正常�(guān)閉)和偶�(lián)的正常關(guān)閉流�� 偶聯(lián)的中止(非正常關(guān)閉)可以在任何未完成期間�(jìn)�,偶�(lián)的兩端都舍棄�(shù)�(jù)� 且不提交到對(duì)�。此種方法不考慮�(shù)�(jù)的安全。偶�(lián)的中止步驟比較簡單:�(fā)起端 �(diǎn)�?qū)Χ硕它c(diǎn)�(fā)送ABORT �(shù)�(jù)�,發(fā)送的SCTP 分組中必須填上對(duì)端端�(diǎn)的驗(yàn)� �(biāo)簽,而且不在ABORT �(shù)�(jù)塊中捆綁任何DATA �(shù)�(jù);接收端�(diǎn)收到ABORT �(shù) �(jù)塊后,�(jìn)行驗(yàn)證標(biāo)簽的檢查。如果驗(yàn)證標(biāo)簽與本端�(yàn)證標(biāo)簽相�,接收端�(diǎn)從記 錄上清除該偶�(lián),并向SCTP 用戶�(bào)告偶�(lián)的停歀�
偶聯(lián)的正常關(guān)閉:任何一�(gè)端點(diǎn)�(zhí)行正常關(guān)閉程序時(shí),偶�(lián)的兩端將停止接受從其 SCTP 用戶�(fā)來的新數(shù)�(jù),并且在�(fā)送或接收到SHUTDOWN �(shù)�(jù)塊時(shí),把分組� 的數(shù)�(jù)遞交給SCTP 用戶。偶�(lián)的關(guān)閉可以保證所有兩端的未發(fā)送、發(fā)送未證實(shí)�(shù) �(jù)得到�(fā)送和證實(shí)后再終止偶聯(lián)�
�2 偶聯(lián)正常�(guān)閉消息交互圖
偶聯(lián)的正常關(guān)閉步驟如下:
(1) 偶聯(lián)�(guān)閉發(fā)起端�(diǎn)A 的SCTP 用戶向SCTP �(fā)送請(qǐng)求SHUTDOWN 原因� SCTP 偶聯(lián)從ESTABLISHED 狀�(tài)遷入SHUTDOWN-PENDING 狀�(tài)。在� �(gè)狀�(tài),SCTP 不接受SCTP 用戶在這�(gè)偶聯(lián)上的任何�(shù)�(jù)�(fā)送請(qǐng)�。同�(shí)等待端點(diǎn)A 所有發(fā)送未證實(shí)的數(shù)�(jù)得到端點(diǎn)B 的證�(shí)。當(dāng)所有端�(diǎn)A �(fā)送未� �(shí)�(shù)�(jù)得到證實(shí),則向端�(diǎn)B �(fā)送SHUTDOWN �(shù)�(jù)�。端�(diǎn)A 啟動(dòng) T2-shutdown 定時(shí)器�(jìn)入SHUTDOWN-SENT 狀�(tài)。啟�(dòng)T2-shutdown 定時(shí) 器的目的是等待端�(diǎn)B �(fā)回的SHUTDOWN-ACK �(shù)�(jù)�,如果定�(shí)器超�(shí)� 則端�(diǎn)A 必須重新�(fā)送SHUTDOWN �(shù)�(jù)塊�
(2) 端點(diǎn)B 收到SHUTDOWN 消息�,�(jìn)入SHOUTDOWN-RECEIVED 狀�(tài)� 不再接收從SCTP 用戶�(fā)來的的新�(shù)�(jù),并且檢查數(shù)�(jù)塊的累積TSN ACK � 段,�(yàn)證所有未完成的DATA �(shù)�(jù)塊已�(jīng)被SHUTDOWN 的發(fā)送方接收。當(dāng) 端點(diǎn)B 所有未�(fā)送數(shù)�(jù)和發(fā)送未證實(shí)�(shù)�(jù)得到�(fā)送和證實(shí)�� �(fā)� SHUTDOWN ACK �(shù)�(jù)塊并啟動(dòng)本端T2-SHUTDOWN 定時(shí)�,并且�(jìn)� SHUTDOWN-ACK-SENT 狀�(tài)。如果定�(shí)器超�(shí)�,端�(diǎn)B 則重新發(fā)� SHUTDOWN ACK �(shù)�(jù)��
(3) 端點(diǎn)A 收到SHUTDOWN ACK 消息�,停止T2-shutdown 定時(shí)�,并且向� �(diǎn)B �(fā)送SHUTDOWN COMPLETE �(shù)�(jù)�,并清除偶聯(lián)的所有記�。端�(diǎn)B 收到SHUTDOWN COMPLETE �(shù)�(jù)塊后� �(yàn)證是否處� SHUTDOWN-ACK-SENT 狀�(tài)。如果不是處于該狀�(tài),則丟棄該數(shù)�(jù)�;如 果端�(diǎn)處于SHUTDOWN-ACK-SENT 狀�(tài),端�(diǎn)B 則停止T2-shutdown 定時(shí) 器并清除偶聯(lián)的所有記�,�(jìn)入CLOSED 狀�(tài)�