TCP/IP 協(xié)議的結(jié)構(gòu)與運行原理[圖]
本文背景:TCP/IP模型很成功,其設(shè)計已經(jīng)經(jīng)得起多年的磨練。無奈,TCP/IP協(xié)議族是很繁雜的一個模型,為了全面理解它,宜采取先全局后局部的庖丁解牛式。本文從應(yīng)用的角度試著去理解TCP/IP的全貌,配合例子加以講解。
鞏固自己這方面的知識,作為深入TCP/IP協(xié)議族的基礎(chǔ)。
本文內(nèi)容:
1. TCP/IP
從字面上理解,TCP/IP協(xié)議族只有TCP、IP協(xié)議,其實不然。其真正的名字是Internet協(xié)議族 (Internet Protocol Suite) 。和大型軟件一樣,其分為四層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層。
每一層的功能和目的都是不一樣的,每一層上服務(wù)的協(xié)議也不是有區(qū)別的。從上往下看:
應(yīng)用層(產(chǎn)生
協(xié)議:FTP、HTTP、SNMP(網(wǎng)管)、SMTP(Email)等常用協(xié)議;
職責(zé):利用應(yīng)用層協(xié)議發(fā)送用戶的應(yīng)用數(shù)據(jù),比如利用FTP發(fā)送文件,利用SMTP發(fā)送Email;由系統(tǒng)調(diào)用交給運輸層處理。
運輸層(發(fā)送
協(xié)議:TCP(有連接)、UDP(無連接);
職責(zé):負責(zé)建立連接、將數(shù)據(jù)分割發(fā)送;釋放連接、數(shù)據(jù)重組或錯誤處理。
網(wǎng)絡(luò)層(分組
協(xié)議:IP、ICMP(控制報文協(xié)議)、IGMP(組管理協(xié)議);
職責(zé):負責(zé)數(shù)據(jù)的路由,即數(shù)據(jù)往哪個路由器發(fā)送。
鏈路層(按位發(fā)送
協(xié)議:以太網(wǎng)卡設(shè)備驅(qū)動、令牌網(wǎng)卡驅(qū)動程序、ARP、RARP等;
職責(zé):負責(zé)傳輸校驗二進制用戶數(shù)據(jù)。
從可靠性角度看各層區(qū)別:
網(wǎng)絡(luò)層IP協(xié)議是不可靠的協(xié)議,為此,如果其上面的層也不做任何特殊處理,也將是不可靠的。于是,運輸層的TCP協(xié)議彌補了這個空缺,提供有連接的、可校驗的數(shù)據(jù)傳輸服務(wù)。
應(yīng)用層的話可對數(shù)據(jù)進行加密之類的處理,增強的是傳輸數(shù)據(jù)的安全性,如https。
鏈路層可對數(shù)據(jù)進行校驗。
從運行進程態(tài)看各層區(qū)別:
應(yīng)用層運行在用戶程序進程中,屬性用戶態(tài);
其他層則在系統(tǒng)內(nèi)核進程運行,屬于核心態(tài);
從通信方式上看各層區(qū)別:
傳輸層是端對端的通信,也就是說,處理的是進程與進程之間的通信,如兩個TCP進程;
網(wǎng)絡(luò)層是點對點的通信,也就是說,處理的是機器之間的 邏輯連接。
從傳輸數(shù)據(jù)單元上看區(qū)別:
傳輸層上形成的是TCP或UDP報文段;
網(wǎng)絡(luò)層形成的是IP數(shù)據(jù)報;
數(shù)據(jù)鏈路層形成的是幀(Frame)。
從尋址方式上看各層區(qū)別:
網(wǎng)絡(luò)層通過IP尋址;
鏈路層通過MAC尋址。
注解
ICMP: 供IP用于發(fā)送錯誤報文,也可由應(yīng)用層直接調(diào)用;
IGMP: 用于多播(Multicast),比如,UDP可用多播IP地址往多個目標(biāo)主機發(fā)送數(shù)據(jù)報,就是依靠它。
ARP&RARP: 用戶在IP地址與MAC地址互相轉(zhuǎn)換。
2. TCP/IP
IP
共分五類地址,分別如下:
A類:0. 0. 0. 0——127.255.255.255(單播)
B類:128.0.0.0——191.255.255.255(單播)
C類:192.0.0.0——223.255.255.255(單播)
D類:224.0.0.0——239.255.255.255(多播)
E類:240.0.0.0——247.255.255.255(待用)
附加類:255.255.255.255 (傳輸層UDP廣播)
MAC
每個網(wǎng)卡的MAC地址世界唯一,不可變;計算機通信其實靠的是MAC地址,而不是IP地址,請看下面注解。
端口
端口在硬件里的名稱為接口,跟網(wǎng)卡的入口一樣;在軟件概念里,可以理解為一些數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)緩沖區(qū)。
端口可分為:
知名端口:0001——1023 (例如FTP 20,TCP 21,UDP 69)
臨時端口:1024——5000
預(yù)留端口:5000——65535
假設(shè)你的應(yīng)用程序需要端口,一般是從臨時端口分配,只在應(yīng)用程序運行時有效,故稱臨時端口。
傳輸層可將進程與端口進行綁定,當(dāng)數(shù)據(jù)到來時,其知該往哪個進程緩沖區(qū)里送。
注解:
IP
但是,硬件又必須用MAC才能找到機器,為此引入ARP及RARP來做兩地址的查詢與轉(zhuǎn)換。
3. TCP/IP
場景:左邊用戶利用FTP客戶端與右邊FTP服務(wù)器端進行連接上傳文件。
數(shù)據(jù)將從上往下流,每到一層都會加上層頭,數(shù)據(jù)以類堆棧形式存儲,到目標(biāo)機器時,底層數(shù)據(jù)先得,由底向上,符合堆棧先進后出的特性。
步驟
步驟
步驟
步驟
步驟
步驟
注解:
RFC(Request for Comment)
各種協(xié)議文檔:
posted on 2008-05-19 23:18 isabc 閱讀(2097) 評論(3) 編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程