intemet採用tcp/ip協議。tcp/ip是一種網際互聯通訊協議,它包括兩個核心協議tcp和ip。tcp稱為傳輸控制協議,ip稱為網際網路絡協議。在分層是有不同的標準將tcp/ip模型分為不同的層次,在osi模型中分為七層,在tcp/ip中為四層,但是常用的是將兩者進行融合,說分成五層(應用層,傳輸層,網路層,資料鏈路層,物理層)每一層都有相應的裝置,每一層都有相應的協議
tcp/ip模型有四層(應用層、傳輸層、網際層、網路介面層),每層分別具有不同的協議和功能,tcp/ip協議族是一組在不同層上的多個協議的組合。各層在實現自身的功能時,使用它的直接下層提供的服務,同時也為它的直接上層提供服務。下面說明這些協議進行協調工作的基本原理。
1.tcp/ip協議族中各協議之間的關係
tcp/ip協議族中有很多協議,這些協議處於不同的層,它們之間的關係如下圖所示。
每個應用層協議都是為了解決某一類應用問題而定義的,各種應用程序就是通過不同的應用層協議來使用網路所提供的服務。圖1-4中的應用程序代表實現不同應用層協議功能的程序。例如,實現檔案傳輸協議的ftp應用程序可以為使用者提供計算機之間的檔案傳輸服務,實現超文字傳輸協議的http應用程序可以為使用者提供瀏覽web網頁的功能等。
tcp和udp是兩個傳輸層協議。一般地,應用程序可以選擇使用tcp或者udp協議。如果應用層協議要求傳輸層提供可靠的服務,則應該選擇tcp協議;否則,如果應用層協議要求較高的資料傳輸速率,但是可以容忍一定的資料丟失,則可以選擇udp協議。tcp協議的資料單元稱為tcp報文段或簡稱tcp段(tcpsegment),udp協議的資料單元稱為udp資料報(udpdatagram)。
ip協議是網際層上的乙個主要協議。tcp和udp協議都可以直接使用ip協議所提供的服務。ip協議的資料傳送單位稱為ip資料報或ip分組。tcp報文段或udp資料報都可以封裝在ip資料報中,以便在網際網路上傳輸。除ip協議外,網際層還有其他協議,例如icmp協議用於報告差錯和其他重要資訊;igmp是多播組管理協議,是乙個與多播有關的協議;arp(位址解析協議)和rarp(逆向位址解析協議)用於提供ⅱp位址與實體地址的對映功能。ip資料報可以在不同的物理網路上進行傳送。通過乙太網傳送的資料單元稱為乙太網幀,或簡稱為幀(frame)。
2.封裝和拆封
在傳送方(也稱為源主機),當應用程式使用tcp或udp傳送使用者資料時,將使用者資料送人tcp/ip協議棧,然後自上而下地逐個通過每一層,直到被當做一串位元流送入網路。其中每一層對收到的資料都需要增加一些首部資訊,有時還需要增加尾部資訊。這些操作過程稱為封裝,如圖所示。
tcp、udp、icmp和igmp等協議都要使用ip資料報傳送資料,所以必須在ip資料報的首部加入某種標識,以說明是哪個協議的資料封裝到了ip資料報中。ip資料報首部定義的乙個8位的「協議」宇段就是為此目的而設定的。協議宇段的值為1表示icmp,為2表示igmp,為6表示tcp,為17表示udp。
類似地,許多應用程序使用tcp或udp傳送資料,則需要在tcp段或udp資料報首部定義乙個應用程式識別符號。tcp和udp都使用乙個16位的埠號來標識不同的應用程式,tcp和udp把「源埠號」和「目的埠號」分別存人tcp段首部和udp資料報首部。網路介面分別傳送和接收ip、arp、rarp的資料,同理,也必須在乙太網(假定物理網路是乙個乙太網)的首部加入乙個字段,用來說明是哪個協議的資料。為此,乙太網幀首部定義了乙個16位的「型別」字段。當接收方(也稱目的主機)收到乙個乙太網幀時,資料就開始在協議棧中自下而上傳送。各層協議利用報文首部所攜帶的協議控制資訊做相應的處理,然後去掉各層協議資料單元的首部,將封裝的資料交給上層協議。每層協議都要檢查協議首部中的協議標識,以確定讓哪乙個協議接收資料,這個過程稱為拆封。下圖說明了乙太網資料幀的拆封過程。
總而言之,傳送資料時需要自上而下,層層封裝。接收資料時需要自下而上,層層拆封。
3.兩個端系統的tcp/ip通訊
兩個端系統的通訊會涉及不同層的協議。如下圖所示,主機a和主機b在同乙個區域網(乙太網)上,兩台主機都執行實現ftp協議的應用程序,它們的通訊過程所涉及到的主要協議都標識在下圖中。
主機a主機b大多數網路應用程式都設計成客戶—伺服器方式,客戶是服務請求方,伺服器是服務提供方,伺服器為客戶提供某種服務。例如,ftp伺服器允許客戶訪問ftp伺服器所在主機上的檔案,www伺服器允許客戶(瀏覽器)訪問www伺服器所在主機上的網頁,等等。在兩個端系統的同一層上,雙方都有對應的乙個或多個協議進行通訊。例如傳輸層利用tcp或udp等進行通訊,網際層利用ip進行通訊。
上圖區域網上執行ftp的兩台主機從前面的講述可知,應用程序的資料要經過主機a(源主機)自上而下的封裝,然後在網路中傳輸,最後在主機b(目的主機)經過自下而上的拆封這樣複雜的處理過程,才能到達目的主機的應用程序。但是,對使用者來說,這些複雜的處理過程都遮蔽掉了,好像是主機a的應用程序直接把資料交給了主機b的應用程序。同理,我們可以認為,任何兩個對等層(peerlayer),例如傳輸層、網際層、網路介面層之間的通訊,如同上圖中標識的一樣,好像是將資料通過水平虛線直接傳遞給對方,這就是所謂的對等層之間的通訊。實際上,協議就是在兩個對等層之間傳遞資料時的各種規定。由此可以這樣認為:實際通訊是按垂直方向進行的,層與層之間經過封裝和拆封這樣的操作實現物理通訊。但是邏輯上,卻是在水平方向上利用協議進行的對等層通訊。在協議的控制下,對等層的通訊使得本層能夠向上層提供服務。為了實現本層協議,還需要使用下面一層所提供的服務。如果兩個端系統不在同乙個網路上,例如它們分別是在路由器連線起來的兩個不同的網路上,主機a在乙太網上,主機b在令牌環網上,通過乙個路由器使這兩個網路連線起來。乙太網上的任何主機都可以與令牌環網上的任何主機進行通訊,如下圖所示。
應用層和傳輸層使用端到端(end-to-end)協議,路由器中沒有這兩層協議,只有端系統才有這兩層協議。網際層是逐跳(hop-by-hop)協議,端系統和路由器都有網際層協議。乙個路由器具有兩個或多個網路介面,這樣才能連線兩個或多個網路。網際網路的目的之一是在應用程式中遮蔽所有的物理網路細節。在上圖中,應用層不需要關心乙個端系統是在乙太網上還是在令牌環網上,它們通過路由器進行通訊。隨著不同型別物理網路的增加,網際網路的規模變得越來越大,也需要增加路由器,但是應用層仍然是一樣的。物理網路細節的遮蔽使得網際網路功能非常強大,也非常有用。
天下武功,唯快不破
昨天v哥的一朋友租了幢樓準備搞小資情調的咖啡旅館,聽到這個訊息v哥著實吃了一驚 這不是上週一才冒出來的想法,怎麼這週三就搞定了,太tm快了。所以我也就想起來星爺 功夫 中的這句話 天下武功,無堅不破,唯快不破。太tm經典了。事情是這樣的,我這朋友 性別女 周一去西湖景區自駕遊逛了一圈,長日浸淫在城市...
天下武功無堅不破,唯快不破 yaf
天下武功無堅不破,唯快不破 yaf 最近對於yaf框架有些興趣,從最初按照鳥哥惠新宸的寫的關於yaf手冊,到自己寫乙個hello world 程式,對於我這個新手來說還 是蠻曲折的,大家都知道yaf框架是用c寫的,所以自身的效率和效能,還是很不錯的,但是缺點的就是關於yaf的文件太少,這讓不少初學者...
唯快不破 tcp ip協議棧中實現的幾種定時器
這裡總的來看看tcp中的各個定時器。tcp為每條連線總共建立了七個定時器,依次為 1 連線建立 connection establishment 定時器在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。2 重傳 retransmission 定時器在tcp傳送某個資...