from http://blog.csdn.net/northcan/article/details/7272622
《TCP/IP Illustrated, Vol. 1: The Protocols》讀書筆記 by斜風(fēng)細(xì)雨QQ:253786989 2012-02-19
TCP/IP協(xié)議起源于60年代末美政府的一個分組交換網(wǎng)絡(luò)研究項(xiàng)目,現(xiàn)如今已成為計(jì)算機(jī)之間最常用的組網(wǎng)方式。
(1) 分層
TCP/IP協(xié)議簇分為4個不同的抽象層,每一層完成不同的功能。
應(yīng)用層:應(yīng)用層可能包括各種通用的網(wǎng)絡(luò)應(yīng)用程序,如Telnet(遠(yuǎn)程登錄)、FTP(文件傳輸協(xié)議)、SMTP(簡單郵件傳輸協(xié)議)、SNMP(簡單網(wǎng)絡(luò)管理協(xié)議),或者是和公司業(yè)務(wù)相關(guān)的網(wǎng)絡(luò)服務(wù)程序。
運(yùn)輸層:以前習(xí)慣叫傳輸層,為兩臺主機(jī)上的應(yīng)用程序提供端對端的數(shù)據(jù)通信。傳輸層主要有兩種協(xié)議:TCP(傳輸控制協(xié)議),UDP(用戶數(shù)據(jù)報協(xié)議)。其中TCP把應(yīng)用層交給它的數(shù)據(jù)分成合適大小的數(shù)據(jù)塊交給下面的網(wǎng)絡(luò)層,采用超時重發(fā),發(fā)送和接收確認(rèn)機(jī)制保證數(shù)據(jù)的高可靠性通信。與之相比,UDP則為應(yīng)用層提供一種簡單的數(shù)據(jù)傳輸,它把數(shù)據(jù)報從一臺主機(jī)發(fā)送到另一臺主機(jī),但不保證該數(shù)據(jù)報肯定能送到另一端。傳輸層使用UDP協(xié)議時,任何必須的可靠性必須由應(yīng)用層自己提供。
網(wǎng)絡(luò)層:處理數(shù)據(jù)包分組在網(wǎng)絡(luò)中的活動。這一層的協(xié)議包括IP協(xié)議(網(wǎng)際協(xié)議),ICMP協(xié)議(Internet互聯(lián)網(wǎng)控制報文協(xié)議),及IGMP協(xié)議(Internet組管理協(xié)議)。
鏈路層:有的書里面叫做網(wǎng)絡(luò)接口層??傊@一層負(fù)責(zé)的是數(shù)據(jù)的真真正正的物理傳輸,包括網(wǎng)卡驅(qū)動程序,以及以太網(wǎng)協(xié)議等等。
對應(yīng)用于操作系統(tǒng)OS,一般應(yīng)用層是一個用戶進(jìn)程,傳輸層、網(wǎng)絡(luò)層、鏈路層是在內(nèi)核進(jìn)中執(zhí)行。應(yīng)用層是具體的網(wǎng)絡(luò)應(yīng)用程序的細(xì)節(jié),其它三層負(fù)責(zé)數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸。如上圖也可以看到TCP/IP協(xié)議簇不只包含TCP和IP兩種協(xié)議,在傳輸層還有UDP協(xié)議,所以TCP/IP只是一個命名,它們只是這個協(xié)議簇中的其中兩個。
(2) 簡單通信圖示
圖示右邊的主機(jī)應(yīng)用層運(yùn)行FTP服務(wù)器程序,左邊的主機(jī)應(yīng)用層運(yùn)行FTP客戶程序。絕大多數(shù)網(wǎng)絡(luò)應(yīng)用程序都設(shè)計(jì)為c/s(客戶/服務(wù)器)模式,服務(wù)器為客戶提供某種服務(wù)。
(3) 路由器
也成IP路由器(IP Router),它是一種特殊的用于網(wǎng)絡(luò)互連的硬件設(shè)備,可以為不同類型的物理網(wǎng)絡(luò)提供鏈接。
從上圖可以看出路由器是在網(wǎng)絡(luò)層上對網(wǎng)絡(luò)進(jìn)行互連,還有一種網(wǎng)絡(luò)互連的途徑稱為網(wǎng)橋,網(wǎng)橋是在鏈路層上對網(wǎng)絡(luò)進(jìn)行互連。網(wǎng)橋既可能是一個硬件設(shè)備,也可以是在計(jì)算機(jī)中安裝的網(wǎng)橋軟件。不過TCP/IP協(xié)議傾向于使用路由器而不是網(wǎng)橋來連接網(wǎng)絡(luò)。
(4)IP地址
互聯(lián)網(wǎng)中的每個網(wǎng)絡(luò)接口都必須有一個全球唯一的IP地址,長32位,通常采用點(diǎn)分十進(jìn)制的形式表示,如:110.96.170.209。IP地址分為A、B、C、D、E五類,它們的格式和區(qū)別如下:
各類IP地址的范圍:
看來我的機(jī)器的IP地址:110.96.170.209,屬于一個A類的IP地址。
IP地址還可以分三類:單播地址(目的為單個主機(jī))、廣播地址(目的端為給定網(wǎng)絡(luò)上的所有主機(jī))以及多播地址(目的端為同一組內(nèi)的所有主機(jī))。
另外每個IP地址都是全球唯一的,所以必須有一個機(jī)構(gòu)來管理。IP地址的注冊由InterNIC機(jī)構(gòu)負(fù)責(zé)。
(5) DNS
DNS是Domain Name System(域名系統(tǒng))的縮寫。通過IP地址可以區(qū)分互聯(lián)網(wǎng)中的每個網(wǎng)絡(luò)接口,但IP地址本身不好記,所以人們喜歡使用主機(jī)名(如上網(wǎng)時使用的網(wǎng)址)。DNS就是一個分布式數(shù)據(jù)庫,提供IP地址和主機(jī)名之間的映射,使得通過主機(jī)名可以查看對應(yīng)的IP地址,通過給定的IP地址可以查看其對應(yīng)的主機(jī)名。
(6) 協(xié)議封裝
當(dāng)進(jìn)行網(wǎng)絡(luò)通信時,數(shù)據(jù)被送入?yún)f(xié)議棧中,依次通過應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層,逐層加入各種協(xié)議的協(xié)議頭(有的協(xié)議也包括協(xié)議尾),最后封裝好的數(shù)據(jù)通過物理鏈路傳輸。
比如IP頭中有一個8bit的協(xié)議域,為1時表示ICMP協(xié)議向IP傳送數(shù)據(jù),為2時表示IGMP協(xié)議向IP傳送數(shù)據(jù),為6時表示TCP協(xié)議向IP傳送數(shù)據(jù),為17時表示UDP協(xié)議向IP傳送數(shù)據(jù)。而TCP和UDP協(xié)議頭中都有一個16bit的端口號來表示不同的應(yīng)用程序。
(7)c/s模型
絕大部分網(wǎng)絡(luò)應(yīng)用程序采用c/s(客戶端-服務(wù)器)模型,這種模型的網(wǎng)絡(luò)程序分為重復(fù)型和并發(fā)型。
a) 重復(fù)型
1 服務(wù)器等待一個客戶請求
2 處理客戶請求
3 發(fā)送響應(yīng)給請求客戶
4 返回第1步
重復(fù)型服務(wù)器在處理一個客戶請求時,不能為其它客戶機(jī)提供服務(wù),弊端很大。
b) 并發(fā)型
1服務(wù)器等待一個客戶請求
2 啟動一個新的進(jìn)程、任務(wù)或者線程來處理客戶請求,并在處理結(jié)束后終止。
3 返回第1步
并發(fā)型服務(wù)器的優(yōu)點(diǎn)就是可以同時處理多個客戶請求。
(8) 端口號
在同一臺主機(jī)上,會運(yùn)行很多不同的網(wǎng)絡(luò)應(yīng)用程序。那么傳輸層的TCP或者UDP協(xié)議是怎么區(qū)分應(yīng)用層的不同應(yīng)用程序呢?這就是端口號的作用。
很多通用的服務(wù)器端應(yīng)用程序的端口號是固定的,比如FTP服務(wù)器的TCP端口號是21,Telnet服務(wù)器的TCP端口號是23,TFTP服務(wù)器的UDP端口號是69。這些知名端口號由IANA機(jī)構(gòu)管理。
對于客戶端程序,通常使用臨時端口號。這些臨時端口號通常在1024-5000之間。
(9) RFC
所有的Internet標(biāo)準(zhǔn)都已RFC(Request for Comment)文檔的形式發(fā)布??梢垣@取RFC文檔的一個網(wǎng)站:http://www.rfc-editor.org/index.html
TCP/IP協(xié)議初步認(rèn)識 ——《TCP/IP Illustrated, Vol. 1: The Protocols》讀書筆記 by斜風(fēng)細(xì)雨QQ:253786989 2012-02-19