嵌入式Linux網(wǎng)絡編程之:TCP/IP協(xié)議概述
10.1TCP/IP協(xié)議概述
10.1.1OSI參考模型及TCP/IP參考模型
讀者一定都聽說過著名的OSI協(xié)議參考模型,它是基于國際標準化組織(ISO)的建議發(fā)展起來的,從上到下共分為7層:應用層、表示層、會話層、傳輸層、網(wǎng)絡層、數(shù)據(jù)鏈路層及物理層。這個7層的協(xié)議模型雖然規(guī)定得非常細致和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在于它過于復雜。但它仍是此后很多協(xié)議模型的基礎,這種分層架構的思想在很多領域都得到了廣泛的應用。
與此相區(qū)別的TCP/IP協(xié)議模型從一開始就遵循簡單明確的設計思路,它將TCP/IP的7層協(xié)議模型簡化為4層,從而更有利于實現(xiàn)和使用。TCP/IP的協(xié)議參考模型和OSI協(xié)議參考模型的對應關系如圖10.1所示。
圖10.1OSI模型和TCP/IP參考模型對應關系
下面分別對TCP/IP的4層模型進行簡要介紹。
n 網(wǎng)絡接口層:負責將二進制流轉(zhuǎn)換為數(shù)據(jù)幀,并進行數(shù)據(jù)幀的發(fā)送和接收。要注意的是數(shù)據(jù)幀是獨立的網(wǎng)絡信息傳輸單元。
n 網(wǎng)絡層:負責將數(shù)據(jù)幀封裝成IP數(shù)據(jù)包,并運行必要的路由算法。
n 傳輸層:負責端對端之間的通信會話連接與建立。傳輸協(xié)議的選擇根據(jù)數(shù)據(jù)傳輸方式而定。
n 應用層:負責應用程序的網(wǎng)絡訪問,這里通過端口號來識別各個不同的進程。
10.1.2TCP/IP協(xié)議族
雖然TCP/IP名稱只包含了兩個協(xié)議,但實際上,TCP/IP是一個龐大的協(xié)議族,它包括了各個層次上的眾多協(xié)議,圖10.2列舉了各層中一些重要的協(xié)議,并給出了各個協(xié)議在不同層次中所處的位置,如下所示。
n ARP:用于獲得同一物理網(wǎng)絡中的硬件主機地址。
n MPLS:多協(xié)議標簽協(xié)議,是很有發(fā)展前景的下一代網(wǎng)絡協(xié)議。
n IP:負責在主機和網(wǎng)絡之間尋址和路由數(shù)據(jù)包。
n ICMP:用于發(fā)送有關數(shù)據(jù)包的傳送錯誤的協(xié)議。
n IGMP:被IP主機用來向本地多路廣播路由器報告主機組成員的協(xié)議。
n TCP:為應用程序提供可靠的通信連接。適合于一次傳輸大批數(shù)據(jù)的情況。并適用于要求得到響應的應用程序。
n UDP:提供了無連接通信,且不對傳送包進行可靠性保證。適合于一次傳輸少量數(shù)據(jù),可靠性則由應用層來負責。
10.1.3TCP和UDP
在此主要介紹在網(wǎng)絡編程中涉及的傳輸層TCP和UDP協(xié)議。
1.TCP
(1)概述。
同其他任何協(xié)議棧一樣,TCP向相鄰的高層提供服務。因為TCP的上一層就是應用層,因此,TCP數(shù)據(jù)傳輸實現(xiàn)了從一個應用程序到另一個應用程序的數(shù)據(jù)傳遞。應用程序通過編程調(diào)用TCP并使用TCP服務,提供需要準備發(fā)送的數(shù)據(jù),用來區(qū)分接收數(shù)據(jù)應用的目的地址和端口號。
通常應用程序通過打開一個socket來使用TCP服務,TCP管理到其他socket的數(shù)據(jù)傳遞??梢哉f,通過IP的源/目的可以惟一地區(qū)分網(wǎng)絡中兩個設備的連接,通過socket的源/目的可以惟一地區(qū)分網(wǎng)絡中兩個應用程序的連接。
(2)三次握手協(xié)議。
TCP對話通過三次握手來進行初始化。三次握手的目的是使數(shù)據(jù)段的發(fā)送和接收同步,告訴其他主機其一次可接收的數(shù)據(jù)量,并建立虛連接。
下面描述了這三次握手的簡單過程。
n 初始化主機通過一個同步標志置位的數(shù)據(jù)段發(fā)出會話請求。
n 接收主機通過發(fā)回具有以下項目的數(shù)據(jù)段表示回復:同步標志置位、即將發(fā)送的數(shù)據(jù)段的起始字節(jié)的順序號、應答并帶有將收到的下一個數(shù)據(jù)段的字節(jié)順序號。
n 請求主機再回送一個數(shù)據(jù)段,并帶有確認順序號和確認號。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關文章:linux教程
tcp/ip相關文章:tcp/ip是什么
評論