摘要:TCP/IP協議(Transmission Control Protocol/Internet Protocol)是目前最成功的網絡通信協議,它被用于當今所構筑的最大的開放式網絡系統Internet之上就是其成功的證明。TCP/IP協議具有廣泛的兼容性和可伸縮性,可連接不同的計算機網絡協議、不同的網絡設備。TCP/IP事實上己成為網絡互聯的標準,并成為支持Internet/Intranet的協議標淮。本文就是針對當前流行的TCP/IP網絡通信協議的實現進行了具體的研究和探討。
關鍵詞:TCP/IP協議;Internet;網絡通信
1 前言
TCP/IP初步架構的出現源于1964年,冷戰時期美國國防部高級研究計劃局DARPA提出ARPANET研究計劃,目的是希望美國國防部的很多主機、通信控制處理機和通信線路在戰爭中,如部分遭到攻擊而損壞時,其它部分還能正常工作,同時它希望適應從文件傳送到實時數據傳輸的各種應用需求,因此它要求的是一種靈活的網絡體系結構,實現異型網的互聯(Interconection)與互通(Intercomunication)。
最初ARPANET使用的是租用線路。當衛星通信系統與通信網發展起來之后,ARPANET最初開發的網絡協議NCP (Net Control Protocol,網絡控制協議)因其在通信可靠性較差的通信子網中出現了不少問題,導致了新的網絡協議TCP/IP的出現。雖然TCP協議和IP協議都不是OSI標準,但它們是目前最流行的商業化的協議,并被公認為當前的工業標準或“事實上的標準”。1974年,Kahn最早定義出了的TCP/IP參考模型(TCP/IP Reference Model ); 1985年由Leiner等人對該模型做了進一步的研究;1988年Clark對該模型的設計思想進行了討論。
今天,Internet己經發展得更加商業化,更加面向消費者,盡管基本目的發生了改變,但其最初的質量標準(也就是開放式、抗毀性和可靠性)依然是必需的。這些特性包括可靠傳輸數據、自動檢測、避免網絡發生錯誤等。更重要的就是TCP/IP是一個開放式的通信協議,開放性就意味著在任何組合間,不管這些設備的物理特征有多大差異,都可以進行通信。
2 標準TCP/IP協議
如同OSI參考模型一樣,TCP/IP也是一種分層模型。與OSI參考模型不同的是,TCP/IP參考模型更側重于互聯設備間的數據傳送,而不是嚴格的功能層次劃分。TCP/IP通過解釋功能層次分布的重要性來做到這一點,但它仍為設計者具體實現協議留下很大的余地。因此,OSI參考模型適用于解釋互聯網絡的通信機制,而TCP/IP更適合做互聯網絡協議的市場標準。
TCP/IP協議是一套把因特網上的各種系統互聯起來的協議組,可以保證因特網上數據準確又快速地傳輸。TCP/IP協議是一個很大的協議族,通常表示為一個簡化的四層模型。這四層分別是應用層、傳輸層、網絡層和鏈路層。其中一些常用協議在TCP/IP分層模型中所處的位置如圖1所示。

圖1TCP/IP層次結構圖
3IP協議的實現
3.1 IP數據報格式
IP ( Internet Protocol,互聯網協議)是TCP/IP協議中一個最重要的協議。IP數據報以32比特為一個計數單位(組),其格式如圖2所示。

圖21P數據報格式
3.2IP協議的軟件實現
IP是TCP/IP協議中最為核心的協議。所有的數據都以IP數據報格式傳輸。IP協議可以實現無連接數據報傳送、數據報路由選擇和差錯控制的功能。在本課題中,由于單片機資源有限,結合實際需要只實現了IP數據報傳送和接收,沒有實現路由選擇算法和差錯控制,同時也不支持IP數據報的分片和重組。
IP協議主要通過IP接收函數和IP發送函數兩個函數實現。
①IP發送函數
void ip_send對來自上層的數據,按照IP數據報的結構構造數據報。通過調用ARP處理程序解析對應IP的物理地址。若返回NULL值,則將數據存入一個已定義的結構體WAITE中,并發送ARP請求。若返回對應IP的物理地址,則將數據交給底層以太網驅動程序處理。
②IP接收函數
void ip rcve (UCHAR xdata*inbuf)單片機收到數據包之后,應先對數據包的類型進行判斷。如果是IP數據報,則調用該程序。接著再判斷其數據域中所使用的協議類型,是ICMP協議調用ICMP處理子程序,是UDP協議調用UDP處理子程序,是TCP協議調用TCP處理子程序,其它返回。程序流程圖如圖3所示:

