前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的tcp協(xié)議主題范文,僅供參考,歡迎閱讀并收藏。
關鍵詞:tcp協(xié)議;網絡安全;協(xié)議攻擊;安全防御
中圖分類號:TP393 文獻標識碼: A 文章編號:1009-3044(2007)15-30682-01
Security Problems Study in the TCP/IP Protocol
LI Bei
(The Information Management Department,University of Qinghai Finance and Economics College, Xining 810001, China)
Abstract:The TCP/IP protocol use very extensive now, but it oneself also have the some the blemish on the safety.I described every kind of each kind aims at the attack of these blemishses, including the preface row number attack, SYN Flood attack.Put forward the defense method that some to these attackstone.
Key words:TCP protocol;Network security;Protocol attack;Protocol security.
1 引言
TCP協(xié)議現在用得非常廣泛,但除了對它不正確使用造成不安全因素外,它本身也有一些安全上的缺陷。一些缺陷
是由于主機使用IP源地址作為認證機制引起的;Berkeley 的r系列調用就是一個明顯的例子。其它的一些缺陷是由于網絡控制機制,特別是路由協(xié)議,缺少認證機制引起的。
描述這些攻擊的前提是攻擊者或多或少控制了某些連在互聯(lián)網上的機器。被控制的機器有的是因為本身有漏洞,有的是自身沒有保護機制的個人電腦。也有可能攻擊者是一個系統(tǒng)管理員。
我不討論協(xié)議具體應用上的漏洞,比如被互聯(lián)網“蠕蟲”利用的漏洞。討論的是協(xié)議本身的問題。只要小心地使用這些協(xié)議,有些問題是可以避免的;我也不討論經典的網絡攻擊,比如切斷物理線路,篡改或插入消息,而主要討論的是僅僅由于協(xié)議本身引起的問題。
本文所討論的協(xié)議是Berkeley(早期的TCP/IP協(xié)議)協(xié)議,因為它實際上已成為大部分廠商的標準,而不僅僅是UNIX系統(tǒng)。
2 TCP序列號預測攻擊
TCP序列號預測攻擊最早是1985年由Robort.Morris對這一安全漏洞進行闡述的。他使用TCP序列號預測,即使是沒有從服務器得到任何響應, 來產生一個TCP包序列。這使得他能欺騙在本地網絡上的主機。
2.1 攻擊方法
TCP協(xié)議有一個非常令人著迷的漏洞,簡單的說,就是通過預測初始序列號來偽造TCP包,并且不需要得到回應。這樣就可以使攻擊者偽裝成一臺和服務器在同一個局域網上的一臺可信任的機器。
通常建立TCP連接需要三次握手??蛻魴C送一個初始序列號ISNc,服務器應答它并送出它自己的序列號ISNs,客戶機再發(fā)出一個應答包。這三個數據包發(fā)送以后,就可以傳輸數據了。這個
過程可以用下圖來表示:
C->S:SYN(ISNc)
S->C:SYN(ISNs),ACK(ISNc)
C->S:ACK(ISNs)
C->S:data
and/or
S->C:data
這就是說,要使一個連接建立起來,C必須知道ISNs,這個數多少有一些隨機性。
假設入侵者X有一種方法可以預測ISNs。在這種情況下,他可以通過以下的步驟來模仿可信任的主機T:
X->S:SYN(ISNx),SRC=T
S->T:SYN(ISNs),ACK(ISNx)
X->S:ACK(ISNs),SRC=T
X->S:ACK(ISNs),SRC=T,nasty-data
即使S->T的數據包不經過X,X也能知道它的內容,因此能發(fā)送數據。如果X在一個能夠執(zhí)行命令的連接上實行這種攻擊(例如,Berkeley rsh 服務),他就可以運行一些惡意的命令。
那么怎樣預測隨機的ISN呢?在Berkeley系統(tǒng)中,初始序列號變量是以每秒固定的數目遞增的,而每次連接的序列號就是這個變量的一半。因此,如果有人通過合法的連接觀察ISNs,他就有很大的機會通過計算得到下一次連接的ISNs。應該指出的是服務器的應答消息
S->T:SYN(ISNs),ACK(ISNx)
并沒有消除這種攻擊;雖然真正的T主機將接收到它,并且會重設連接。這并不是一個嚴重的障礙,因為我們可以通過一些拒絕服務的攻擊使T主機暫時失效,也可以在T主機關機或重起的時候攻擊。
還有一種通過netstat服務對TCP序列號進行的攻擊。在這種攻擊中,入侵者模仿一臺關閉的主機。如果在目標機上有netstat服務,它就會提供另一個端口必要的序列號信息;這樣就根本不需要猜測了。
2.2 防御
很明顯,這種攻擊的關鍵是Berkeley系統(tǒng)中初始序列號變量變化方式太簡單了。TCP標準要求這個變量必須以每秒鐘將近250,000的速度增長;Berkerey系統(tǒng)則使用了一個比它慢得多的速度。然而關鍵的因素是間隔的大小而不是平均速度。從4.2BSD系統(tǒng)的每秒增加128到4.3BSD的每秒增加125,000的改變是沒有意義的。
下面讓我們來看看以250,000的頻率運行是否有用。為了簡單起見,我忽略了其它連接產生的問題,僅僅考慮本計數器固定速度的改變:
為了知道當前的序列號,必須發(fā)送一個SYN包,并接收它的回應,如下:
X->S:SYN(ISNx)
(上接第682頁)
S->X:SYN(ISNs),ACK(ISNx) (1)
第一個使服務器產生下一序列號的偽造的數據包,可以緊跟在服務器對探測包的回應后送出:
X->S:SYN(ISNx),SRC=T (2)
序列號ISNs在應答中使用
S->T:SYN(ISNs),ACK(ISNx)
它是由數據包(1)產生到服務器接收到數據包(1)之間的時間唯一確定的。但是這個時間是由X到S的來回時間確定的。因此如果攻擊者能夠測量或預測到這個時間,即使使用一個能精確的4μ秒的時鐘也不能阻止這種攻擊。
對來回時間的測量能精確到什么程度呢?如果假設網絡很穩(wěn)定,我們可以精確到10毫秒左右。很明顯,互聯(lián)網不可能長期這么穩(wěn)定,但是卻有可能在一個較短的時間內穩(wěn)定。因此我們有2500個ISNs的可能值??紤]到重新測量來回時間所需的時間,我們假設每次嘗試需要化5秒,那么一個攻擊者很可能在7500秒內獲得成功。條件更好的網絡或更精確的測量,能夠提高成功的可能性。因此,僅僅是按TCP協(xié)議標準是不行的。
在這里,我們默認的假設是目標機上不運行任何進程。實際上,當新的請求到達時,是會運行一些進程的。在一個6MIPS的機器上,一個時鐘周期-4μ秒-大約可執(zhí)行25條指令。高優(yōu)先級的中斷,TCB分配順序的不同,都對下一個序列號有相當大影響。這種隨機的效果是被認為是主機的優(yōu)點。必須注意的是,越快的主機越容易攻擊,這是由于它執(zhí)行指令的時間會減少,因此對初始序列號增加的影響也會減少。當然,CPU的速度增加是很快的。
另一個對付序列號攻擊的方法是:隨機的增加初始序列號變量。必須要全部位都是隨機的,如果假設只有低8位是隨機的,那么增加的間隔也是容易猜測的。我們應該結合使用好的間隔增量和一個小的隨機數發(fā)生器或使用一個32位隨機數發(fā)生器。注意,有很多假的隨機數產生器是很容易倒轉的。實際上,假設大部分這種產生器是通過它的輸出的反饋來工作的,入侵者就可以通過簡單的計算來得到下一個隨機數。有些技術使用32位發(fā)生器,但僅僅使用它的16位,用窮舉攻擊法就可以得到它的結果。我們必須最少把隨機數的16用在每一次增加中,以使網絡探測失效,但是用于防御搜索結果的位就太少了。要通過更多的研究和仿真來決定合適的參數。
與其用這么大的數,不如對ISNs加密。數據加密標準算法(DES)加上一個簡單的計數器是一個很好的選擇。也可以在輸出反饋模式使用DES而不要計數器。不管用哪一種方法,都必須小心的選擇密匙。在當今使用開機時間是不行的,入侵者能夠取得足夠多的關于開機時間的信息,從而實現窮舉攻擊。但是如果開機時間用密匙加密后,隨機數產生器就很難破解了。初始序列號產生器的性能是沒問題的。每一次連接只需要產生一個初始序列號,即使使用軟件來實DES加密也足夠了。
還有一些防御措施包括做好日志和報警系統(tǒng)。測量來回時間通常是用ICMP報文來實現的,我們可以記錄超常的ping請求。也可以記錄短時間的、不完全的tcp連接請求。同樣,偽裝一臺活動的主機會產生異常的RST包,這些都應該被記錄下來。
3 SYN Floods攻擊
3.1 什么是SYN Floods攻擊
SYN Floods攻擊是以TCP/IP協(xié)議的三次握手為基礎的,所以要了解SYN Floods攻擊,必須了解TCP/IP協(xié)議的三次握手,這在前面已經介紹過了。
SYN Floods攻擊就是通過一些工具如SYN Flooders或通過raw socket編程向目標機發(fā)送一些源地址不存在的SYN數據包,目標機收到這些數據包后就會發(fā)出應答并等待回應,然而由于源地址的主機不存在,所以目標機因得不到回應而一直等待,直到超時。如果有人向目標機發(fā)送大量這樣的數據包,目標機就會因為接收連接的隊列填滿而不再接受連接請求,這樣目標機就暫時失效了,因此SYN Floods攻擊是一種拒絕服務的攻擊。大部分這種攻擊只是使服務器不再接受連接而不影響已經建立起來的連接;但在有些情況下,會使系統(tǒng)內存不足而導致系統(tǒng)崩潰。這種攻擊比較難以預防,因為當三次握手的第一個SYN數據包到來的時候,沒有辦法知道它的源地址是真的還是偽造的。
3.2 解決方法
有兩種方法可以緩解或禁止這種攻擊。第一種是SYN Storm Modifications,另一種是SYN Cookies。
SYN Storm Modifications(也叫Adaptive Time-Outs):
這種方法是通過稍微修改算法以使TCP連接請求隊列中能容納更多的TCP連接請求(可以有成千上萬個連接請求)。通過修改算法,就能夠緩解或阻止這種攻擊。這種修改已被應用在Unix 環(huán)境中(SunOS,FreeBSD,OpenBSD 和 NetBSD),不過就我所知,微軟還沒有采用這種技術。
SYN Cookies:
這種技術通過在TCP包頭中的特定字段抽出一個秘密數字,SYN Floods 攻擊幾乎能被防止。這個抽出的數字必須包含包頭其它部分的索引。把這個信息用不可逆算法加密,并把它作為應答包頭的一部分。當有一個ACK包到達時,把包頭中的加密字與服務器上的作比較,如果相同就建立連接,不同就把這個包丟棄,并且三次握手沒有完成。用這種方法,服務器不需要等,因此SYN Floods攻擊被禁止了。
4 總結
以上介紹了由于TCP協(xié)議本身缺陷所引起的兩種攻擊及其防御對策,在這兩種防御對策中,都用到了加密技術。加密技術對網絡安全是非常重要的,因為系統(tǒng)的漏洞是不可避免的,因此沒有絕對安全的系統(tǒng)。而加密技術可以使你的系統(tǒng)在被入侵后,把損失減到最小。從本文可以也可以看出,加密技術對預防攻擊也是很有效的。
參考文獻:
[1] HILL G R,et al.Ptransport network layer based on optical network elements[J].LightwaveTechnol.,1998,11:887-879.
[2] D.S.Siyan,P>Rybaczyk,Ware 實現網際互聯(lián)[M].清華大學出版社,1998.
關鍵詞:Socket通信機制 TCP協(xié)議 開發(fā)原理
中圖分類號:TP393 文獻標識碼:A 文章編號:1007-3973(2012)008-081-02
1 TCP,SOCKET簡介
TCP:Transmission Control Protocol 傳輸控制協(xié)議TCP是一種面向連接(連接導向)的、可靠的、基于字節(jié)流的運輸層(Transport layer)通信協(xié)議,由IETF的RFC 793說明(specified)。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能。
Socket:即“套接字”,描述IP地址和端口,是通信鏈的句柄。在Internet上的主機一般運行了多個服務軟件,提供幾種服務。每種服務都會打開一個Socket,并綁定到一個端口上,不同的端口對應于不同的服務。
2 基于TCP協(xié)議程序的簡單樣例
了解客戶端,服務器,開發(fā)原理,開發(fā)流程。
客戶端:客戶端(Client)或稱為用戶端,是指與服務器相對應,為客戶提供本地服務的程序。除了一些只在本地運行的應用程序之外,一般安裝在普通的客戶機上,需要與服務端互相配合運行。
服務器:服務器指一個管理資源并為用戶提供服務的計算機軟件,通常分為文件服務器、數據庫服務器和應用程序服務器。運行以上軟件的計算機或計算機系統(tǒng)也被稱為服務器。
開發(fā)原理:
服務器,使用ServerSocket,監(jiān)聽指定的端口,端口可以隨意指定(建議使用大于1024的端口),等待客戶端得連接,客戶端連接后,產生會話;在會話完成之后,關閉連接。
客戶端,使用Socket對網絡上某一個服務器的某一個端口發(fā)出連接請求,一旦連接成功,就打開會話;會話完成后,關閉Socket。客戶端不用指定打開端口,經常是臨時的分配一個1024以上的端口。
基于TCP的SOCKET流程如下:
(1)客戶端的編程流程:
打開Socket,創(chuàng)建一個SOCKET;
為套接字建立一個輸入inputstream,和輸出流outputstream;
根據服務器協(xié)議(這里是TCP協(xié)議)從套接字讀入或向套接字寫入;
關閉SOCKET:清除套接字和輸入/輸出流;
(2)服務器端的編程流程:
打開Server Socket,新建一個服務器型套接字和一個普通套接字,服務器型套接字在指定端口為客戶端請求的Socket服務;
使用ServerSocket類的accept()方法,使套接字處于監(jiān)聽狀態(tài),并且把監(jiān)聽結果返回給普通套接字;
為該普通套接字創(chuàng)建輸入和輸出流;
從輸入和輸出流中讀入或寫入字節(jié)流,進行相應的處理,并將結果返回給客戶端(這里的例子是判斷是奇數還是偶數)。
樣例詳細說明:
客戶端發(fā)送一個數字,交給服務器判斷是偶數還是奇數,將結果返回給客戶端。
主要代碼
客戶端主要函數
Init()初始化socket,獲取IutputStream以及OutputStream;
private static void init(){
try
{
socket = new Socket(HOST,PORT);
is = socket.getInputStream();
os = socket.getOutputStream();
}
catch (Exception e){...}
}
Send()函數,向服務器發(fā)送數據
private static void send(byte[ ] data){
try
{
os.write(data);
}
catch(Exception e){...}
}
Receive()函數,獲取服務器返回的信息
private static byte[ ] receive(){
byte[ ] b = new byte[1024];
try
{
int n = is.read(b);
byte[ ] data = new byte[n];
System.arraycopy(b, 0, data, 0, n);
return data;
}
catch (Exception e){...}
return null;
}
Close()函數,關閉socket連接
private static void close(){
try{
is.close();
os.close();
socket.close();
}catch(Exception e){...}
}
服務器主要函數:
Init(),send(),receive(),close()函數同客戶端
Logic()函數,處理收到的數字,判斷奇偶
private Boolean logic(byte[ ] data)
{
String s=new String(data);
System.out.println("logic");
int t=Integer.valueOf(s);
if(t%2==1)
return true;
return false;
}
調用流程
服務器init()->客戶端init()->客戶端send()->服務器receive()->服務器logic()->服務器send()->客戶端receive().
參考文獻:
目前最完成,最被大眾接受的通信協(xié)議標準就是TCP/IP協(xié)議。它的存在能使不相同的硬件結構,操作系統(tǒng)的計算機互相通信。在20世紀60年代末,美國政府出資近資助了一個分組(包)交換網絡研究項目ARPAnet,這就是TCP/IP的最初樣貌。最初ARPAnet使用的是租用的以點對點為主的通信線路,在后面當通信網和衛(wèi)星通信系統(tǒng)發(fā)展起來之后,它最初開發(fā)的網絡協(xié)議在通信可靠性較差的通信子網絡中產生了很多問題,為了解決這些問題,TCP/IP協(xié)議就應運而生。作為一個開放的協(xié)議,有很多不同的廠家生產了很多型號的計算機,他們各自有完全不同的操作系統(tǒng),但是在TCP/IP協(xié)議組件下,他們能進行通信。在如今的社會,TCP/IP已經成為一個由成千上萬的計算機和其使用者組成的全球化網絡,此時的ARPAnet也就順理成章的變成了Internet。TCP/IP是Internet的基礎。TCP/IP協(xié)議是以套件的形式推出的,在這個套件中包括有一組互相補充、互相配合的協(xié)議。在TCP/IP協(xié)議族中就包含有IP(互聯(lián)網協(xié)議)、TCP(傳輸控制協(xié)議)和其他協(xié)議,在網絡通訊中,只有這些協(xié)議相互配合,才能實現網絡上的信息傳輸。IP和TCP的組合不僅僅只是表示兩個協(xié)議,還指整個協(xié)議套件,TCP和IP只是作為其中最主要的兩個協(xié)議,讀者應該更好省核此術語的真正含義。TCP/IP協(xié)議如果在嚴格上來說只是人們習慣的說法,更為專業(yè)的說法應該稱其為Internet協(xié)議。同時在國際上,TCP/IP協(xié)議也不是ITU-T或OSI的標準,但是它作為一種事實的標準被執(zhí)行著,并且完全獨立于任何硬件或者軟件廠商,可以運行在不同體系的計算機上。它采用通用的尋址方案,通過尋址的方法,一個系統(tǒng)能訪問到任何其他系統(tǒng),就算在Internet這樣龐大的全球性網絡內,尋址的運行也可以說是游刃有余。不管是局域網,還是廣域網,TCP/IP都是其中的最大協(xié)議最廣的使用協(xié)議。
二管理TCP/IP的組織機構
Internet因為其開放性,所以不受任何政府部門或者組織所擁有和控制,因此沒有統(tǒng)一的管理機構,但是還有非營利機構管理其標準化過程。這些機構承擔Internet的管理職責,建立和完善TCP/IP和相關協(xié)議標準。與TCP/IP協(xié)議相關的組織機構簡介如下:
1ISOCISOC為Internet的國際化提供支持、并且是一個非營利性的組織,同時也作為上級組織管理所有Internet委員會及任務組。
2IABIAB是ISOC的技術顧問,主要負責處理Internet技術,協(xié)議和研究。
3IETF與IESGIETF制定草案,提出建議,維護Internet標準都是其負責的。IESG在Internet制定標準以及IETF的各項活動中負責。
4IRTF與IRSGIRTF,在Internet發(fā)展中所遇到的技術問題,并且處理與TCP/IP相關的協(xié)議和一般體系結構研究活動。IRSG則是作為IRTF的指導小組,指導其工作。
關鍵詞 計算機網絡教學;TCP協(xié)議;NS2;確認機制;擁塞控制
中圖分類號:TP393.01 文獻標識碼:A 文章編號:1671-489X(2012)03-0013-03
Research on Application of NS2 in TCP Protocol Teaching//Wang Xiaofeng, Mao Li
Abstract TCP is one of the most important protocols of computer networks, but as its implementation mechanisms are complex, the TCP teaching has become a difficult point in computer network teaching. The TCP teaching demonstration based on NS2 is presented, which can analyze and demonstrate the TCP protocol’s key implementation mechanisms, such as connection establishment, acknowledgement scheme and congestion control etc., and thus can improve teaching effectiveness.
Key words computer network teaching; TCP protocol; NS2; acknowledgement scheme; congestion control
Author’s address School of Internet of Things Engineering, Jiangnan University, Wuxi, Jiangsu, China 214122
1 引言
Internet作為20世紀人類最偉大的發(fā)明之一,已經深入人類社會的各個方面。當前,以Internet為代表的計算機網絡技術得到飛速發(fā)展,計算機網絡課程已逐漸成為高校計算機相關專業(yè)的一門專業(yè)基礎課。計算機網絡教學涉及大量復雜的網絡協(xié)議,尤其是作為Internet核心協(xié)議之一的TCP協(xié)議。為實現在不可靠的IP協(xié)議上的可靠數據交付,TCP協(xié)議包含了大量復雜的機制[1],這使得初學者感到抽象難懂,因此,TCP協(xié)議成為計算機網絡教學的一個難點。
為提升學生對TCP協(xié)議的直觀認識,增強學習的興趣與效果,可搭建由物理網絡設備組成的網絡實驗平臺,但這花費成本高、運用不便。鑒于當前網絡模擬技術已得到廣泛研究,各種成熟的網絡模擬工具層出不窮,通過現有網絡模擬軟件,構建虛擬的TCP協(xié)議模擬與仿真教學環(huán)境,不僅可以增強學生對TCP協(xié)議復雜機理的直觀理解,提高學習的興趣與效率,而且可以為教師提供有力的TCP協(xié)議教學輔助工具。本文基于經典NS2網絡模擬軟件,提出TCP協(xié)議關鍵實現機理(包括連接建立、確認機制以及擁塞控制等)的分析和演示教學方法。
2 網絡模擬器簡介
2.1 網絡模擬技術介紹
在眾多研究計算機網絡的方法中,由于網絡模擬技術具有成本低,實現簡單,使用方便,并能用于研究尚未實施的網絡機制等優(yōu)點,因此被廣泛應用于網絡研究的每一個角落,各種網絡模擬器也層出不窮[2]。當前網絡模擬器一般都基于離散事件模擬技術實現。所謂離散事件模擬,就是模擬系統(tǒng)的狀態(tài)變化在離散模擬時間點上發(fā)生,事件的發(fā)生使得模擬系統(tǒng)從一個狀態(tài)跳轉到另一個狀態(tài)。離散事件網絡模擬技術則針對數據包的每一跳轉發(fā)都依靠離散事件來刻畫。下面介紹當前比較經典的網絡模擬器。
1)NS2[3]。NS2(Network Simulator 2)是一個單機多協(xié)議離散事件網絡模擬工具,由USI/ISI、Xerox PARC、LBNL和UC Berkeley等美國大學和實驗室合作,在DARPA資助的VINT工程研究中實現的模擬工具。NS2有很多特點,比如具有開放的體系結構;可擴展、易配置和可編程的事件驅動模擬引擎;帶有大量協(xié)議庫的支持,尤其適合于對基于TCP/IP的網絡進行模擬;支持大規(guī)模多協(xié)議網絡模擬;提供開放的用戶接口、可視化工具:可動畫顯示網絡模擬過程,圖形顯示數據結果等。NS2是一個完全免費的軟件,在國際上享有很高的學術聲譽,被世界各國的網絡研究者廣泛使用。
2)OPNET。OPNET是美國OPNET Technologies Ins公司的產品,是一個單機的、基于離散事件驅動的網絡模擬器。OPNET的特點包括:支持面向對象的建模方式,并提供圖形化的編輯界面;提供各種通信網絡和信息系統(tǒng)的結構化模擬模塊;具有完善的結果分析器,為網絡性能的分析提供有效而直觀的工具;具有支持各種業(yè)務的模型等。目前OPNET是公認的優(yōu)秀通信網絡、通信設施、通信協(xié)議的模擬與建模工具,在全球的通信、電訊、網絡及國防科技產業(yè)上已經被普遍采用并受到好評。但是由于是收費的商業(yè)軟件,限制了其在研究領域的廣泛應用。
3)SSF[4]。SSF(Scalable Simulation Framework)是一組用來描述離散事件模擬的應用程序接口,它采用DML(Domain Modeling Language)語言來描述網絡模擬應用。SSF具有面向對象、簡潔、功能強大等特點,此外,它支持高性能并行網絡模擬并且在不同的計算環(huán)境之間具有可移植性。SSF有好幾個實現版本,包括SSFNet、iSSF(即DaSSF)等。SSFNet采用JAVA實現,是DARPA支持的項目S3(Scalable Self-organizing Simulations)中的一部分,主要支持IP包級別上的細粒度模擬,鏈路層和物理層的協(xié)議模型以獨立的組件方式提供。DaSSF采用C++實現,由達特茅斯學院開發(fā),目前被設計為能夠基于MPI運行在分布式內存并行計算機上。
2.2 NS2網絡模擬器
從上述分析看出,NS2是一款非常優(yōu)秀的開源軟件,并且提供開放的用戶接口以及提供模擬過程的動畫演示及模擬結果的圖形顯示,因此非常適合于計算機網絡教學。本文基于NS2實現TCP協(xié)議教學演示。下面是基于NS2的網絡模擬基本步驟分析。
1)基于Otcl腳本語言設置模擬網絡的拓撲結構以及鏈路的基本特性。
2)基于Otcl腳本語言設置協(xié)議,包括協(xié)議綁定和建立通信業(yè)務量模型。
3)設置trace對象、NAM對象等。依靠trace以及NAM可以記錄網絡模擬過程中所產生的各種數據。
4)其他的輔助命令的設置,如設定模擬結束時間、各種通信業(yè)務量的起止時間等。
5)對1~4步編寫的Otcl腳本用NS2解釋執(zhí)行,并形成trace、NAM文件記錄。
6)分析trace文件,得出實驗所需數據;或分析NAM文件,動畫演示網絡模擬運行的整個過程。
7)對配置拓撲結構和通信業(yè)務量模型進行調整,并重復進行上述模擬過程,直至模擬效果滿意為止。
3 NS2在TCP協(xié)議教學中的實例
3.1 模擬應用設置
基于NS2模擬器,設置所模擬的網絡拓撲如圖1所示,共有6個網絡節(jié)點,并將Router(0)與Router(1)之間的鏈路設為瓶頸鏈路。Host(0)與Server(0)之間進行UDP數據流的傳輸,這作為背景流量;Host(1)與Server(1)之間進行TCP數據流的傳輸,這作為TCP協(xié)議教學的示范應用。設定模擬時間為5秒,其中UDP數據流持續(xù)時間為2.5~5.0秒,TCP數據流持續(xù)時間為0.1~5.0秒。模擬應用設置的關鍵TCL腳本代碼如圖2所示。
3.2 模擬結果分析與演示
在模擬過程中開啟NS2的trace記錄、NAM記錄以及Queue Monitoring記錄,并進行相應分析與演示。
1)TCP連接建立的分析與演示。圖3中顯示了關鍵的trace記錄,為了能夠便于分析,做了一些精簡(trace記錄中每一跳數據包轉發(fā)記錄僅保留enque記錄,刪除deque記錄以及接收記錄)。依靠圖中第1行~第7行、第9行與第11行,可以演示TCP建立連接的3次握手過程。其中第1~3行表明3次握手中的第一個報文,經過三跳數據包轉發(fā)到達目的節(jié)點,4~6行表明3次握手中的第二個報文,上述2個報文不涉及數據的傳遞,報文字節(jié)長度為40。第7、9、11行為3次握手中的第三個報文,該報文采用捎帶應答,伴隨數據傳送一并進行,其字節(jié)長度為1 040。
2)TCP確認機制的分析與演示。TCP的可靠傳輸依靠確認機制實現,以圖3中第7~17行、第20行為例,可以演示TCP的確認機制。其中第7~12行,TCP的發(fā)送方連續(xù)發(fā)出2個長度為1 040字節(jié)的報文(標號分別為2與3),這兩個報文分別經過三跳數據包轉發(fā)到達目的節(jié)點;第13行與第14行分別表明,當目的節(jié)點分別收到標號為2與3的報文后,發(fā)出ACK報文4與5進行確認。
依靠NAM記錄,生成相應的NAM動畫,如圖4所示,可以比較分析有確認機制的TCP協(xié)議以及無確認機制的UDP協(xié)議的區(qū)別,加深學生對確認機制的印象和理解。當NAM動畫演示的模擬時間推進到2.5秒之后,同時出現UDP數據流以及TCP數據流,如圖4所示,可以演示出UDP數據流僅是從Host(0)到Server(0)的單向傳輸;而TCP數據流不僅包括從Host(1)到Server(1)方向的數據傳輸,還包括從Server(1)到Host(1)方向的確認報文傳輸。
3)TCP擁塞控制的分析與演示。依靠Queue Monitoring對Host(1)與Router(0)間的鏈路進行記錄并進行相應處理,獲得整個模擬過程中TCP數據流的發(fā)送速率,如圖5所示,依靠該圖演示TCP的擁塞控制過程。在0.1秒,Host(1)開始發(fā)送TCP數據流,流量大小逐漸上升,到0.3秒流量達到最大值,這個過程可以演示為TCP協(xié)議的慢開始階段。在0.3秒,TCP流量瞬時發(fā)送速率達3.66 Mb/s,遠超過Router(0)與Router(1)之間的鏈路帶寬2 Mb/s,因此出現網絡擁塞,于是TCP協(xié)議執(zhí)行擁塞避免的“乘法減小”策略,在0.35秒,TCP流量瞬時發(fā)送速率減為2.16 Mb/s,在隨后的過程中,TCP流量發(fā)送速率基本維持在2.00 Mb/s。
從2.5秒開始,Host(0)開始發(fā)送UDP數據流,并與TCP數據流爭用瓶頸鏈路帶寬,這使得網絡頻繁出現擁塞,TCP協(xié)議執(zhí)行“乘法減小”策略,擁塞窗口多次減少,導致TCP流量發(fā)送速率從2.55秒的2.00 Mb/s逐漸減為2.95秒的0 b/s,隨后TCP協(xié)議繼續(xù)進行慢開始過程,流量大小逐漸增大,直到再次探測到出現網絡擁塞。
4 結論
本文基于網絡模擬軟件NS2,編寫用于TCP協(xié)議教學的TCL腳本,并通過NS2的trace記錄、NAM記錄以及Queue Monitoring記錄工具,實現對TCP協(xié)議連接建立、確認機制以及擁塞控制等機理的演示教學。通過在TCP協(xié)議教學中使用網絡模擬軟件NS2,能讓學生更加輕松地學習網絡理論知識,提升學生的鉆研興趣,并取得良好的教學效果。在以后的教學工作中,擬在計算機網絡實驗環(huán)節(jié)讓學生自己動手編寫計算機網絡協(xié)議模擬代碼,進一步提升學生的能動性,培養(yǎng)創(chuàng)新思維。
參考文獻
[1]謝希仁.計算機網絡[M].5版.北京:電子工業(yè)出版社,2008:180-220.
[2]王曉鋒.提高大規(guī)模離散事件網絡模擬性能方法的研究[D].哈爾濱:哈爾濱工業(yè)大學,2007:4-10.
關鍵詞:TCP/IP 溫度監(jiān)測 Arduino LabView
中圖分類號:TP2 文獻標識碼:A 文章編號:1007-9416(2015)09-0000-00
現場總線系統(tǒng)是一種傳統(tǒng)的雙向數字的通信標準,廣泛應用于自動控制領域和生產過程中,但是由于現場總線的種類繁多,且各標準間的相互兼容性不強,加上各廠商和標準制訂組織之間存在利益競爭,各種現場總線技術無法實現無縫連接,也無法將生產現場的監(jiān)控數據共享給企業(yè)的信息管理系統(tǒng),而將以太網技術引入到工業(yè)控制領域,將監(jiān)控數據進行標準的TCP/IP封裝,將能很好的解決不同生產設備間的高速連接問題和設備的“自動化孤島”問題,最終將生產自動化和辦公自動化無縫對接,實現“一網到底”[1]。工業(yè)以太網是指在工業(yè)環(huán)境的自動化控制及過程控制中應用的相關組件及技術,工業(yè)以太網多采用TCP/IP協(xié)議,和IEEE802.3標準兼容。溫度是生產過程中重要的物理參數之一,在工業(yè)生產過程中經常要用到溫度的檢測及控制,本文對基于TCP/IP網絡的遠程溫度檢測系統(tǒng)進行了設計,給出了基于TCP/IP以太網的遠程溫度監(jiān)測方案。
1 系統(tǒng)結構
1.1系統(tǒng)物理結構
使用標準的TCP/IP協(xié)議實現現場層與監(jiān)控層的數據傳輸,其中現場層通過連接廠內的傳感器,實時獲取各種信息通過以太網絡傳送至監(jiān)控層,這一層主要由低功耗運行穩(wěn)定的嵌入式實現;監(jiān)控層主要是通過以太網絡連接廠內的現場層的各個數據采集點,將這些信息數據備份,存儲至監(jiān)控系統(tǒng)的數據庫,并在溫度超過警示值時發(fā)出警報。本系統(tǒng)完成了下位機數據采集與上位機數據監(jiān)測的功能,物理結構圖如圖1所示。
圖1 系統(tǒng)物理結構圖
1.2 系統(tǒng)邏輯結構
本系統(tǒng)的溫度信息由數據采集結點通過以太網發(fā)送到監(jiān)控層計算機,并將歷史數據存儲致數據庫服務器,企業(yè)的辦公網絡和外網用戶可通核心路由器訪問數據庫,系統(tǒng)的數據在各層中的流向如圖2所示。
圖2 系統(tǒng)邏輯結構
2 數據采集與發(fā)送端
2.1數字溫度采集點設計
K型熱電偶可以測量固體介質和汽液體蒸氣的表面溫度,其測量范從0℃到1300℃[2]。具有很高的靈敏度和很好的穩(wěn)定性,非線性誤差小,熱電動勢較大,對于復雜環(huán)境下的工業(yè)環(huán)境有很好的適應性等優(yōu)點,因此,在工業(yè)監(jiān)控領域得到廣泛的使用。但是,由于其輸出熱電勢與冷端溫度相關,輸出的數據為模擬量,且與被測量端的溫度有關,因此需要進行溫度補償和模數轉換。如果采用軟件補償的方法,一方面會增加程序編制及調試電路的難度,另一方面,軟件補償會占用一定的數字結點的計算資源,而以太網使用了CSMA/CD,會產生數據傳送過程中的不確定性,影響精度。所以,本系統(tǒng)采用了使用硬件進行溫度補償的方案,采用MAX6675串行模數轉換器對采集的數據進行處理,在進行溫度補償的同時,也提供了信號量為12位分辨率的模數轉換,加強了與控制器數據通信的兼容性[3]。
嵌入式控制器采用Arduino開源硬件平臺,它使用AtmelAVR單片機為核心處理器,采用基于開放源代碼的軟硬件平臺,由于其功耗低、穩(wěn)定性強、開發(fā)周期短等特點,目前被廣泛應用于各個領域,越來越多的工程師選用Arduino平臺進行項目開發(fā),截止到現在,Arduino開發(fā)團隊已開發(fā)出多種控制器??紤]到系統(tǒng)部署后期可能有更多數據采集點的加入,本系統(tǒng)選用的是以Atmega2560核心的ArduinoMega2560控制板(以下簡稱Mega2560),相對于普通的Arduino Uno,Meg2560可用的數字輸入輸出口多達到54個,插接傳感器擴展模塊后的數字I/O可以達到100多個,給系統(tǒng)的升級與擴展帶來極大的便利。
硬件連線如圖3所示,將K型熱電偶連接至MAX6675的接線座上,確保正負兩極連接無誤。分別將MAX6675對應用的電源、地線、SO、CS、SCK端連接至控制器 Mega256上的5V、GNU、數字口5、6、7。
圖3 控制器與MAX675連線圖
2.2以太網通信模塊
由于Mega2560無法直接連接到以太網絡,需要采用包含以太網的Ethernet模塊來實現,本文選用的是集成WIZnetW5100網絡芯片的擴展模塊。W5100 是一款高集成度的網絡通信芯片,全硬件實現標準的TCP/IP 協(xié)議棧、以太網介質傳輸層(MAC)和物理層(PHY),具備了高穩(wěn)定、高性能和低功耗的特點,其數據傳輸速率最高可達100Mbps,由于TCP/IP協(xié)議均在商用與民用領域經過了多年的應用和長足的發(fā)展,相關技術已經十分成熟,資源豐富,極大的縮短了上位機與下位機程序的開發(fā)周期。
根據Mega2560的接口特點,本系統(tǒng)采了采用SPI總線方式與嵌入式控制器進行通信,與Ethernet模塊連接如圖4所示,其接口功能描述為SS:使能信號;SCLK:時鐘信號;MOSI:數據發(fā)送;MISO:數據接收。
圖4 SPI總線連接圖
由于Arduino系列的控制器均采用了相互兼容的可堆疊的標準化設計,Ethernet可以直接插接到Mega2560上不作任何配置,即可進行通信。W5100 內部用于數據傳輸的緩沖存儲器容量有 16KB,完全能夠滿足溫度監(jiān)控數據的本地緩存,使用W5100不需要考慮以太網底層的控制,采用常規(guī)的網絡編程方法即可實現與W5100的以太網通信。通過Mega256引腳圖(圖5)[3]可知,插接了Ethernet模塊后,SPI總線會占用Mega2560控制器的50~53號引腳,因此在使用的時候要注意避開。
圖5 Arduino Mega2560引腳圖
3 軟件設計
3.1 溫度采集點軟件設計
在以太網傳輸中,常用的傳輸控制協(xié)議(TCP)和用戶數據報協(xié)議(UDP)均可以完成下位機到上位機的數據傳輸,但TCP是基于連接的可靠傳輸協(xié)議,能進行錯誤監(jiān)測,鑒于工業(yè)現場對于數據可靠性的要求,所以本文的軟件設計中并未采用傳輸性能較高的UDP協(xié)議。因為,在辦公網絡中一個數據包的丟失可能是無關緊要的,但在工業(yè)現場監(jiān)控中,帶來的影響可能是巨大的。在Arduino標準庫中包含了Ethernet和SPI通信所需要的類與函數,在編寫程序的時候需要包含Ethernet.h、SPI.h和MAX6675.h這三個頭文件。下面是Arduino控制器的程序代碼。
#include “MAX6675.h”
#include “Ethernet.h”
#include “SPI.h”
MAX6675 mySenor(5,6,7); //定義MAX6675類型的傳感器對象mySenor
EthernetServer server(8000); //創(chuàng)建一個服務器對象,并設置網絡傳送端口為8000
Byte mac[]={0XDE,0XAD,0XBE,0XEF,0XEF,0XFE,0XED};//設置Ethernet模塊MAC地址
IPAdress ip{192.168.1.110}; //設置Ethernet模塊IP地址
void setup(){ //初始化各功能模塊
Serial.begin(9600); //設置串口波特率
mySenor.setOffset(0);
Ethernet.begin(mac,ip);
Server.begin();
}
void loop() //控制器循環(huán)操作
{
float sendData=0;
sendData=mySenor.getCelsius(); //從傳感器對象讀取溫度數據
server.print(sendData); //通過網絡發(fā)送數據
Serial.println(sendData); //向串口發(fā)送數據,用于監(jiān)控調試
delay(500); //設置延時
}
3.2 監(jiān)控層軟件設計
在工業(yè)現場的溫度監(jiān)測中,不僅要完成實時溫度數據的監(jiān)測同時也需要將生成的歷史數據進行分析,使用計算機豐富的計算資源以彌補嵌入式控制器的不足,使用虛擬儀器是一很好的選擇,虛擬儀器是將計算機和儀器技術接合的結晶[4],同樣也是測試技術和計算機深層次結合的產物,它具有數據采集與信號分析的功能,本文的監(jiān)控層軟件設計采用了美國國家儀器公司(NI)設計的LabVIEW平臺,LabVIEW的系統(tǒng)的組成[2]如圖6所示。
圖6 LabVIEW系統(tǒng)組成
LabVIEW采用圖形化的G語言進行編程,設置TCP連接地址為下位機的IP地址為192.168.110,通信端口為8000,超時設置為60000毫秒,通過波形控件提供歷史溫度顯示,溫度顯示控件顯示實時溫度,監(jiān)控層的上位機程序代碼如圖7所示。
圖7 上位機程序框圖
4 結語
經測試,本系統(tǒng)能準確的對工業(yè)現場的實時溫度進行顯示和歷史數據的顯示,如圖8所示,可得知當前溫度為200攝氏度,而在過去的500分鐘歷史記錄中發(fā)現系統(tǒng)出現了10次超過溫度警戒值800攝氏度的記錄。該設計充分利用了TCP/IP技術實現了對工業(yè)生產過程的監(jiān)控,進一步提高了各項監(jiān)督工業(yè),有助于現場工程師及時采取應急處理等業(yè)務操作,需要注意的是以太網技術帶來的高數據高實時的同時,也產生了一些網絡安全問題,對于這一問題可通過網關采取包過濾的方法將內部控制網絡與外部網絡系統(tǒng)分開[5]。綜上所述,隨著以太網技術在工業(yè)現場中的逐步推廣和應用,使生產現場數據與企業(yè)信息系統(tǒng)實現無縫對接,在即將到來的第四次工業(yè)革命中,全面實現“數字化工廠”這一宏偉目標[6]。
圖8 LabVIEW程序運行效果圖
參考文獻
[1]徐皚冬.工業(yè)以太網實時通信技術[J].信息與控制,2005,34(1):60-64.
[2]沈金鑫,Arduino與LabVIEW開發(fā)實戰(zhàn)[M].北京:機械工業(yè)出版社,2014:182―187.
[3]開源硬件知識庫[OL].[2014-10-21]. http:///
[4]余成,謝東坡.網絡化測控技術與實現[M].北京:高等教育出版社,2009:194-198.
[5]孫德輝,史運濤,李志軍,楊楊編,網絡化控制系統(tǒng)[M].北京:國防工業(yè)出版社,2008:124―134.
[6]陳積明.工業(yè)以太網的研究現狀及展望[J].化工自動化入儀表,2001,28(6):1-4.
收稿日期:2015-08-08
關鍵詞:“計算機網絡”教學;Wireshark;TCP/IP
“計算機網絡”課程作為計算機科學與技術、網絡工程、通信工程和軟件工程等專業(yè)的主干課,其地位在課程體系群中尤為重要。學習這門課程,最重要的是掌握計算機網絡的原理,了解網絡硬件和軟件的工作機制。計算機網絡基礎理論復雜抽象,概念眾多,對剛開始學習計算機網絡的學生來說,這些概念和協(xié)議是非常難以理解和記憶的。計算機網絡原理主要描述的是各層的功能及其協(xié)議和服務,具體地說就是要理解網絡的相關功能層概念和網絡體系結構(包括OSI參考模型、TCP/IP模型協(xié)議族),以及功能模塊之間的協(xié)議交互[1],這是學好計算機網絡的關鍵。網絡體系結構是計算機網絡及其部件所應完成的功能的精確定義。計算機網絡原理主要講述的就是各層的功能及其協(xié)議和服務。在計算機網絡教學過程中,利用Wireshark網絡探測和分析軟件,通過從網絡中實時捕獲幾種常見協(xié)議數據包并進行分析,使學生對一些協(xié)議的工作原理及結構有了更加深刻的理解和認識[2]。
1Wireshark簡介
Wireshark(原名Ethereal)是目前世界上最受歡迎的協(xié)議分析軟件,利用它可將捕獲到的網絡二進制數據流翻譯為人們容易讀懂和理解的文字和圖表等形式,極大地方便了對網絡活動的監(jiān)測分析和教學實驗。它有十分豐富和強大的統(tǒng)計分析功能,可在Windows,Linux 和UNIX等系統(tǒng)上運行。它允許在一個網絡內部實時捕獲和分析數據包,用戶可以通過圖形界面很直觀地瀏覽捕獲到的數據信息,研究數據包每一層的詳細信息[3]。
學習和理解計算機網絡原理的最好方法是,理論聯(lián)系實際。在一個現實的局域網中,網絡數據流往往是來自不同用戶的各種各樣協(xié)議數據的大混雜,因此利用Wireshark的“捕獲過濾器”和“顯示過濾器”,從錯綜復雜的數據流中迅速提取自己所關心的網絡信息,了解和掌握網絡的工作原理和協(xié)議的交互過程。
Wireshark使用目的是網絡管理員使用Wireshark來檢測網絡問題、網絡安全工程師使用Wireshark來檢查資訊安全相關問題、開發(fā)者使用Wireshark來為新的通訊協(xié)議除錯、普通使用者使用Wireshark來學習網絡協(xié)議的相關知識等。
2用Wireshark分析網絡協(xié)議
網絡協(xié)議是網絡上所有設備(網絡服務器、計算機及交換機、路由器、防火墻等)之間通信規(guī)則的集合,它定義了通信時信息必須采用的格式和這些格式的意義。TCP/IP(Transmission Control Protocol / Internet Protocol),即傳輸控制協(xié)議/互聯(lián)網協(xié)議是不同操作系統(tǒng)的計算機網絡互連的通用協(xié)議,它是一組計算機通信協(xié)議族,其中最著名的兩個協(xié)議是TCP及IP協(xié)議。TCP/IP協(xié)議具有開放式互聯(lián)環(huán)境,很容易實現各種局域網和廣域網的集成式互聯(lián)。此協(xié)議是當今技術最成熟、應用最廣泛的網絡協(xié)議[4]。
TCP是一種面向連接的、可靠的運輸層協(xié)議,TCP數據傳輸(只有連接建立后才可進行數據傳輸)需要通過在客戶端和服務器端建立特定的虛電路連接來完成,該過程通常被稱為“三次握手”,即發(fā)送方先發(fā)送連接請求,然后接收方進行連接確認,最后發(fā)送方對接收方的確認再次進行確認(圖1)。下面就以Wireshark對 TCP連接建立交互過程的數據包捕獲分析為例,來說明對TCP/IP協(xié)議實現的分析。
2.1建立捕獲TCP連接報文的實驗環(huán)境
PCATTCP是一款不錯的測試局域網網絡速度的軟件。在局域網中,兩臺主機通過交換機連接起來。在服務器端和客戶端都安裝和運行PCATTCP進行通信,產生TCP流。啟動Wireshark進行數據包捕獲,單擊CaptureInterfaces菜單,選擇自己的網卡,選擇Start開始監(jiān)控流量。在服務器端運行ttcp,監(jiān)聽TCP的5001端口。圖2是服務器端的完整命令行輸出:
服務器配置好后,在客戶端運行ttcp,雙方開始通信。
2.2TCP報文分析
2.2.1客戶端發(fā)送連接請求
捕捉到的TCP 連接報文如圖3所示。
從圖3可以看出,客戶端發(fā)出的連接請求數據包封裝了三個頭信息:以太網(Ethernet)幀、IP數據報和TCP報文段。在數據鏈路層,數據以幀的方式進行傳輸。在網絡層,加工的主要數據對象是IP數據報。IP協(xié)議是TCP/IP協(xié)議族中的核心協(xié)議之一,所有的TCP、UDP、ICMP數據都以IP數據報格式傳輸。
在運輸層,主要數據對象是TCP報文??蛻舳税l(fā)送的連接請求如圖4所示。
第一條報文是沒有數據的TCP報文段,并且將首部的SYN位設置為1。因此,第一條報文常常被稱為SYN分組。這個報文段里的序列號是由系統(tǒng)隨機設置的數值,表示客戶端為后續(xù)報文設定的起始編號。此TCP報文段,序列號SEQ在連接請求時相對初始值是0,其實際值是c9 f4 65 c2;確認號是00 00 00 00,ACK標志為0表明確認號被忽略。SYN=1表示正在進行連接請求,通過SYN和ACK也可以用來區(qū)分Connection Request和Connection Accepted,在連接請求中,SYN=1、ACK=0,連接響應時,SYN=1、ACK=1。
SYN分組通常是從客戶端發(fā)送到服務器端。這個報文段請求建立連接。因為一旦成功建立連接,服務器進程必須已經在監(jiān)聽SYN分組所指示的IP地址和端口號[5]。如果沒有建立連接,SYN分組將不會應答。如果第一個分組丟失了,客戶端通常會發(fā)送若干個SYN分組,如果多次嘗試不成功,客戶端將會停止并報告一個錯誤給應用程序。
2.2.2服務端連接響應
當服務器接收到連接請求時,就對請求方進行響應,以確認收到客戶端的第一個TCP報文段。響應的報文段SYN位和ACK位都將置1。通常稱這個報文段為SYNACK分組。SYNACK分組在確認收到SYN分組的同時也發(fā)出一個初始的數據流序列號,表示服務器發(fā)向客戶端的數據序號,它不需要與剛才客戶端發(fā)來的數據流的序列號相匹配。服務器端響應的數據包如圖5所示。
此數據包的起始序列號SEQ在協(xié)議框中顯示為0,在原始框中的實際值為63 cf 1a c9。所有初始序列號邏輯上都視同為序列號0。ACK標志為1表明確認號有效,SYN仍然為1。
圖6中確認號在協(xié)議框中顯示為1,在原始框中的值為c9 f4 65 c3(比c9 f4 65 c2多1)。這解釋了TCP的確認模式,TCP接收端確認第X個字節(jié)已經收到,并通過設置確認號為X+1來表明期望收到的下一個字節(jié)號。
2.2.3客戶端連接確認
在TCP連接建立的最后階段,客戶端對接收到數據包的服務器端進行確認,到此為止建立完整的TCP連接,開始全雙工模式的數據傳輸過程??蛻舳耸盏椒掌鞫舜_認后,發(fā)送帶有ACK標志的TCP報文段來完成三次握手的過程[6]。這個報文段將確認服務器端發(fā)送的SYNACK分組,并檢查TCP連接的兩端是否正確地打開和運作。
如圖7所示,在確認階段,數據包由客戶端發(fā)送至服務器端,TCP中的序列號為c9 f4 65 c3(即上次服務器響應報文的確認號)。
圖8中,報文段的本次確認號為63 cf 1a ca(即上次的序列號加1)表示客戶端下一次希望從主機接收的數據的起始位置。ACK標志為1表明確認號有效,SYN置為0表示連接建立結束。連接建立后,雙方可以根據各自的窗口尺寸開始傳輸數據。
2.3小結
從以上的圖可以看出,利用Wireshark可以針對每一數據包,完成從鏈路層、網絡層、運輸層到應用層的協(xié)議解析。通過上面步驟,可以更加直觀的觀察到TCP三次握手建立的過程,有助于理解TCP及其工作原理,掌握協(xié)議的語法細節(jié)。
3結語
計算機網絡基本理論復雜抽象,不易理解,但這部分內容又是進一步學習“計算機網絡”課程,培養(yǎng)實踐應用能力的基礎。在教學過程中,通過合理組織授課內容,采用先進的教學方法和較為科學的教學手段,使學生能夠較好地掌握計算機網絡的基本理論和方法。利用Wireshark網絡協(xié)議分析軟件,進行網絡性能參數和數據代碼的捕獲分析,了解協(xié)議的封裝結構、交互過程,對于計算機網絡教學有很大的幫助。
參考文獻:
[1] 謝希仁. 計算機網絡[M]. 大連:大連理工大學出版社,2004.
[2] 楊春勇,潘文君,朱翠濤. 計算機網絡課程教學及輔助教學方法研究[J]. 高等函授學報:自然科學版,2008,21(6):12-14.
[3] Angela Orebaugh,Gilbert Ramirez,Jay Beale. Wireshark & Ethereal Network Protocol Analyzer Toolkit[M]. Burlington:Syngress Press,2006.
[4] Forouzan.B.A. TCP/IP協(xié)議族[M]. 3版. 謝希仁,等譯. 北京:清華大學出版社,2006.
[5] 蔣波,李方軍,郝軍. 數據包的截獲與網絡協(xié)議分析[J]. 重慶三峽學院學報,2006,22(3):26-28.
[6] Miller D. 數據通訊與網絡[M]. 鄧勸生,薛建新,王涌,譯. 北京:清華大學出版社,2007.
The Application of Wireshark in TCP/IP Network Protocol Teaching
PAN Wen-chan, ZHANG Yun
(College of Computer Science, Nanjing University of Posts and Telecommunications, Nanjing 210003, China)
亞當·斯密進行的是具體的動機-行為分析,哈耶克則通過抽象的行為-規(guī)則分析,來研究自生自發(fā)秩序。哈耶克把人的“天賦”/“傾向”和“才能”,統(tǒng)統(tǒng)看作“個人知識”。亞當·斯密所分析的是人在自利心和自然傾向的驅動下,通過交易而產生的分工秩序,哈耶克分析的則是人類在每個人的個人知識基礎上不斷擴大的合作的擴展秩序。哈耶克的規(guī)則分析不再以顧客和面包師之間的交易行為為中心,而是轉向交易規(guī)則的研究,這種研究必然是歷史的和社會的。
哈耶克對自生自發(fā)秩序的研究建立在對三種行動和知識的關系的分析上:
1、個人行動與他人知識的關系:一個人無法替他人決策,因為他無法占有他人的全部個人知識,而這種個人知識是和他人特定的時空情景結合在一起的。
2、個人的行動與他自己的知識的關系:一個人無法甚至確切地知道他自己所擁有的知識。對自己的行為,他可能也是“知其然”(know what)而不“知其所以然”(know how)。
3、個人的行動和整個文明累積的知識的關系:一個人對他依照從事的那一套文明社會的普遍抽象規(guī)則并不能確切的知道和清晰地表述。這里的普遍抽象規(guī)則就是哈耶克意義上的法律,國會或政府的立法并不一定是這種普遍抽象規(guī)則的確切表述。這就是哈耶克所謂“法與立法”的二元觀。
“法與立法”的二元觀帶來很多意涵。在哈耶克看來,普通法是一種典型的自生自發(fā)秩序。普通法法理學認為,規(guī)則并不是制定的,而是發(fā)現的。制定法只是法律淵源之一,而不是法本身,法官要通過法律解釋和法律推理來發(fā)現適用于具體個案的規(guī)則。先例制度保證了,正確的解釋和推理可以被挑選出來,錯誤的、不適當的解釋和推理能夠被剔除,因此普通法是一個不斷進化的法律體系,就像民族語言一樣。
互聯(lián)網是最新的自生自發(fā)秩序的例子。這一點可以通過TCP/IP協(xié)議的“發(fā)現”過程來說明:
1、1969年9月,美國加州大學洛杉磯分校第一次把接口信號處理器(IMP)和主機連接起來。1969年12月擴展到4個節(jié)點。1969年4月,克洛克發(fā)表第一份RFC(征求意見稿),此后成為互聯(lián)網上開放標準的主要形成方。每個人都可以通過RFC提出建議標準(proposal standard),試行6個月以上,至少開發(fā)兩種實現,并不斷測試,解決所有問題,然后可以變?yōu)椴莅笜藴剩╠raftstandard),保持4個月,開發(fā)和測試更多的實現,才有可能成為互聯(lián)網標準(Internetstandard)。1970年12月,克洛克領導網絡工作小組制定出最初的主機-主機協(xié)議NCP.
2、1974年,文頓·瑟夫發(fā)表“分組網絡互連的一個協(xié)議”,提出TCP協(xié)議。后來分成TCP和IP兩個協(xié)議,合稱TCP/IP.目前,TCP/IP已經發(fā)展成一個分層的協(xié)議簇,包含著上千個協(xié)議。現在的協(xié)議的標準化由互聯(lián)網協(xié)會協(xié)調維護,由志愿者組成的IAB(Internet ArchitectureBoard)是ISOC的技術顧問組。這是一個非官方的完全公開的自愿組織,任何人都可以成為它的會員,參與其討論,參加它的郵件列表沒有任何限制。
3、1983年1月1日,NCP由于沒有TCP/IP強大,停止使用。
4、80年代,TCP/IP遇到了官方的挑戰(zhàn)。ISO(國際標準化組織)正式提出了一個官方的協(xié)議OSI.OSI雖然得到了美國、歐洲政府的支持,但過于學術化,而且沒有得到實際應用的檢驗。在這場官方標準和事實上的工業(yè)標準之爭中,開放自由的TCP/IP標準戰(zhàn)勝了官方標準OSI.
上述事實可以給我們許多啟示。TCP/IP是一種自由開放的標準,不斷地被人們發(fā)現,不斷地優(yōu)勝劣汰-甚至淘汰官方制定的標準,并且不斷地演化。在互聯(lián)網這個自生自發(fā)秩序中,“標準只能被發(fā)現,不能被制定”。
中國互聯(lián)網近些年來發(fā)展迅速。從官方到民間一直有呼聲對互聯(lián)網的發(fā)展進行規(guī)制。最近中國政府出臺了一系列的行政法規(guī)和行政規(guī)章:9月25日,國務院《電信條例》和《互聯(lián)網信息服務管理辦法》;11月6日,信息產業(yè)部《互聯(lián)網電子公告服務管理規(guī)定》;同日,信息產業(yè)部、國務院新聞辦《互聯(lián)網網站從事登載新聞業(yè)務管理暫行規(guī)定》。這些著眼于貫徹政府意志的行政法規(guī)和規(guī)章對中國的互聯(lián)網發(fā)展帶來沉重打擊。
不過,中國的互聯(lián)網法律有制定的部分,也有“發(fā)現”的部分,當前人們討論的基本只是中國互聯(lián)網制定的這一部分,往往忽視可能價值更高的“發(fā)現”的那一部分。近來中國有一系列關于互聯(lián)網的法律糾紛。由于沒有現成的法律,對這些案子的判決都需要法官去發(fā)現規(guī)則。比如,在易家訴國網案中,法官確定了“對將知名商標注冊為域名構成域名搶注”。在陳衛(wèi)華訴成都《電腦商情報》案中,法官提出了確定網絡作品的作者的方法。在瑞得(集團)公司訴宜賓市翠屏區(qū)東方信息服務有限公司著作權侵權糾紛案中,法官界定了“網頁是著作權意義上的作品”,以及互聯(lián)網上著作權侵權的司法管轄原則(服務器所在地及終端計算機所在地均可視為復制行為的行為地,瑞得選擇自己服務器所在地的北京市海淀區(qū)人民法院起訴原在四川的東方公司侵犯著作權并無不當)。在王蒙等六作家訴首都在線案中,法官確定了“網絡傳播是使用作品的一種方式,作品傳播方式的不同,并不影響著作權人對其作品傳播的控制權利?!痹凇洞髮W生》雜志社訴263和李翔個人網頁侵權案中,法官確定提供個人主頁服務的網絡服務提供商的責任。
【關鍵詞】 圖像數據 數據傳輸 TCP/IP
在印刷圖像在線檢測系統(tǒng)中,為了提高系統(tǒng)圖像處理運算能力,同時實現對系統(tǒng)的有效管理,通常采用將運算處理單元同系統(tǒng)管理與顯示單元分開的方法,即采用服務器客戶端的分布式系統(tǒng)結構,服務器與客戶端之間通過網絡連接,按照一定的網絡協(xié)議實現數據通訊與圖像數據傳輸功能。
一、 基于 TCP/IP 協(xié)議的數據通訊與圖像數據傳輸方法
作為目前廣泛采用的一組完整的網絡協(xié)議,TCP/IP 協(xié)議的傳輸層協(xié)議為用戶提供了用于虛電路服務及數據傳輸可靠性檢查的傳送控制協(xié)議(TCP)和用于數據傳送的數據報協(xié)議(UDP)。同時,Socket 的出現,為用戶提供了基于 TCP/ IP 網絡應用編程接口。
在利用 Socket 進行通信時,有兩種主要方式:一種叫做流方式(Stream Socket),也稱面向連接方式,在這種方式下兩個通信的應用程序之間先要建立一種虛擬的連接,只有連接建立以后才能開始傳輸數據,這種方式對應的是 TCP 協(xié)議。
第二種叫數據報文方式(Datagram Socket),又稱無連接方式,在這種方式下,數據在傳送過程中有可能會丟失,而且,后發(fā)出的數據也有可能先收到。由于本系統(tǒng)的客戶端與服務器端間的通訊對實時性、快速性和可靠性的要求非常高,傳輸效率將會影響到檢測過程所消耗的時間,過多的時間消耗會導致系統(tǒng)檢測精度的降低,同時會對圖像的后續(xù)處理產生影響;錯誤的或者順序顛倒的數據信息可能會帶來很嚴重的后果。
因此,采用 TCP 協(xié)議可以在連接虛電路建立后消除隱含在建立客戶機/服務器間通訊時的非對稱性,保證通訊兩端的對等數據通信和圖像數據的準確傳輸。
二、基于 TCP 協(xié)議和 Csocket 類的網絡通信實現
在基于 TCP 協(xié)議的網絡通信的實現過程中,采用Microsoft Visual C++ 的MFC 類庫中提供的 CSocket 類,采取面向連接的流方式實現了客戶端與服務器端之間的實時通訊。其服務器與客戶端的進程。系統(tǒng)通信的工作過程如下: 在印刷圖像在線檢測系統(tǒng)中,上位機作為服務器,調用Listen () 函數進行監(jiān)聽,等待下位機的連接;下位機作為客戶機,當某一客戶機要聯(lián)通上位機時,調用Connect() 函 數主 動 進 行連接。
客戶端在連通服務器之前先發(fā)送連通請求,并把包括站名、IP 地址、端口地址等客戶機信息發(fā)送到服務器。服務器端對進行連接請求的身份確認,若身份不符則主動中斷連接;若身份得到確認則允許連接并發(fā)送確認信息到客戶端,開始接收由客戶端上傳的數據。
三、網絡連接狀態(tài)的在線診斷
在印刷圖像在線檢測系統(tǒng)的實際檢測過程中,會出現這樣一種情況:服務器端不能實時獲得檢測對象的缺陷數據,而此時系統(tǒng)軟件亦沒有捕捉到任何異常,從而導致整個系統(tǒng)缺陷檢測與缺陷分類功能的失效。因此,為了保證網絡的正常工作,需要對網絡進行在線化檢測,從而能夠網絡及時進行修復。
引起該檢測失效故障的可能原因很多,最可能的一種原因是:應用程序的其他部件都處于正常運行狀態(tài),客戶端已經檢測到產品缺陷,而服務器端顯示的卻是之前檢測到的缺陷數據,即檢測系統(tǒng)的網絡通訊功能 失 效 , Client Socket和CSever Socket 之間丟失有效連接,導致客戶端采集到的缺陷數據不能實時地上傳到服務器端,或者由于某種原因延遲一段時間,同客戶端機之后所檢測到缺陷數據一起上傳至服務器端,導致缺陷的誤報與漏報。為了診斷服務器端 Csever Socket 與客戶端 Client Socket 之間是否建立有連接,有兩種可能的方法:
(1) 在服務器端設置定時器,定時向每個客戶端發(fā)送測試信息,若客戶端能夠及時返回確認信息,則證明服務器與客戶端之間建立有連接;否則服務器端會繼續(xù)向客戶端發(fā)送測試信息,若服務器端在第 n 次(n 值由用戶設置)發(fā)測試信息之前收到客戶端的確認信息,仍然認為服務器與客戶端之間建立有連接;若超過 n 次,則認為二者之間已經斷開連接。
(2) 在每個客戶機端都設置定時器,定時向服務器端發(fā)送測試信息,若服務器端能夠及時返回確認信息,則證明服務器與客戶端之間建立有連接;否則客戶機會繼續(xù)向服務器端發(fā)送測試信息,若客戶端在第 n 次發(fā)測試信息之前收到服務器端的確認信息,仍然認為服務器與客戶端之間建立有連接;若超過 n 次,則認為二者之間已經斷開連接。
關鍵詞:流控制傳輸協(xié)議;多地址;多流;關聯(lián)
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)28-0067-03
The Research of Stream Control Transport Protocol
XIONG Wei1,2
(1.Department of Computer Engineering,Chongqing University,Chongqing 400044,China;work and Information Security Center,Chongqing Institute of Communication,Chongqing 400035,China)
Abstract: SCTP(Stream Control Transport Protocol),standardized by the Internet Engineering Task Force(IETF)is a new general-purpose transport protocol which fit to transmit stream media because of it’s new advantages such as multi-stream transport, unordered deliver and so on. In this issue, we describe the design an operation of SCTP, includes the basic datagram format and the concept of Chunk, Association, Stream, etcetera.
Key words: SCTP; multi-homing; mulit-streaming; association
1 引言
隨著高速網絡的發(fā)展和新需求的出現,現代網絡面臨的核心問題是多媒體數據業(yè)務和實時通信量的傳輸,以及如何為這些業(yè)務提供相應的服務質量保證。基于IP的包交換網絡為了支持多媒體等流式通信量采用了多種技術:如采用高性能的交換機和路由器提升網絡容量、IP多播傳輸、允許用戶預留網絡容量,并為各種業(yè)務類型分配優(yōu)先級以及新的運輸層協(xié)議等,前三者都是網絡層的功能,而運輸層協(xié)議則是通過運輸層通信端點之間的協(xié)作來為多媒體網絡應用服務。傳統(tǒng)的傳輸層協(xié)議TCP由于嚴格的順序遞交和確認重傳帶來了額外的傳輸流量和較大的時延,UDP又因為過于簡單,缺少必要的可靠傳輸保證,容易導致網絡擁塞甚至崩潰。流控制傳輸協(xié)議SCTP(Stream Control Transport Protocol),作為一種新的協(xié)議,利用其新特性在可靠服務和傳輸效率之間取得平衡,達到應用所期望的性能。
2 SCTP(Stream Control Transport Protocol)的基本特性
SCTP是在IP網絡上使用的一種可靠的通用傳輸層協(xié)議。盡管SCTP協(xié)議最初是為發(fā)送電話信號而設計的(RFC 2960),但帶來了一個意外的收獲:它通過借鑒 UDP 的優(yōu)點解決了TCP的某些局限。經過不斷的研究和擴展,SCTP已經逐漸發(fā)展成為一種通用的傳輸層協(xié)議,并在許多網絡操作系統(tǒng)如BSD,Linux中得到了初步實現。SCTP除了具有TCP同樣的功能之外,還具有更新的設計思想和更靈活的數據包格式,能更好的擴展以滿足某些應用的需求。其主要特征如下:
1) 內建多地址主機支持:SCTP中的一對連接稱為關聯(lián)(Association),關聯(lián)兩端的主機節(jié)點(Endpoint)可以有多個網絡地址,從而使一個SCTP關聯(lián)可以通過多條網絡路徑進行數據傳輸,見圖1。
2) 保留應用層消息邊界:SCTP保留上層數據信息的邊界,上層數據信息稱為“消息”,傳輸的基本單位為有意義的數據段。
3) 單個關聯(lián)(Association)多流機制:SCTP允許用戶在每個關聯(lián)中定義子流,數據在子流內按序傳輸。
3 SCTP的數據包格式
SCTP提供了靈活的數據塊格式,每個SCTP數據報都由一個Common Header(基本首部)和若干Chunk(數據塊)組成。
圖2左邊顯示了SCTP的基本數據報文格式。其中基本首部提供了源端口和目的端口,用于完成典型的傳輸層協(xié)議端口復用功能,驗證標記對一個SCTP連接提供安全驗證,保存著在SCTP通過握手建立連接時第一次交換的初始標簽的值。在一次連接中,任何SCTP數據包若不包含這樣一個標簽,到達時會被接收端丟棄。校驗和是對整個數據包的校驗。在首部后是一系列Chunks(塊)。Chunk是組成SCTP報文的基本結構,有多種類型,不同類型的塊可用來傳輸不同的控制信息或數據;同時首部中的flags標記字段提供了額外的控制信息。豐富的Chunk類型使SCTP可以采用不同類型的Chunk實現各種傳輸控制機制。
4 SCTP的消息(message)和流(stream)
下面給出SCTP協(xié)議中數據的基本載體數據塊的格式描述,如圖3。
SCTP協(xié)議將上層數據信息稱為用戶消息(user message),在傳輸中SCTP保留上層數據信息的邊界,傳輸的基本單位為有意義的數據段。因此SCTP稱為“面向消息”的傳輸協(xié)議。
SCTP提出了數據流的概念,如圖4所示,每個數據塊中不僅有傳輸序號TSN,還攜帶了流標識SID(Stream ID)和流序號SSN(Stream Sequence Number)。用戶可以在一個連接中建立多個流,每個流分配一個SID,每個流隊列中的用戶數據由流序號SSN表明順序。在SCTP中引入一個連接多個流的機制解決了使用TCP傳輸時出現的隊首阻塞問題。允許某些應用程序根據需求將邏輯上不相關的數據分離為多個流進行傳輸往往很有意義,如一個多媒體視頻會議系統(tǒng)中的多路語音信號在各自的流中傳輸,彼此之間不會互相阻塞。
如圖4所示,節(jié)點根據應用程序的要求維護不同的發(fā)送隊列,當接到上層的消息后根據MTU等網絡情況決定是否拆解并轉化為Data Chunk進行傳輸。并且將會設置Data Chunk中flags字段的相應位,flags字段共三位,其中的U位為是否按序遞交用戶消息的標志,B,E位分別代表本Data Chunk包含一個用戶消息的開始或結束,如果本數據塊包含一條完整的用戶消息,則BE都置為1,如包含消息中間的內容則都置為0。連接的對端收到DataChunk后根據流序號SSN和flags字段重組用戶消息交給應用層。
SCTP提供按序遞交和無序遞交兩種選擇,Data Chunk中的flags字段中的U位就表明了該數據所需要的服務是按序遞交或是無序遞交。當采用無序遞交時,SCTP就具有了類似UDP的一些特征,能夠盡快的將數據發(fā)往上層,適用于一些實時應用。
實際上,通過引入流和無序遞交機制,SCTP實現了嚴格有序傳輸(類似TCP),部分有序傳輸(部分流內無序遞交)和無序傳輸(類似UDP)。
5 SCTP的基本傳輸機制
5.1 連接的建立
SCTP在傳輸前首先建立連接,稱為一個關聯(lián),通過四次握手,兩端SCTP主機交換地址信息和其他通信狀態(tài)。如圖5所示。
請求連接者發(fā)出INIT請求,INIT消息的接收端不必保存任何狀態(tài)信息或者分配任何資源,這樣就可防范SYN Flooding等DoS攻擊。它在發(fā)送響應INIT的INIT-ACK消息時,采用了一種機制―“狀態(tài)Cookie”,該Cookie具有發(fā)送端要建立連接所需的全部信息。
INIT和INIT-ACK都必須包含建立初始狀態(tài)所需的參數:一組IP地址,初始TSN,被接收的SCTP包中必須含有的初始標簽,每一端請求發(fā)出的流數目和每一端能支持接收的流數目。交換完這些消息之后,INIT的發(fā)送端以COOKIE-ECHO消息的方式發(fā)送回狀態(tài)Cookie。接收端根據所接收到的COOKIE-ECHO中的狀態(tài)Cookie,完整地重建自己的狀態(tài),并回送COOKIE-ACK來確認關聯(lián)已建立。注意COOKIE-ECHO和COOKIE-ACK都可將用戶數據消息綁定到各自的包中,可以加快數據的發(fā)送。
5.2 傳輸過程
在建立連接以后,接收方收到數據要發(fā)回確認,接收方維護一個累計已確認數據序號Cm-TSN(Cumulative Transport Sequence Number),定時器到期未收到確認則重傳數據包,因此SCTP和TCP一樣,可以提供有連接的可靠傳輸服務。通過對數據攜帶的一個傳輸序號TSN(Transport Sequence Number)進行選擇確認(Selective ACK)。如圖6。
在SCTP中,TSN保證整個關聯(lián)的可靠性,而SID/SSN保證整個流的有序性,實現了在傳輸中將數據的可靠性與有序性獨立分開。TSN類似于TCP中的確認序號,然而在TCP中,確認序號既用于確認保證可靠傳輸,又用于接收方排序,而在SCTP中TSN與SID/SSN各司其職。
SCTP可以在一個連接中傳輸多條數據流,允許應用程序根據需要傳輸多個性質不同的流,而接收方對每個流按其SID/SSN進行處理,互不干擾,當一個流正在等待下一個非順序的用戶消息時,其他流的發(fā)送會繼續(xù)。
對于數據包丟失的發(fā)現,SCTP即使發(fā)現接收序號有缺口或順序錯亂,仍會發(fā)送后面的數據。從圖6可以看出,當序號為7的數據未到達時,發(fā)送端依然進行后續(xù)包的傳送。
SCTP選擇確認的特點還在于SACK Chunk的設計,實際上TCP的ACK機制也能提供一定的選擇確認信息,然而SCTP的SACK機制通過SACK Chunk提供了更多的數據確認信息。圖7顯示了SACK Chunk的格式。
如圖7所示,在SCTP SACK確認塊中包含了在一定的時間內盡可能多的信息,將已收到的連續(xù)數據稱為Gap,通過若干包含起始和終止傳輸序號(TSN)的Gap字段表示那些已收到的連續(xù)數據塊,通過若干Duplicate TSN字段表示每個重復收到的數據包,當對方端點接收到SACK Chunk后就可以根據這些信息做出是否重傳或調整發(fā)送窗口,清空緩存等工作。
6 SCTP的多地址和多路徑支持
SCTP通過多地址支持實現傳輸的路徑冗余。當連接中至少有一個端點使用多個IP地址時,就形成了多條可能的傳輸路徑,其中主要使用一條作為主傳輸路徑,其他的作為冗余路徑在必要時啟用。具體過程如下:
通信方在發(fā)送的INIT或INIT-ACK消息中列出自己所具有的IP地址,通過一定的機制選擇特定的一對地址形成的地址對(pair)作為主路徑進行數據傳輸,其余可能的地址對作為冗余路徑。
在傳輸的過程中定時利用Heartbeat/HeartbeatACK消息塊來監(jiān)測和更新主路徑和冗余路徑的路徑狀態(tài)(active或inactive)。具體操作是通過統(tǒng)計每條路徑上的數據傳輸次數(包括DATA和HEARTBEAT),如果次數達到一定的上限,該路徑的狀態(tài)就成為inactive??梢赃x用另一路徑用于傳輸,實現了網絡層的容錯。
在SCTP目前的研究和實現中多路徑特性只用于網絡容錯,也就是主路徑失效時啟動備份路徑,更進一步的考慮是利用SCTP的多址特性實現負載分擔(LoadSharing)。
7 SCTP的可擴展性
作為一個仍在發(fā)展和改進的協(xié)議,SCTP的設計者從設計之初就充分考慮了協(xié)議的可擴展性。下面簡單分析SCTP的一個具體擴展:確認序號移動通告。
多媒體數據的特點是可以允許少量數據的丟失,對重傳引入的延時和效率問題十分敏感。例如在流媒體視頻傳輸中,遲到的重傳數據往往已經無效,重傳就沒有必要。為在可靠性和實時性之間取得平衡,SCTP引入了一種新的Chunk類型(見圖8),稱為“確認序號移動通告”(Forward Cumulative TSN chunk)。
在采用PR-SCTP的系統(tǒng)中,發(fā)送方在接收方請求重傳時將根據一定的策略,決定是否有必要重傳該數據,如果發(fā)送方認為數據不太重要或已經過時,則發(fā)送確認序號移動通告Fwd-CmTSN,指示接收方修改累計確認序號Cm-TSN,接收方在收到確認序號移動通告時則會向前增大Cm-ACK的值,放棄該數據,不再請求重傳而繼續(xù)后續(xù)數據的傳輸。由于STCP中TSN只負責重傳保證可靠傳輸,為了通知接收方哪些數據已放棄,確認序號移動通告中還可以攜帶這些放棄數據的流號和流序號。
確認序號移動通告保留了確認重傳機制的同時,“跳過”某些(不太重要的)數據,實現了部分可靠的傳輸,為某些不需要完全可靠傳輸的應用程序提供了很大的靈活性。
8 結束語
總之,作為一種新的傳輸層協(xié)議,SCTP和傳統(tǒng)協(xié)議相比有更多的優(yōu)點。從2000年10月份才成為RFC規(guī)范以后,開始進入所有的主流操作系統(tǒng),包括 GNU/Linux、BSD和Solaris。在Microsoft?R Windows?R 操作系統(tǒng)上也有第三方的商業(yè)包可以使用。在獲得高可用性的同時,應用程序也已經開始使用SCTP作為自己的主要傳輸機制。諸如FTP和HTTP之類的傳統(tǒng)應用程序已經在SCTP的特性基礎上進行了構建。其他一些協(xié)議也正在開始使用SCTP,例如會話初始化協(xié)議(Session Initiation Protocol,SIP)和通用通道信號系統(tǒng)7(SS7)。在商業(yè)領域中,也可以在Cisco的IOS中找到SCTP的影子。
隨著SCTP被吸納到2.6版本的Linux內核中,現在可以構建并部署高可用性、高可靠性的網絡應用程序。作為一種基于IP的協(xié)議,SCTP不但可以無縫地替換TCP和UDP,而且擴展了很多新服務,并且對安全性也有了很大的提高。從發(fā)展的趨勢來看,SCTP它提供了更加高效和適用的傳輸機制,有重要的研究意義和廣闊的發(fā)展前景。
參考文獻: