基于SX單片機實現(xiàn)WebServer和網(wǎng)絡(luò)協(xié)議棧
二、網(wǎng)絡(luò)協(xié)議棧的實現(xiàn)
網(wǎng)絡(luò)協(xié)議通常分不同層次進行開發(fā),每一層分別負(fù)責(zé)不同的通信功能。一個協(xié)議族,比如TCP/IP,是一組不同層次上的多個協(xié)議的組合。TCP/IP通常被認(rèn)為是一個四層協(xié)議系統(tǒng),如圖3所示。每一層負(fù)責(zé)不同的功能。
(1)數(shù)據(jù)鏈路層,有時也稱為網(wǎng)絡(luò)接口層。通常包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機中對應(yīng)的網(wǎng)絡(luò)接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節(jié)。
(2)網(wǎng)絡(luò)層,有時也稱作互聯(lián)網(wǎng)層。處理分組在網(wǎng)絡(luò)中的活動,例如分組的選路。在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包括IP協(xié)議(網(wǎng)際協(xié)議)、ICMP 協(xié)議(Internet互聯(lián)網(wǎng)控制報文協(xié)議)以及IGMP 協(xié)議(Internet組管理協(xié)議)。這里主要討論IP協(xié)議。
(3)傳輸層主要為兩臺主機上的應(yīng)用程序提供端到端的通信。TCP為兩臺主機提供高可靠性的數(shù)據(jù)通信。它所做的工作包括把應(yīng)用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,確認(rèn)接收到的分組,設(shè)置發(fā)送最后確認(rèn)分組的超時時鐘等。由于運輸層提供了高可靠性的端到端的通信,因此應(yīng)用層可以忽略所有這些細節(jié)。
(4)應(yīng)用層負(fù)責(zé)處理特定的應(yīng)用程序細節(jié)。幾乎各種不同的TCP/IP實現(xiàn)都會提供下面這些應(yīng)用:
① HTTP超文本傳輸控制協(xié)議;
② TELNET遠程登錄;
?、?FTP文件傳輸協(xié)議;
?、?SMTP簡單郵件傳送協(xié)議;
?、?SNMP簡單網(wǎng)絡(luò)管理協(xié)議。
因為數(shù)據(jù)鏈路層主要是網(wǎng)絡(luò)接口卡及驅(qū)動,由RTL8019AS來實現(xiàn),所以下面討論網(wǎng)絡(luò)層、傳輸層和應(yīng)用層協(xié)議棧的實現(xiàn)。
1. 網(wǎng)絡(luò)層
(1) IP協(xié)議
IP是TCP/IP 協(xié)議族中最為核心的協(xié)議。Internet所有的數(shù)據(jù)都以IP 數(shù)據(jù)報格式傳輸。IP協(xié)議最大的特點是提供不可靠的和無連接的數(shù)據(jù)包傳送服務(wù)。
不可靠(unreliable)的意思是它不能保證IP數(shù)據(jù)報能成功地到達目的地。IP僅提供最好的傳輸服務(wù)。若發(fā)生某種錯誤時,如某個路由器暫時用完了緩沖區(qū),IP有一個簡單的錯誤處理算法:丟棄該數(shù)據(jù)報,然后發(fā)送ICMP(Internet控制報文協(xié)議)消息報給信源端。任何要求的可靠性必須由上層來提供(如TCP)。
無連接(connectionless)的意思是IP并不維護任何關(guān)于后續(xù)數(shù)據(jù)報的狀態(tài)信息。每個數(shù)據(jù)報的處理是相互獨立的。這也說明,IP數(shù)據(jù)報可以不按發(fā)送順序接收。如果一信源向相同的信宿發(fā)送兩個連續(xù)的數(shù)據(jù)報(先是A,然后是B),每個數(shù)據(jù)報都是獨立地進行路由選擇,可能選擇不同的路線,因此, B可能在A到達之前先到達。
IP數(shù)據(jù)包的格式如圖4所示。
版本是指IP協(xié)議的版本號。目前的協(xié)議版本號是4, 因此IP也稱作IPV4。
評論