第一章概述
1.2 分層
網絡程式設計通常分不同層次進行開發,每一層負責不同的通信功能。
一個協定族比如TCP/IP,通常是一組不同層次上多個協定的組合。一般可以認為是是四層協定系統:
鍊路層:有時也稱作資料鍊路層或網絡接口層,通常包括作業系統中的裝置驅動程式和計算機中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的實體接口細節。協定有以太網協定。
網絡層:處理分組在網絡中的活動,例如分組的選路。一般協定有ip協定,ICMP協定,IGMP協定、
運輸層:有時也叫傳輸層,為兩台主機系統提供端到端的通信。協定有tcp,udp。
應用層:負責特定的應用程式細節。協定有telnet,ftp,ssh,自定義協定等。
假設在同一區域網路(LAN)内兩個主機通過ftp傳輸,那麼主要過程如下所示:
應用程式通常是在第一層,後三層都是由作業系統做了(在核心中執行)。
應用程式關心具體的細節,不必關心資料在網絡中的傳輸。下面三層也對應用層一無所知。
1.3 TCP/IP的分層
在TCP/IP協定族中有很多中協定,如下圖示:
雖然T C P使用不可靠的 I P服務,但它卻提供一種可靠的運輸層服務。
但是與 T C P不同的是, U D P是不可靠的,它不能保證資料報能安全無誤地到達最終目的。
I P是網絡層上的主要協定,同時被 T C P和U D P使用。 T C P和U D P的每組資料都通過端系統和每個中間路由器中的I P層在網際網路中進行傳輸。
I C M P是I P協定的附屬協定。 I P層用它來與其他主機或路由器交換錯誤封包和其他重要資訊。
I G M P是I n t e r n e t組管理協定。它用來把一個 U D P資料報多點傳播到多個主機。
A R P(位址解析協定)和 R A R P(逆位址解析協定)是某些網絡接口(如以太網和令牌環網)使用的特殊協定,用來轉換 I P層和網絡接口層使用的位址。
1.4 網際網路的位址
網際網路上每個接口裝置必須有唯一的internet位址,稱為ip位址。32bit。
可以分為5類:
32位通常可以寫成4個十進制的數,稱為點分十進制。
網際網路洛資訊中心(internet network information centre):管理機構,為接入網際網路的網絡配置設定ip位址的。
簡稱InterNIC,InterNIC隻配置設定網絡号,主機号的配置設定由系統管理者來負責。
1.5 域名系統
在TCP/IP領域中,域名系統(DNS)是一個分布的資料庫,由它來提供IP位址和主機名之間的映射資訊。
任何應用程式可以調用一個标準庫函數來檢視給定名字的主機的IP位址,也有一個函數可以通過IP位址查到對應的主機名。
1.6 封裝
用tcp傳送資料時,資料被送入協定棧,然後逐個通過每一層知道被當做一串比特流送入網絡。其中每一層對收到的資料都要增加一些首部資訊(有時還要增加尾部資訊)。如下圖:
TCP傳給IP的資料單元稱為TCP封包段(簡稱TCP段)
UDP傳給IP的資料單元稱為UDP資料報(UDP datagram)
IP傳給鍊路層的資料單元稱為IP資料報(IP datagram)
通過以太網傳輸的比特流叫做幀(frame)
1.7 分用(Demultiplexing)
目的主機收到以太網資料幀時,資料就開始從協定棧中由底向上升,同時去掉各層協定加上的封包首部。
每層協定盒都要去檢查封包首部中的協定辨別,以确定接收資料的上層協定。這個過程叫分用,也就是封裝的逆過程。
ICMP和IGMP的定位其實有尴尬,之前說是和IP同一層的,因為事實上确實是IP的附屬協定。
但是在這裡,又把它們放在了IP層的上方,這是因為ICMP和IGMP封包都被封裝在IP資料報中。
1.8 客戶-伺服器模型
大部分網絡應用程式在編寫時都假設一端的client,一段的server。
可以将伺服器分為兩種類型:
1) 重複型伺服器:主要的問題發生在A2步驟,這時不能為其他客戶機提供服務。
主要互動步驟如下:
A1:等待一個client請求的到來
A2:處理客戶請求
A3:發送響應給發送請求的客戶
A4:傳回A1 步。
2) 并發型伺服器:
B1:等待一個client請求的到來
B2:啟動一個新的伺服器來處理這個客戶的請求。可能會有 一個新的程序、服務、線程之類的用來跟客戶機通信,處理結束後終止這個伺服器。
B3:傳回C1
優點:每個客戶機都有對應的伺服器,如果作業系統允許多任務,那麼就可以同時為多個客戶服務。
一般來說,TCP伺服器是并發的,UDP伺服器是重複的。但是也有例外哦
1.9 端口号
采用16bit的端口号來識别應用程式。
伺服器一般都是通過知名端口号來識别的,對于每個TCP/IP來說,ftp伺服器的端口号都是21,telnet是23,
TFTP(00000000簡單檔案傳送協定)伺服器的UDP端口号都是69
知名端口号:1到1023.這些知名端口号都internet号配置設定機構管理(IANA)
用戶端通常對它使用的端口号不關心,隻需保證該端口号在本機上是唯一的就可以了。用戶端端口号又稱作臨時端口号。
大部分TCP/IP實作給臨時端口配置設定1024-5000之間的端口号。大于5000的端口号是為其他伺服器預留的。
1.10 标準化過程。
有四個小組負責Internet技術:
1) Internet協會(I S O C, Internet Society)是一個推動、支援和促進 I n t e r n e t不斷增長和發展的專業組織,它把 I n t e r n e t作為全球研究通信的基礎設施。
2) Internet體系結構委員會(I A B, Internet Architecture Board)是一個技術監督和協調的機構。它由國際上來自不同專業的 1 5個志願者組成,其職能是負責 I n t e r n e t标準的最後編輯和技術稽核。 I A B隸屬于I S O C。
3) Internet工程專門小組(I E T F, Internet Engineering Task Force)是一個面向近期标準的組織,它分為9個領域(應用、尋徑和尋址、安全等等)。 I E T F開發成為I n t e r n e t标準的規範。為幫助IETF主席,又成立了Internet工程指導小組(IESG, Internet Engineering Steering Group)。
4) Internet研究專門小組(IR I F, Internet Research Task Force)主要對長遠的項目進行研究。
1.11 RFC
所有關于Interner的正式标準都以RFC(request for comment)文檔出版。所有的RFC都可以通過電子郵件或用FTP從Internet上免費擷取。
1.12 标準的簡單服務
有一些标準的簡單服務幾乎每種實作都要提供。
1.13 網際網路
internet的意思是用一個共同的協定族把多個網絡連接配接在一起。而Internet指的是世界範圍内通過TCP/IP互相通信的所有主機集合。
1.14 實作
1.15 應用程式設計接口
使用TCP/IP協定的應用程式通常采用兩種應用程式設計接口(API):socket和TLI(運輸層接口,transport layer interface)
socket:從伯克利版發展而來
TLI:起初由AT&T開發的。