標籤:style http color io os 使用 java strong 檔案
主機網路層
在基於IP的Internet(Java唯一真正理解的網路)的標準參考模型中,網路中隱藏的部分屬於主機網路層(host-to-work layer,也稱為鏈路層、資料連結層或網路介面層)。主機網路層定義了一個特定的網路介面(如乙太網路卡或WiFi天線)如何通過物理串連向本網或世界其他地方發送IP資料報。主機網路層中,由串連不同電腦的硬體(線纜、光纖電纜、無線電波或煙訊號)組成的部分有時稱為網路的物理層。
網際層
在OSI模型中,網際層使用了一個更一般的名字,稱為網路層(network layer)。網路層協議定義了資料位元和位元組如何組織為更大的分組,稱為包,還定義了定址機制,不同電腦要按這個定址機制尋找對方。網際協議(IP)是世界上使用最廣泛的網路層協議,也是Java唯一理解的網路層協議。實際上,這是兩個協議:IPv4和IPv6,IPv4使用32位地址,IPv6使用128位地址,另外還增加了一些技術特性來協助完成路由。在IPv4和IPv6中,資料按包在網際層上傳輸,這些包稱為資料報(datagram)。每個IPv4資料報包含一個長度為20至60位元組的首部,以及一個包含多達65515位元組資料的有效載荷。實際上,大多數IPv4資料報都小得多,從幾十位元組到稍大於8K位元組不等。IPv6資料報包含一個更大的首部,資料可以多達4G位元組。
展示各個部分在IPv4資料報中是如何排列的。所有位和位元組都採用big-endian方式,由左至右為最高位到最低位:
除了路由和定址,網際層的第二個作用是支援不同類型的主機網路層相互對話。Internet路由器會完成WiFi和Ethernet、Ethernet和DSL、DSL和光纖往返等協議之間的轉換。如果沒有網際層類似的分層,則每個電腦只能與同一類網路上的其他電腦對話。網際層負責使用同構協議將異構網路相互串連。
傳輸層
未經處理資料報有一些缺點。最顯著的缺點是不能保證可靠傳送,即使能傳送也可能在傳輸中遭到破壞。首部校正和只能檢測首部中的破壞情況,而不能檢測資料報中的資料部分。最後,即使資料報能到達目的地而未被破壞,也不一定會以發送時的順序到達。各個資料報可能會經過不同路由從源到達目的地。如果資料報A在資料報B之前發送,這並不意味著資料報A會在資料報B之前到達。
傳輸層(transport layer)負責確保各包以發送的順序接收,並保證沒有資料丟失或破壞。如果丟包,傳輸層會請求發送方重傳這個包。為實現這個目標,IP網路會給每個資料報添加一個附加首部,其中包含有更多資訊。這一層上主要有兩個協議。第一個是傳輸控制通訊協定(Transmission Control Protocol,TCP),這是一個開銷很高的協議,支援對丟失或破壞的資料進行重傳,並按照發送時的順序進行傳送。第二個協議是使用者資料包通訊協定(User Datagram Protocol,UDP),它允許接收方檢測被破壞的包,但不保證這些包以正確的順序傳送(或者包有可能根本未傳送)。但是,UDP通常比TCP快。TCP稱為可靠的協議;UDP是不可靠的協議。
應用程式層
向使用者傳送資料的層稱為應用程式層(application layer)。它下面的三層共同定義了資料如何從一台電腦傳輸到另一台電腦。應用程式層確定了資料轉送後的操作。例如,應用程式層協議如HTTP(用於國際互連網)可以確保web瀏覽器將映像顯示為圖片,而不是一長串數字。你的程式中有關網路的部分大多都是在應用程式層花費時間。除了用於web的HTTP,還有用於電子郵件的SMTP、POP和IMAP;用於檔案傳輸的FTP、FSP和TFTP;用於檔案訪問的NFS;用於檔案分享權限設定的Gnutella和BitTorrent;用於語音通訊的會話啟動協議(Session Initiation Protocol,SIP)和Skype等。此外,你的程式可以在必要時定義自己的應用程式層協議。
基本網路概念之網路分層的各層介紹