互聯網協議
互聯網是如何實現的?
全世界幾十億臺電腦,連接在一起,兩兩通信。上海的某一塊網卡送出信號,洛杉磯的另一塊網卡居然就收到了,兩者實際上根本不知道對方的物理位置,你不覺得這是很神奇的事情嗎?
互聯網的核心是一系列協議,總稱爲"互聯網協議"(Internet Protocol Suite)。
對電腦如何連接和組網,做出了詳盡的規定。理解了這些協議,就理解了互聯網的原理。
網絡協議:爲進行網絡中的數據交換而建立的規則、標準或約定
網絡協議的組成要素:
1語法:數據和控制信息的結構或者格式
2語義:需要發出何種控制信息,完成何種動作以及做出何種應答
3同步:事件實現順序的詳細說明
計算機網絡體系結構:計算機網絡的各層及其各層協議的集合
計算機網絡體系結構
OSI:開放系統互聯基本參考模型,Open Systems Interconnection Reference Model
協議:爲了進行網絡中的數據交換而建立的規則、標準或約定稱爲網絡協議。
分層帶來的好處:
1、各層獨立,將大問題分解成多個獨立的小問題
2、靈活性好,只要保證接口不變,內部實現可以修改並不影響上下層
3、結構上易於分開
4、易於實現與維護
5、促進標準化工作
ISO定義的開放互聯(OSI)模型
定義了網絡互聯7層結構,OSI定義了各層提供的服務,服務與實現無關。
1.物理層:
定義了爲建立、維護和拆除物理鏈路所需的機械的、電氣的、功能的和規程的特性,
其作用是使原始的數據比特流能在物理媒體上傳輸。具體涉及接插件的規格、“0”、“1”信號的電平表示、收發雙方的協調等內容。
利用物理傳輸介質爲數據鏈路層提供物理連接,透明地傳輸比特率。實現介質訪問控制。
物理介質雙絞線、同軸電纜、光纜等。
2.數據鏈路層:傳輸數據單位是幀
比特流被組織成數據鏈路協議數據單元(通常稱爲幀),並以其爲單位進行傳輸,幀中包含地址、控制、數據及校驗碼等信息。數據鏈路層的主要作用是通過校驗、確認和反饋重發等手段,將不可靠的物理鏈路改造成對網絡層來說無差錯的數據鏈路。數據鏈路層還要協調收發雙方的數據傳輸速率,即進行流量控制,以防止接收方因來不及處理髮送方來的高速數據而導致緩衝器溢出及線路阻。
在通信的實體之間建立數據鏈路連接,傳送以“幀”爲單位的數據,採用差錯控制、流量控制方法,使有差錯的物理鏈路編程無差錯的數據鏈路。
3.網絡層:傳輸數據單位是分組或包
網絡層----數據以網絡協議數據單元(分組)爲單位進行傳輸。網絡層關心的是通信子網的運行控制,主要解決如何使數據分組跨越通信子網從源傳送到目的地的問題,這就需要在通信子網中進行路由選擇。另外,爲避免通信子網
中出現過多的分組而造成網絡阻塞,需要對流入的分組數量進行控制。當分組要跨越多個通信子網才能到達目的地時,還要解決網際互連的問題。
通過路由算法,爲分組通過通信子網選擇一條最佳路徑,網絡層要實現路由選擇、擁塞控制和網絡互聯等
4.傳輸層:傳輸數據單位是報文
傳輸層----是第一個端--端,也即主機--主機的層次。傳輸層提供的端到端的透明數據運輸服務,使高層用戶不必關心通信子網的存在,由此用統一的運輸原語書寫的高層軟件便可運行於任何通信子網上。傳輸層還要處理端到端的差錯控制和流量控制問題
向用戶提供可靠的端到端服務,透明地傳送報文,向高層屏蔽了下層數據通信的細節。負責主機中兩個程序之間的通信
5.會話層:
會話層----是進程--進程的層次,其主要功能是組織和同步不同的主機上各種進程間的通信(也稱爲對話)。會話層負責在兩個會話層實體之間進行對話連接的建立和拆除。在半雙工情況下,會話層提供一種數據權標來控制某一方何時有權發送數據。會話層還提供在數據流中插入同步點的機制,使得數據傳輸因網絡故障而中斷後,可以不必從頭開始而僅重傳最近一個同步點以後的數據。
組織兩個會話進程之間的通信,並管理數據的交換,建立傳輸錯誤糾正與保證數據完整性的控制機制。
6.表示層:
表示層----爲上層用戶提供共同的數據或信息的語法表示變換。爲了讓採用不同編碼方法的計算機在通信中能相互理解數據的內容,可以採用抽象的標準方法來定義數據結構,並採用標準的編碼表示形式。表示層管理這些抽象的數據結構,並將計算機內部的表示形式轉換成網絡通信中採用的標準表示形式。
數據壓縮和加密也是表示層可提供的表示變換功能
主要解決用戶數據的語法表示問題。處理在兩個通信系統彙總交換信息的表示方式。數據格式變換,數據加密與解密,數據壓縮和恢復功能
7.應用層:
應用層是開放系統互連環境的最高層。不同的應用層爲特定類型的網絡應用提供訪問 OSI環境的手段。網絡環境下不同主機間的文件傳送訪問和管理(FTAM)、傳送標準電子郵件的文電處理系統(MHS)、使不同類型的終端和主機通過網絡交互訪問的虛擬終端(VT)協議等都屬於應用層的範疇。
爲應用程序提供了網絡服務,應用層需要識別並保證通信對方的可用性,使得協同工作的應用程序之間的同步,建立傳輸錯誤糾正與保證數據完整性的控制機制。
應用層提供的是特殊的網絡應用服務,如郵件服務、文件傳輸服務等
dns實現域名解析,定義各種網絡服務
通信子網實際上由物理層、數據鏈路層和網絡層這三個層次構成
TCP/IP體系結構:
TCP/IP協議簇分爲四個層次,分別是應用層、運輸層、網際層和網絡接口層
應用層:是TCP/IP體系結構的最高層。在該層中有許多著名協議,如遠程登錄協議TELNET,文件傳送協議FTP,簡單郵件傳送協議SMTP等
運輸層:是主機到主機的層次。該層使用兩個不同的協議爲網絡用戶提供服務,一個是面向連接的傳輸控制協議TCP,提供可靠的數據傳輸服務。另一個是無連接的的用戶數據報協議UDP,提供盡最大努力交付服務。
網際層:該層的主要協議是網際協議IP,也就是在該層實現了不同網絡的互連,著名的IP地址就是IP協議的組成部分之一。與網際協議IP配合使用的還有三個協議:Internet控制報文協議ICMP,地址解析協議ARP和反向地址解析協議RARP。
Q:與OSI相比,TCP/IP具有很多不同之處:
- TCP/IP一開始就考慮到各種異構網絡的互連問題,將網際協議IP作爲TCP/IP的重要組成部分。但OSI制定時最初只考慮到全世界都使用一種統一的標準將各種不同的系統互連起來。
- TCP/IP一開始就把面向連接服務和無連接服務並重,並在網際層使用無連接服務,但OSI在開始時各個層都採用面向連接服務,降低了效率。
- TCP/IP在較早時就有了較好的網絡管理功能,但OSI到後來纔開始考慮。
- TCP/IP的不足主要在於TCP/IP模型對“服務”、“協議”和“接口”等概念沒有很清楚地區分開,TCP/IP模型的通用性較差。此外,TCP/IP但網絡接口層嚴格來說並不是一個層次而僅僅是一個接口。
五層結構(七層結構是在應用層下增加表示層與會話層,更多是一種理論的結構,實際多以五層結構表示)
1、應用層
2、傳輸層
3、網絡層
4、數據鏈路層
5、物理層
一、互聯網協議概述
1.1 五層模型
互聯網的實現,分層。每一層都有自己的功能,每一層都靠下一層支持。
用戶接觸到的,只是最上面的一層,沒有感覺到下面的層。要理解互聯網,必須從最下層開始,自下而上理解每一層的功能。
如何分層有不同的模型,有的模型分七層,有的分四層。分成五層比較容易解釋。
"物理層"(Physical Layer),主要負責在物理線路上傳輸原始的二進制數據
"數據鏈路(鏈接)層"(Link Layer)主要負責在通信的實體間建立數據鏈路連接
"網絡層"(Network Layer)主要負責創建邏輯鏈路,以及實現數據包的分片和重組,實現擁塞控制、網絡互連等功能
"傳輸層"(Transport Layer)負責向用戶提供端到端的通信服務,實現流量控制以及差錯控制
"應用層"(Application Layer)爲應用程序提供了網絡服務
越下面的層,越靠近硬件;越上面的層,越靠近用戶。
它們叫什麼名字,其實並不重要。只需要知道,互聯網分成若干層就可以了。
1.2 層與協議
每一層都是爲了完成一種功能。爲了實現這些功能,就需要遵守共同規則【"協議"(protocol)】。
互聯網的每一層都定義了很多協議。這些協議的總稱叫做"互聯網協議"(Internet Protocol Suite)。是互聯網的核心。
二、實體層(物理層)
電腦要組網,第一件事要先把電腦連起來,可用光纜、電纜、雙絞線、無線電波等方式
這就叫做"實體層",就是把電腦連接起來的物理手段。主要規定了網絡的一些電氣特性,作用是負責傳送0和1的電信號。
物理層定義物理設備如何傳輸數據。就是電腦硬件,網卡,網線,光纜
物理層的主要任務就是確定與傳輸媒體接口有關的一些特性,包括:
1、機械特性
2、電氣特性
3、功能特性
4、過程特性
信息交互方式
1、單工通信:數據信號始終沿着一個方向傳輸,一方永遠是發送方,另一方永遠是接收方
2、半雙工通信:通信雙方都可以發送(或接收)數據,但不能同時雙向發送
3、全雙工通信:通信雙方可以同時發送和接收信數據,即數據可以同時作雙向傳輸
串行傳輸和並行傳輸:
串行傳輸採用的同步方式有兩種:同步傳輸方式(固定的時鐘街拍發送數據信號)和異步傳輸方式(每個字符在傳輸時都前後分別加上起始位和結束位,以表示一個字符的開始和結束)
同步傳輸克服了異步傳輸方式中的每一個字符都要附加起止信號的缺點,具有較高的效率,但實現較爲複雜,常用於高速數據傳輸
信道複用技術
爲了有效地利用通信線路,就希望一個信道能同時傳輸多路信號,這就是所謂多路複用的概念。
1、頻分服用(FDM)——按照頻率不同來區分信號的一種方法,用戶在同樣時間佔用不同資源
2、時分複用(TDM)——將一條線路的工作時間劃分爲一段段等長的時分複用幀(TDM幀),每一個TDM幀中再劃分成若干時間片,每一個時分複用的用戶在每個TDM幀中佔用固定序號的時間片,來使用公共線路。所用用戶在不同時間佔用相同資源【統計複用又稱爲異步時分複用,普通的時分複用稱爲同步時分複用】
3、波分複用(WDM)——光的頻分複用
4、碼分複用
三、鏈接層(數據鏈路層)
單純的0和1沒有任何意義,必須規定解讀方式:多少個電信號算一組?每個信號位有何意義?這就是"鏈接層"的功能,在"實體層"的上方,確定了0和1的分組方式。
數據鏈路層在通信的實體間建立數據鏈路連接。電腦之間0101的傳輸
3.2 以太網協議
早期,每家公司都有自己的電信號分組方式。一種叫做"以太網"(Ethernet)的協議,佔據了主導地位。
以太網規定,一組電信號構成一個數據包,叫做"幀"(Frame)。每一幀分成兩個部分:標頭(Head)和數據(Data)。
"標頭"包含數據包的一些說明項,比如發送者、接受者、數據類型等等;"數據"則是數據包的具體內容。
"標頭"的長度固定爲18字節。"數據"的長度,最短46字節,最長爲1500字節。
因此,整個"幀"最短爲64字節,最長爲1518字節。如果數據很長,就必須分割成多個幀進行發送。
3.3 MAC地址
以太網數據包的"標頭",包含了發送者和接受者的信息。
發送者和接受者是如何標識呢?
以太網規定,連入網絡的所有設備,都必有"網卡"接口。數據包必須是從一塊網卡,傳送到另一塊網卡。
MAC網卡地址:數據包的發送地址和接收地址。
每塊網卡出廠的時候,都有唯一的MAC地址,長度是48個二進制位,通常用12個十六進制數表示。
前6個十六進制數是廠商編號,後6個是該廠商的網卡流水號。有MAC地址,就可以定位網卡和數據包的路徑了。
3.4 廣播
Q:一塊網卡怎麼會知道另一塊網卡的MAC地址?
有一種ARP協議,可以解決這個問題。以太網數據包必須知道接收方的MAC地址,然後才能發送。
Q:有MAC地址,系統怎樣才能把數據包準確送到接收方?
以太網採用了一種很"原始"的方式,它不是把數據包準確送到接收方,而是向本網絡內所有計算機發送,讓每臺計算機自己判斷,是否爲接收方。
1號計算機向2號計算機發送一個數據包,同一個子網絡的3號、4號、5號計算機都會收到這個包。它們讀取這個包的"標頭",找到接收方的MAC地址,然後與自身的MAC地址相比較,如果兩者相同,就接受這個包,做進一步處理,否則就丟棄這個包。這種發送方式就叫做"廣播"(broadcasting)。
有了數據包的定義、網卡的MAC地址、廣播的發送方式,"鏈接層"就可以在多臺計算機之間傳送數據了。
數據鏈路:除了代表物理層的一條物理線路外,還包括一些控制數據傳輸的通信協議,二者結合起來就是數據鏈路
網絡適配器:數據鏈路層協議一般是由網絡適配器實現的,它實現了數據鏈路層與物理層兩層的功能。它的主要作用是實現計算機與外界局域網通信。
數據鏈路層的協議數據單元:幀
點對點的數據鏈路通信步驟(點對點的數據鏈路、使用廣播信道的數據鏈路是兩種主要的數據鏈路):
1、節點A把該節點網絡層交下來的IP數據報添加首部與尾部封裝成幀
2、節點A把封裝好的幀通過物理層鏈路發送給節點B
3、節點B在檢查接收到的幀無差錯時,上交給B節點的網絡層,否則,丟棄此幀
數據鏈路層協議要解決的三個基本問題:
1、封裝成幀——幀開始符SOH,結束符EOT
2、透明傳輸——防止傳輸文本出現SOH或EOT,造成錯誤開始或錯誤結束
3、差錯檢測——廣泛使用CRC循環冗餘檢測
P2P點對點協議是數據鏈路層使用最多的協議,他提供不可靠的數據報服務;因爲數據鏈路層不必要提供比網絡層IP協議更多的功能,所以PPP協議不需要糾錯,不需要序號,不需要流量控制,簡單就是PPP協議首要的要求與最大特點
以太網:當今使用最廣泛的局域網規範,使用CSMA/CD技術,並以10M/S的速率運行在各種電纜上
CSMA/CD協議:載波監聽多點接入/碰撞檢測
CSMA/CD核心要點:
1、“多點接入”,許多計算機以多點接入方式互聯到一條總線上,同一時刻只有一臺計算機可以佔用總線傳輸數據
2、“載波監聽”,每個站(計算機)都必須不停檢測信道是否在傳輸數據,沒有被佔用才能獲得發送權
3、“碰撞檢測”,邊發送邊監聽,如果檢測到有總線有兩個站同時傳輸數據,立即停止傳輸
MAC地址:以太網的物理地址
網橋:可轉發、過濾幀,可連接不同物理層、MAC子層與不同以太網,可在數據鏈路層擴展以太網,缺點是增加時延。
集線器:可轉發比特流,工作在物理層,在物理層擴展以太網
四、網絡層(建立主機到主機通信)
網絡層爲數據在結點之間傳輸創建邏輯鏈路
4.1 網絡層的由來
以太網協議,依靠MAC地址發送數據。
理論上,單單依靠MAC地址,技術上可以實現通信。但有一個重大的缺點。廣播效率太低了。
以太網採用廣播方式發送數據包,所有成員人手一"包",不僅效率低,而且侷限在發送者所在的子網絡。
如果兩臺計算機不在同一個子網絡,廣播是傳不過去的。這種設計是合理的,否則互聯網上每一臺計算機都會收到所有包,那會引起災難。
互聯網是無數子網絡共同組成的一個巨型網絡,上海和洛杉磯的電腦不可能會在同一個子網絡
因此,必須找到一種方法,能夠區分哪些MAC地址屬於同一個子網絡,哪些不是。
如果是同一個子網絡,就採用廣播方式發送,否則就採用"路由"方式發送。("路由"指如何向不同子網絡分發數據包)
MAC地址本身無法做到這一點。它只與廠商有關,與所處網絡無關。
這就導致了"網絡層"的誕生。
網絡層的作用:引進一套新的地址,使得能夠區分不同的計算機是否屬於同一個子網絡。這套地址叫做"網絡地址"。
"網絡層"出現以後,每臺計算機有了兩種地址,一種是MAC地址,另一種是網絡地址。兩種地址之間沒有任何聯繫,MAC地址是綁定在網卡上的,網絡地址則是管理員分配的,它們只是隨機組合在一起。
網絡地址幫助我們確定計算機所在的子網絡,MAC地址則將數據包送到該子網絡中的目標網卡。
從邏輯上可以推斷,必定是先處理網絡地址,然後再處理MAC地址。
4.2 IP協議
IP協議:規定網絡地址的協議。它所定義的地址,就被稱爲IP地址。
目前,廣泛採用的是IP協議第四版,簡稱IPv4。這個版本規定,網絡地址由32個二進制位組成。
習慣上,用分成四段的十進制數表示IP地址,從0.0.0.0一直到255.255.255.255。
IP地址分爲網絡部分和主機部分,網絡部分用子網掩碼描述
互聯網上的每臺計算機,都會分配到一個IP地址。這個地址分成兩個部分,前一部分代表網絡,後一部分代表主機
如,IP地址172.16.254.1,一個32位的地址,假定網絡部分是前24位(172.16.254),那主機部分就是後8位(最後的那個1)。處於同一個子網絡的電腦,它們IP地址的網絡部分必定是相同的,即172.16.254.2應該與172.16.254.1處在同一個子網絡。
單單從IP地址無法判斷網絡部分,這樣就無法判斷兩臺計算機是否屬於同一個子網絡。引入另一參數"子網掩碼"(subnet mask)。
"子網掩碼":就是表示子網絡特徵的一個參數。在形式上等同於IP地址,也是一個32位二進制數字,它的網絡部分全部爲1,主機部分全部爲0。
知道"子網掩碼",就能判斷任意兩個IP地址是否處在同一個子網絡。將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都爲1,運算結果爲1,否則爲0),然後比較結果是否相同,如果相同就表明它們在同一個子網絡中,否則就不是。
總結,IP協議的作用主要有兩個,一個是爲每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網絡。
4.3 IP數據包
IP數據包:根據IP協議發送的數據。其中必定包括IP地址信息。
但是以太網數據包只包含MAC地址,並沒有IP地址的欄位。那麼是否需要修改數據定義,再添加一個欄位呢?
回答是不需要,可以把IP數據包直接放進以太網數據包的"數據"部分,因此完全不用修改以太網的規格。這就是互聯網分層結構的好處:上層的變動完全不涉及下層的結構。
具體來說,IP數據包也分爲"標頭"和"數據"兩個部分。
"標頭"部分主要包括版本、長度、IP地址等信息,"數據"部分則是IP數據包的具體內容。
它放進以太網數據包後,以太網數據包就變成了下面這樣。
4.4 ARP協議
關於"網絡層"
因爲IP數據包是放在以太網數據包裏發送的,所以必須同時知道兩個地址,一個是對方的MAC地址,另一個是對方的IP地址。通常情況,對方的IP地址是已知的,但是不知道它的MAC地址。
所以,需要一種機制,能夠從IP地址得到MAC地址。
分成兩種情況:
1.如果兩臺主機不在同一個子網絡,事實上沒有辦法得到對方的MAC地址,只能把數據包傳送到兩個子網絡連接處的"網關"(gateway),讓網關去處理。
2.如果兩臺主機在同一個子網絡,用ARP協議得到對方的MAC地址。
ARP協議是發出一個數據包(包含在以太網數據包中),其中包含它所要查詢主機的IP地址,在對方的MAC地址這一欄,填的是FF:FF:FF:FF:FF:FF,表示這是一個"廣播"地址。它所在子網絡的每一臺主機,都會收到這個數據包,從中取出IP地址,與自身的IP地址進行比較。如果兩者相同,都做出回覆,向對方報告自己的MAC地址,否則就丟棄這個包。
有了ARP協議後,就可以得到同一個子網絡內的主機MAC地址,可以把數據包發送到任意一臺主機之上了。
IP地址有關知識參看IP地址分類與子網掩碼http://blog.csdn.net/zhangliangzi/article/details/51263337
地址解析協議ARP:將主機和路由器的IP地址解析到硬件地址。
ARP機制:每個主機都有一個ARP高速緩存,裏面有本局域網中各主機、路由器的IP地址到硬件地址的映射表,而且這個映射表還經常動態更新。
網際控制報文協議ICMP:提供主機或路由器詢問情況、報告差錯或異常情況。
ICMP報文類型:1、差錯報告報文2、詢問報文
ICMP應用:使用ping命令,在應用層越過傳輸層直接使用ICMP協議回送請求與回送回答報文,測試主機之間連通性。
路由器分組轉發算法(網絡層操作):
從數據報首部提取出目的主機的IP地址,根據IP地址類別(A、B、C、D類),提取出網絡地址
1、若網絡地址N就是與路由器相連的網絡地址,則直接將數據報交付給該網絡的目的主機。(這裏包括了網絡接口軟件通過ARP協議將IP地址轉化爲MAC地址,將數據報封裝成鏈路層MAC幀,通過物理層線路發送此幀到目的主機的過程)
2、若網絡地址不是與路由器相連的網絡地址,則查詢路由表
2.1、若路由表中有目的地址爲數據報IP地址的特定主機路由,則將數據報發送給路由表指定的下一跳路由
2.2、若路由表中有到達目標網絡地址爲N的路由,則將數據報發送給路由表指定的下一跳路由
2.3、若路由表中有一個默認路由,則將數據報發送給路由表中的默認路由
2.4、報告分組轉發錯誤
五、傳輸層(建立端口到端口通信)
傳輸層:提供了端到端的服務。建立兩端連接後,如何傳遞數據,傳輸數據的方式都在這裏定義了。太大了需要分包,分片,另一端需要組裝,如何組裝等都在這一層定義
傳輸層向高層拼比了下層數據通信的細節
5.1 傳輸層的由來
有了MAC地址和IP地址,已經可以在互聯網上任意兩臺主機上建立通信。
同一臺主機上有許多程序都需用到網絡,需要一個參數表示這個數據包到底供哪個程序(進程)使用。這個參數就叫做"端口"(port),它是每一個使用網卡的程序的編號。每個數據包都發到主機的特定端口,所以不同的程序就能取到自己所需要的數據。
"端口"是0到65535之間的一個整數,正好16個二進制位。0到1023的端口被系統佔用,用戶只能選用大於1023的端口【1024-49151爲註冊端口,49152-65535爲動態或私有端口】。應用程序會隨機選用一個端口,然後與服務器的相應端口聯繫。
"傳輸層"的功能,就是建立"端口到端口"的通信。相比之下,"網絡層"的功能是建立"主機到主機"的通信。
只要確定主機和端口,就能實現程序之間的交流。
Unix系統就把主機+端口,叫做"套接字"(socket)。有了它,就可以進行網絡應用程序開發了。
傳輸層需要提供一臺主機到另一遠程主機的端對端通信控制,傳輸層利用互聯網層發送數據,每一傳輸層都需要封裝在一個互聯網的數據報中通過互聯網,到達目的地後,互聯網層再將數據提交給傳輸層。
注:傳輸層雖然使用互聯網來攜帶報文,但互聯網層並不閱讀或干預報文。傳輸層僅把互聯層看成一個包通信系統,這一通信系統負責連接兩端的註解
【傳輸層依賴於互聯層】
可靠性是計算機系統的基礎,在網絡數據傳輸中用戶希望互聯網能夠提供迅速、準確、可靠的通信功能,保證不發生丟失,重複,亂序等可靠性問題、
傳輸層是TCP/IP體系重要的一層,主要作用是保證端到端數據傳輸的可靠性。
TCP和UDP是傳輸層最重要的兩種協議
Tcp:傳輸控制協議;udp:用戶數據報協議
5.2 UDP協議(傳輸層)
在數據包中加入端口信息,需要新的協議。最簡單的實現叫UDP協議,格式是在數據前面,加上端口號。
UDP數據包,也是由"標頭"和"數據"兩部分組成。
"標頭"部分主要定義了發出端口和接收端口,
"數據"部分就是具體的內容。然後,把整個UDP數據包放入IP數據包的"數據"部分, IP數據包放在以太網數據包之中的,所以整個以太網數據包現在變成了下面這樣:
UDP數據包非常簡單,"標頭"部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。
從用戶角度來看,UDP處於傳輸層,UDP提供了面向無連接,不可靠的傳輸服務
UDP可以將數據直接封裝在IP數據報中進行發送,不使用確認信息對數據的到達進行確認,不對收到的數據進行排序。
UDP在運行高效和實現簡單下,可能出現數據丟失,亂序和重複的現象。(所以應用層需要承擔檢測)
UDP協議的優點是比較簡單,容易實現,但是缺點是可靠性較差,一旦數據包發出,無法知道對方是否收到。
爲了提高網絡可靠性,TCP協議。
TCP協議複雜,可近似認爲,TCP協議是有確認機制的UDP協議,每發出一個數據包都要求確認。如果有一個數據包遺失,就收不到確認,發出方就知道有必要重發這個數據包了。
5.3 TCP協議
TCP協議能夠確保數據不會遺失。它的缺點是過程複雜、實現困難、消耗較多的資源。
TCP數據包和UDP數據包一樣,都是內嵌在IP數據包的"數據"部分。
TCP數據包沒有長度限制,理論上可以無限長,但是爲了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。
TCP可以提供面向連接、可靠的、全雙工的數據流傳輸服務,保證數據在連接關閉之前可被可靠地投遞到目的地
TCP提供的服務有如下特徵:
面向連接:發送數據前,應用程序首先建立一個到目的主機的連接
完全可靠性:TCP確保通過一個連接發送數據正確到達目的地,不會發生數據丟失和亂序
全雙工通信:TCP允許任意一方,任意時刻發送數據。
流接口:TCP提供一個流接口,應用程序利用它可以發送連續的數據流
連接的可靠性與優雅關閉:建立連接的過程中,TCP保證新連接不會與其他鏈接混淆,連接關閉時,TCP確定前傳遞的所有數據都可靠地到達目的地
- TCP可靠性實現
可靠性指數據丟失後恢復的問題和連接的可靠性建立
- 數據丟失和重發:需要雙方協商解決(確認機制)
接收方確認後,回覆確認信息,發送方發數據是啓動一個定時器,如果沒有收到確認的話,重發該數據
用karn算法計算tcp等待時間的算法。
Tcp選擇重發有適應性
- 連接的可靠性與優雅關閉:採用三次握手的方法,使得連接可靠。採用四次分手方法。
先發連接請求(含自己的初始序列號)【注意:序列號是隨機數】(32位的序列號)
收到後,給確認信息(包含接受方的一個序列號),序列號是隨機數
傳輸數據,並回復確認信號
三次握手可以避免過時的連接請求
- TCP緩衝、流控與窗口:通過窗口機制進行流量控制。
連接時,每一端發送窗口報告(告知緩衝區可以接受的數據數)
確認收到數據,附帶自己剩餘的緩存區尺寸
剩餘的緩衝區空間的數量稱爲窗口
如果發送方速度大於接受方速度,導致接收方發送一個零窗口,讓發送方必須停止發送()
Tcp使用窗口和窗口控制的方式控制tcp的流量,使得發送方的數據不會溢出接收方的緩衝空間
- 連接與端口:一個tcp連接的兩端稱爲端口。端口用16位
TCP可以用端口提供多路複用功能。
傳輸層端口,根據端口號來決定數據處理權。(端口提供不同應用服務)
服務器和客戶端都有端口(客戶機發送的訪問請求也要用服務器的端口對應)
Q:TCP與UDP區別和聯繫
TCP與UDP基本區別
1.TCP面向連接。UDP面向無連接,發送之前不需要建立連接。
2.TCP要求系統資源較多,UDP較少; TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
3.UDP程序結構較簡單
4.流模式(TCP)與數據報模式(UDP);
TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的
UDP無擁塞控制,網絡出現擁塞不會使源主機的發送速率降低(對實時應用有用,如IP電話,實時視頻會議等)
5.TCP保證數據正確性,UDP可能丟包
6.TCP保證數據順序,UDP不保證
7.每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
8.TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
TCP應用場景:
UDP應用場景:
1.面向數據報方式
2.網絡數據大多爲短消息
3.擁有大量Client
4.對數據安全性無特殊要求
5.網絡負擔非常重,但對響應速度要求高
UDP:
UDP不提供複雜的控制機制,利用IP提供面向無連接的通信服務。並且它是將應用程序發來的數據在收到的那一刻,立刻按照原樣發送到網絡上的一種機制。即使是出現網絡擁堵的情況下,UDP也無法進行流量控制等避免網絡擁塞的行爲。此外,傳輸途中如果出現了丟包,UDO也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節控制,那麼不得不交給由採用UDO的應用程序去處理。換句話說,UDP將部分控制轉移到應用程序去處理,自己卻只提供作爲傳輸層協議的最基本功能。UDP有點類似於用戶說什麼聽什麼的機制,但是需要用戶充分考慮好上層協議類型並製作相應的應用程序。
TCP:
TCP充分實現了數據傳輸時各種控制功能,可以進行丟包的重發控制,還可以對次序亂掉的分包進行順序控制。而這些在UDP中都沒有。此外,TCP作爲一種面向有連接的協議,只有在確認通信對端存在時纔會發送數據,從而可以控制通信流量的浪費。TCP通過檢驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現可靠性傳輸
概述:雖然IP層將分組數據送到目的主機,但嚴格講,計算機網絡中的兩個主機通信其實是兩個主機上的應用進程通信,通信的端點不是主機而是主機上的應用進程。網絡層提供主機間的邏輯通信,運輸層提供端口間的邏輯通信。
UDP的主要特點:
1、UDP是面向無連接的運輸層協議,發送數據前不用建立連接,可靠性降低但提高效率
2、UDP是提供最大努力的交付服務
3、UDP是面向報文的,即一次發送一個報文,不合並、不拆分,但如果數據過長會在網絡層IP分片傳輸,影響網絡層效率
4、UDP無法避免網路擁塞時的數據丟失,但保證了發送數據的穩定速率
5、UDP支持一對一、一對多、多對多的通信
6、UDP首部較短只有8字節,較TCP的20字節(只包括固定字段長度)減小了開銷。
UDP首部字段:
1、源端口
2、目的端口
3、長度,數據報的長度
4、校驗和,驗證傳輸信息是否有錯,有錯就丟棄
TCP的主要特點:
1、TCP是面向連接的運輸層協議。使用TCP之前必須建立TCP連接,就跟打電話一樣,接通後才能通話
2、TCP連接是點對點的,只能有兩個端口
3、TCP提供可靠的服務,無差錯、不丟失、不重複、按序到達,而運輸層以下都是不可靠的盡力提供最大努力的服務。
4、TCP提供全雙工通信,通信兩端都設有發送緩存與接收緩存,可在空閒時發送或接受
5、TCP面向字節流
套接字(Socket)= IP地址:端口號
TCP報文首部字段:
主要首部字段解釋:
1、序號:該報文段的數據段第一個字節佔整條報文數據段的位置
2、確認號:期望收到的下一個報文段的序號(如:上一個報文段序號位600,數據段長度爲100,在正確接收後,這次期望接受的數據序號爲700)
3、窗口大小:指出允許對方發送的數據量,可動態變化
4、校驗和:驗證數據完整性與正確性
5、緊急指針:指出本報文字段中緊急數據的尾部位置,注意:當窗口爲0時也可以發送緊急數據
6個控制位解釋:
1、ACK起應答作用,佔1位;僅當ACK=1時,確認號字段纔有效,ACK=0時,確認號無效
2、SYN起同步作用;當SYN=1,ACK=0時表示:這是一個連接請求報文段。若同意連接,則在響應報文段中使得SYN=1,ACK=1。因此,SYN=1表示這是一個連接請求,或連接接受報文
3、FIN用來釋放一個連接;FIN=1表示:此報文段的發送方的數據已經發送完畢,並要求釋放TCP連接
4、PSH表示接收方應將報文交給應用層
5、RST表示連接重置
6、URG表示緊急指針,URG=1表示有緊急數據
TCP三次握手與四次揮手參看TCP三次握手與四次揮手詳解http://blog.csdn.net/zhangliangzi/article/details/50695611
TCP可靠傳輸機制
1、流量控制,滑動窗口機制——讓發送方發送速率不太快,接收方來得及接收,通過滑動窗口機制實現,即接受方多次發出響應報文修改首部字段的窗口值以控制發送方數據發送速率
2、擁塞控制,慢開始、擁塞避免、快重傳、快恢復機制
六、應用層
應用層:爲應用軟件提供了很多服務。構建與TCP協議之上,屏蔽了網絡傳輸相關的細節
應用程序收到"傳輸層"的數據,接下來就要進行解讀。由於互聯網是開放架構,數據來源五花八門,必須事先規定好格式,否則根本無法解讀。
"應用層"的作用,就是規定應用程序的數據格式。
舉例,TCP協議可以爲各種各樣的程序傳遞數據,如Email、WWW、FTP等。那麼,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了"應用層"。
最高的一層,直接面對用戶。它的數據就放在TCP數據包的"數據"部分。因現在的以太網的數據包就變成下面這樣。
Http、FTP協議
DNS:域名系統
DNS域名解析:將域名解析成對應IP地址
DNS域名服務器類型:
1、根域名服務器
2、頂級域名服務器
3、權限域名服務器
4、本地域名服務器
DNS服務器域名解析流程:
1、用戶在瀏覽器輸入要訪問的網站的域名,如果操作系統檢查到本地hosts文件中緩存着這個域名的映射關係,則直接調用,完成域名解析。
2、如果hosts文件中沒有,則瀏覽器向本地DNS請求解析,如果緩存着映射關係,則返回結果,完成解析;
3、如果本地DNS沒有,則將請求發往RootDNS(根DNS服務器),根DNS服務器會告知本地服務器去查詢網站授權的DNS服務器,即把網站授權DNS服務器的IP地址發送給本地DNS服務器(網站授權的DNS服務器即爲頂級、權限域名服務器);
4、網站授權DNS服務器將解析得到的IP地址發回本地DNS,本地DNS緩存映射關係並將IP地址發回給用戶;
5、瀏覽器在得到IP地址後,向其發出HTTP請求。
FTP:文件傳送協議,基於TCP,要求建立兩個並行的TCP連接,“控制連接”與“數據連接”
萬維網(WWW):一個大規模的、聯機式的信息儲藏所。瀏覽器就是萬維網的客戶端程序,客戶程序向服務器程序發出請求,服務器程序向客戶程序送回客戶所需要的萬維網文檔,也成爲頁面
萬維網與互聯網、以太網關係及區別:萬維網就是我們常說的互聯網,而以太網是萬維網的一種組網類型,是局域網採用的通用規範標準。
URL:統一資源標識符,萬維網用URL來唯一標識萬維網文檔
HTML:超文本標記語言
HTTP:萬維網中客戶端與服務端嚴格遵守的超文本傳輸協議,它本身是一種無狀態、無連接協議,但它依賴於TCP實現數據傳輸,而TCP是有狀態、有連接的,關於HTTP可參看HTTP必知必會http://blog.csdn.net/zhangliangzi/article/details/51336564
SMTP:簡單郵件傳送協議,同樣依賴於TCP實現郵件傳輸
POP3:郵局協議
POP3特點:採用客戶-服務器工作方式,接收郵件的用戶必須運行POP客戶程序,與接收方的ISP的郵件服務器必須運行SMTP與POP服務器程序;優點是非常簡單,缺點是隻要用戶從POP服務器中讀取了郵件之後,POP服務器就將郵件刪除
IMAP:網際報文存取協議
IMAP特點:用戶PC運行IMAP客戶端程序,然後與接收方的郵件服務器上的IMAP服務器建立TCP連接,使用戶可以直接操作郵件服務器的郵箱;IMAP最大好處就是用戶可以在不同地方使用不同計算機處理郵件,缺點就是多次查看就需要多次建立TCP連接
基於萬維網的電子郵件:163、GMAIL、新浪都使用這種郵件服務;瀏覽器編寫郵件,然後通過HTTP協議把郵件發送到該網站的郵件服務器上,然後通過SMTP將郵件發送到接收方網站的郵件服務器上,再通過HTTP把郵件發送到對應用戶的瀏覽器郵箱中。
MIME:通用互聯網郵件擴充,舊標準規定郵件文本不能包含7爲ASCII代表的字符集以外的字符,MIME定義了許多郵件內容的格式,規定了各種格式的傳送編碼,可對任何內容格式進行轉換。可通過郵件首部字段定義,如Content-Type=text/html;charset=utf-8
DHCP:動態主機配置協議。提供了一種“即插即用連網”,這種機制允許一臺計算機自動加入新的網絡並獲取IP地址。當客戶程序移植到一個新的網絡時,就可以使用DHCP自動獲取配置信息。
這是從系統的角度,解釋互聯網是如何構成的。
互聯網的總體構思,從下至上,每一層協議的設計思想。這是從設計者的角度看問題,
切換到用戶的角度,看看用戶是如何從上至下,與這些協議互動的。