面試必考的電腦網路知識點梳理
傳輸層概
作用:傳輸層為它上面的應用程式層提供通訊服務。
在OSI七層參考模型中,傳輸層是面向通訊的最高層,也是使用者功能的最底層。
傳輸層兩大重要的功能:複用 和 分用。
複用:在發送端,多個應用進程公用一個傳輸層;
分用:在接收端,傳輸層會根據連接埠號碼將資料指派給不同的應用進程。
和網路層的區別:
網路層為不同主機提供通訊服務,而傳輸層為不同主機的不同應用提供通訊服務。
網路層只對報文頭部進行差錯檢測,而傳輸層對整個報文進行差錯檢測。 UDP(使用者資料包通訊協定)詳解 UDP的特點
UDP只在IP資料報服務的基礎上增加了少量的功能:複用與分用、對整個報文的差錯檢測。
UDP是不需連線的
通訊前不需要建立串連,通訊結束也無需釋放串連。
UDP是不可靠的
它是儘力而為交付,不能確保每一個資料報都送達。
UDP是面向報文的
所謂『面向報文』就是指:UDP資料轉送的單位是報文,且不會對資料作任何 拆分 和 拼接 操作。
在發送端,應用程式給傳輸層的UDP什麼樣的資料,UDP不會對資料進行切分,只增加一個UDP頭並交給網路層。
在接收端,UDP收到網路層的資料報後,去除IP資料前序部後遍交給應用程式層,不會作任何拼接操作。
UDP沒有擁塞控制
UDP始終以恒定的速率發送資料,並不會根據網路擁塞情況對發送速率作調整。這種方式有利有弊。
弊端:網路擁塞時有些報文可能會丟失,因此UDP不可靠。
優點:有些使用情境允許報文丟失,如:直播、語音通話,但對即時性要求很高,此時UDP還是很有用武之地的。
UDP支援一對一、一對多、多對多、多對一通訊
而TCP只支援一對一通訊。
UDP首部開銷小,只有8位元組。
而TCP頭部至少由20位元組,相比於TCP要高效很多。
PS:問:UDP不可靠具體體現在哪些方面。資料報丟失。資料報順序。 UDP報文頭
源連接埠
目的連接埠
長度:整個資料報的長度
檢驗和:整個資料報的檢驗和。 TCP(傳輸控制通訊協定)詳解 TCP特點
TCP是連線導向的
通訊前需要建立串連,通訊結束需要釋放串連。
TCP提供可靠交付服務
所謂『可靠』指的是:TCP發送的資料無重複、無丟失、無錯誤、與發送端順序一致。
TCP是面向位元組流的
所謂『面向位元組流』指的是:TCP以位元組為單位。雖然傳輸的過程中資料被劃分成一個個資料報,但這隻是為了方便傳輸,接收端最終接受到的資料將與發送端的資料一模一樣。
TCP提供全雙工系統通訊
所謂『全雙工系統通訊』指的是:TCP的兩端既可以作為發送端,也可以作為接收端。
一條TCP串連的兩端只能有兩個端點
TCP只能提供點到點的通訊,而UDP可以任意方式的通訊。
TCP串連 與 通訊端
什麼是『TCP串連』。
TCP串連是一種抽象的概念,表示一條可以通訊的鏈路。每條TCP串連有且僅有兩個端點,表示通訊的雙方。且雙發在任意時刻都可以作為寄件者和接收者。
什麼是『通訊端』。
一條TCP串連的兩端就是兩個通訊端。通訊端=IP地址: 連接埠號碼。因此,TCP串連=(通訊端1,通訊端2)=(IP1:連接埠號碼1,IP2:連接埠號碼2) TCP頭部
TCP頭部長度有20位元組的固定部分,選項部分長度不定,但最多40位元組,因此TCP頭部在20-60位元組之間。
源連接埠 和 目的連接埠
傳輸層和網路層一大重要區別就是傳輸層指定了資料報發往的應用進程,因此需要連接埠號碼標識。
序號
當前TCP資料報資料部分的第一個位元組的序號。我們知道,TCP是面向位元組的,它會對發送的每一個位元組進行編號,而且不同資料報之間是連續編號的。
由於本欄位4位元組,可以給[0,2^32-1]個位元組進行編號(大約4G),而且序號迴圈使用,當發送完2^32-1個位元組後,序號又從0開始。一般來說,當2^32-1個位元組被發送的時候,前面的位元組早就發送成功了,因此序號可以迴圈使用。
確認號
表示當前主機作為接收端時,期望接收的下一個位元組的編號是多少。也表示,當前主機已經正確接收的最後一個位元組序號+1。
資料位移(報文長度)
它表明了資料前序部的長度。
保留欄位
標識符
TCP有7種標識符,用於表示TCP報文的性質。它們只能為0或1。
URG=1
當URG欄位被置1,表示本資料報的資料部分包含緊急資訊,此時緊急指標有效。緊急資料一定位於當前資料包資料部分的最前面,緊急指標標明了緊急資料的尾部。如control+c:這個命令要求作業系統立即停止當前進程。此時,這條命令就會存放在資料包資料部分的開頭,並由緊急指標標識命令的位置,並URG欄位被置1。
ACK=1
ACK被置1後確認號欄位才有效。此外,TCP規定,在串連建立後傳送的所有報文段都必須把ACK置1。
PSH=1
當接收方收到PSH=1的報文後,會立即將資料交付給應用程式,而不會等到緩衝區滿後再提交。一些互動式應用需要這樣的功能,降低命令的回應時間。
RST=1
當該值為1時,表示當前TCP串連出現嚴重問題,必須要釋放重連。
SYN=1
SYN在建立串連時使用。當SYN=1,ACK=0時,表示當前報文段是一個串連請求報文。當SYN=1,ACK=1時,表示當前報文段是一個同意建立串連的應答報文。
FIN=1
FIN=1表示此報文段是一個釋放串連的請求報文。
接收視窗大小
該欄位用於實現TCP的流量控制。它表示當前接收方的接收視窗的剩餘容量,發送方收到該值後會將發送視窗調整成該值的大小。發送視窗的大小又決定了發送速率,所以接收方通過設定該值就可以控制發送放的發送速率。發送方每收到一個資料報都要調整當前的發送視窗。
檢驗和
用於接收端檢驗整個資料包在傳輸過程中是否出錯。
緊急指標
用於標識緊急資料的尾部。
選項欄位
上述欄位都是每個TCP頭部必須要有的,而選項欄位是可選的,且長度可變,最長40位元組。
最常用的選項欄位為MMS:最大報文長度。 TCP三向交握
PS:TCP協議中,主動發起請求的一端稱為『用戶端』,被動串連的一端稱為『服務端』。不管是用戶端還是服務端,TCP串連建立完後都能發送和接收資料。
起初,伺服器和用戶端都為CLOSED狀態。在通訊開始前,雙方都得建立各自的傳輸控制塊(TCB)。
伺服器建立完TCB後遍進入LISTEN狀態,此時準備接收用戶端發來的串連請求。
第一次握手
用戶端向服務端發送串連請求報文段。該報文段的頭部中SYN=1,ACK=0,seq=x。請求發送後,用戶端便進入SYN-SENT狀態。
PS1:SYN=1,ACK=0表示該報文段為串連請求報文。
PS2:x為本次TCP通訊的位元組流的初始序號。
TCP規定:SYN=1的報文段不能有資料部分,但要消耗掉一個序號。
第二次握手
服務端收到串連請求報文段後,如果同意串連,則會發送一個應答:SYN=1,ACK=1,seq=y,ack=x+1。該應答發送完成後便進入SYN-RCVD狀態。
PS1:SYN=1,ACK=1表示該報文段為串連同意的應答報文。
PS2:seq=y表示服務端作為寄件者時,發送位元組流的初始序號。