主機網絡層web
在基於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字節。app
下圖展現各個部分在IPv4數據報中是如何排列的。全部位和字節都採用big-endian方式,由左至右爲最高位到最低位:spa
除了路由和尋址,網際層的第二個做用是支持不一樣類型的主機網絡層相互對話。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是不可靠的協議。it
應用層io
向用戶傳送數據的層稱爲應用層(application layer)。它下面的三層共同定義了數據如何從一臺計算機傳輸到另外一臺計算機。應用層肯定了數據傳輸後的操做。例如,應用層協議如HTTP(用於國際互聯網)能夠確保web瀏覽器將圖像顯示爲圖片,而不是一長串數字。你的程序中有關網絡的部分大多都是在應用層花費時間。除了用於web的HTTP,還有用於電子郵件的SMTP、POP和IMAP;用於文件傳輸的FTP、FSP和TFTP;用於文件訪問的NFS;用於文件共享的Gnutella和BitTorrent;用於語音通訊的會話啓動協議(Session Initiation Protocol,SIP)和Skype等。此外,你的程序能夠在必要時定義本身的應用層協議。