圖3IP接收過程流程圖
3.3 校驗和算法
在大多數TCP/IP協議中采用的差錯檢驗方法是校驗和,校驗和是在分組上附加的信息。校驗和能夠防止分組在傳輸時所受到的損傷。在發送端先計算檢驗和并將得到的結果與分組一起發送過去。接收端對包括校驗和的整個分組重復進行同樣的計算。若得到的結果正確則接收此分組,否則就將其丟棄。發送端和接收端的校驗和計算方法分別如下:
①發送端按以下步驟產生校驗和
②接收端按以下步驟產生校驗和
下面給出校驗和算法的源程序:
UINT Checksum (UCHAR xdata *checks UINT length)//計算校驗和
{LONG sum=0; UINT i:UINT xdata *ptr: ptr=(UINT xdata *)check;
for (i=0:i<(length)/2;i++)
{sum+=*ptr++;}
if (length0x01)//表示長度為單數
{sum=sum+((*ptr)Oxff00);}
sum=(sumOxffff)+((sum;16)Oxffff);//高16位和低16位相加
if(sumOxffffU000){sum++;}//表示有進位
return((UINT)((sum)Oxf});}
4TCP協議的實現
4.1 TCP數據報格式
TCP(Transfer Control Protocol,傳輸控制協議)是傳輸層最常用的協議,是一個比較復雜的協議。TCP和IP一樣,也是TCP/IP協議族中最重要的協議。它可以提供面向連接的、可靠的數據傳輸服務。TCP數據報文段格式如圖4所示:

圖4TCP報文段的格式
4.2 TCP協議的實現
TCP協議的實現是整個TCP/IP協議棧中最復雜的一個。TCP協議是面向連接的、端對端的可靠通信協議。TCP采取了很多機制來保證它的可靠性,比如TCP連接的建立與關閉機制、超時重傳機制、數據包確認機制、流量控制機制等等。在嵌入式系統中實現TCP協議所要做的就是實現這些機制,當然要在不影響協議棧功能的前提下適當做一下簡化。
4.3TCP的超時重傳與流量控制機制的實現
當一個TCP連接順利建立起來后,TCP連接的雙方可以互相傳遞數據了。TCP的可靠傳輸是靠確認機制來實現的,也就是每發送一個數據包后,只有接收到對方發送確認包后,才能確定該數據包已經成功發送,否則就要重發。
TCP的流量控制是為了協調通信雙方的收發速率不均衡而設計的。遠端的客戶機一般是通用計算機,相對與本地的嵌入式Web Server來說運行速度要快得多。因此,當遠端快的發送方向本地慢的接收方發送數據的時候,如果發送速度很快,則會導致本端來不及處理,甚至導致死機。TCP連接建立時,雙方會利用TCP首部中的Window窗口字段通報雙方的可用窗口。實際上,接收方通報的窗口大小是根據其接收緩存的大小而定,考慮到本系統在使用TCP協議時,只設置了一個中等IP包大小接收緩存,因此接收窗口設為1024。同時,每次接收包的ACK確認時,窗口大小不再動態改變,恒定設置為1024。這樣遠端主機就會以較慢的傳輸速率與本端的Web Server進行通信。
5 結論
本文主要針對目前流行的TCP/IP網絡通信協議的實現進行研究和探索,由于時間倉促,加上本人對該領域的研究才剛剛起步,所以還存在一些問題值得進一步研究探討,主要有:
(1) 對于TCP/IP協議,時間的控制非常重要。包括TCP的超時重傳,TCP狀態的保活等。如果時間處理不當,將影響整個系統的通訊性能。
(2)如何進一步實現TCP/IP對于多點通信以及完整協議棧的實現還有待于進一步研究。
(3) IPv6作為下一代互聯網的核心協議,能夠提供幾乎無限的地址空間,從根本上克服了IPv4中地址空間不足的問題。因此,下一步可增加對IPv6協議的研究與實現。
參考文獻
[1] 胡海.嵌入式TCP/IP協議棧研究與實現[D].西南交通大學,2005.8.
[2] 袁曉莉,徐愛均.基于OS-II和TCP/IP的遠程溫度監測系統.2005.5.
[3] 吳艷光.嵌入式TCP/IP協議棧設計方法的研究 [D].太原理工大學,2004.
[4] 馬永力. 基于SX52BD的嵌入式Web服務器的設計與實現.山東大學,2005.
[5]路英娟.TCP/IP協議小議[J].科技情報開發與經濟,2004(6).
[6]葛志輝,李陶深.TCP/IP協議的脆弱性與相應的對策.2004.
---------
作者簡介:張凱(1980-),男,湖南益陽人,廣東省湛江師范學院,助教,主要研究方向:計算機網絡工程。(廣東 湛江 524300)
聯系地址:廣東省湛江市遂溪城遂海路182號, 電話:13590059258。