七層協議
圖上圖(a)所示,其中表示層和會話層用途如下:
五層協議
資料在各層之間的傳遞過程
在向下的過程中,需要新增下層協議所需要的首部或者尾部,而在向上的過程中不斷拆開首部和尾部
路由器只有下面三層協議,因為路由器位於網路核心中,不需要為程序或者應用程式提供服務,因此也就不需要運輸層和應用層。
tcp/ip 體系結構
它只有四層,相當於五層協議中資料鏈路層和物理層合併為網路介面層。
現在的tcp/ip體系結構不嚴格遵循osi分層概念,應用層可能會直接使用ip層或者網路介面層
tcp/ip協議族是一種沙漏形狀,中間小兩邊大,ip協議在其中占用舉足輕重的地位
網路層只把分組送到目的主機,但是真正通訊的並不是主機而是主機中的程序。運輸層提供了程序間的邏輯通訊,運輸層向高層使用者遮蔽了下面網路層的核心細節,使應用程式看見的兩個運輸層實體之間有一條端到端的邏輯通訊通道。
udp和tcp的特點
udp首部格式
首部字段只有8個位元組,包括源埠、目的埠、長度、檢驗和。12位元組的偽首部是為了計算檢驗和臨時新增的
tcp首部格式
確認號:期望收到的下乙個報文段的序號。例如b正確收到a傳送來的乙個報文段,序號為501,攜帶的資料長度為200位元組,一次b期望下乙個報文段的序號為701,b傳送給a的確認保溫段中確認號就為701
資料偏移:指的是資料部分距離報文段起始處的偏移量,實際上指的是首部的長度
確認ack:當ack=1時確認號字段有效,否則無效。tcp規定,在連線建立後所有傳送的報文段都必須把ack置1
同步syn:在連線建立時用來同步序列號。當syn=1,ack=0時表示這是乙個連線請求報文段。若對方同意建立連線,則響應報文中syn=1,ack=1
終止fin:用來釋放乙個連線,當fin=1時,表示此報文段的傳送方的資料已傳送完畢,並要求釋放運輸連線
視窗:視窗值作為接收方讓傳送方設定其傳送視窗的依據。之所以要有這個限制,是因為接收方的資料快取空間是有限的
tcp的三次握手
假設 a 為客戶端,b 為伺服器端。
首先 b 處於 listen(監聽)狀態,等待客戶的連線請求。
a 向 b 傳送連線請求報文段,syn=1,ack=0,選擇乙個初始的序號 x。
b 收到連線請求報文段,如果同意建立連線,則向 a 傳送連線確認報文段,syn=1,ack=1,確認號為 x+1,同時也選擇乙個初始的序號 y。
a 收到 b 的連線確認報文段後,還要向 b 發出確認,確認號為 y+1,序號為 x+1。
b 收到 a 的確認後,連線建立。
三次握手的原因
為了防止失效的連線請求到達伺服器,讓伺服器錯誤開啟連線。
失效的連線請求是指,客戶端傳送的連線請求在網路中滯留,客戶端因為沒及時收到伺服器端傳送的連線確認,因此就重新傳送了連線請求。滯留的連線請求並不是丟失,之後還是會到達伺服器。如果不進行第三次握手,那麼伺服器會誤認為客戶端重新請求連線,然後開啟了連線。但是並不是客戶端真正開啟這個連線,因此客戶端不會給伺服器傳送資料,這個連線就白白浪費了。
tcp的四次揮手
以下描述不討論序號和確認號,因為序號和確認號的規則比較簡單。並且不討論 ack,因為 ack 在連線建立之後都為 1。
a 傳送連線釋放報文段,fin=1;
b 收到之後發出確認,此時 tcp 屬於半關閉狀態,b 能向 a 傳送資料但是 a 不能向 b 傳送資料;
當 b 要不再需要連線時,傳送連線釋放請求報文段,fin=1
a 收到後發出確認,進入 time-wait 狀態,等待 2msl 時間後釋放連線。
b 收到 a 的確認後釋放連線。
四次揮手的原因
客戶端傳送了 fin 連線釋放報文之後,伺服器收到了這個報文,就進入了 close-wait 狀態。這個狀態是為了讓伺服器端傳送還未傳送完畢的資料,傳送完畢之後,伺服器會傳送 fin 連線釋放報文。
time_wait
客戶端接收到伺服器端的 fin 報文後進入此狀態,此時並不是直接進入 closed 狀態,還需要等待乙個時間計時器設定的時間 2msl。這麼做有兩個理由:
確保最後乙個確認報文段能夠到達。如果 b 沒收到 a 傳送來的確認報文段,那麼就會重新傳送連線釋放請求報文段,a 等待一段時間就是為了處理這種情況的發生。
等待一段時間是為了讓本連線持續時間內所產生的所有報文段都從網路中消失,使得下乙個新的連線不會出現舊的連線請求報文段。
計算機網路面試題整理
面試很多時候被問到的問題,感覺都沒答好,統一整理一下 更新 8 23 get和post的區別?get和post方法沒有實質上區別,只是報文格式不同。get和post是http協議中的兩種請求方法。而 http 協議是基於 tcp ip 的應用層協議,無論 get 還是 post,用的都是同乙個傳輸層...
計算機網路面試題整理
tcp和udp的區別及使用場景 tcp的流量控制和擁塞控制 tcp的三握四揮 tcp的視窗協議 幀同步和狀態同步 tcp的流模式和udp的資料報模式 osi七層協議 各個層一些詳細的部分建議參考百科,比較詳細 為什麼要封裝成幀 資料鏈路層 什麼是物理定址 arp協議 簡單來說,就是已知ip位址尋找m...
計算機網路面試題
tcp udp區別以及tcp如何保證傳輸可靠性 tcp是基於連線的協議,udp是面向非連線的協議 tcp傳輸可靠,udp傳輸不可靠 tcp的可靠性是通過順序編號和確認 ack 來實現的。tcp在開始傳送乙個段時,首先將該段插入到傳送佇列之中,同時啟動時鐘。其後,如果收到了接受端對該段的ack資訊,就...