OSI七層模型
OSI七層模型
OSI
七層模型包括物理層、數據鏈路層、網路層、運輸層、會話層、表示層、應用層,其中會話層、表示層、應用層一般統稱為應用層,在TCP/IP
四層模型中物理層與數據鏈路層歸為網路介面層,網路層與運輸層是單獨的層級,會話層、表示層、應用層歸為應用層。
物理層
物理層的主要任務描述為確定與傳輸媒體的介面的一些特性,提供用於建立、保持和斷開物理連接的機械的、電氣的、功能的和過程的條件,也就是說物理層提供有關同步和比特流在物理媒體上的傳輸手段。
訊號相關概念
- 單向通訊,也稱單工通訊,只能有一個方向的通訊而沒有反方向的交互。
- 雙向交替通訊,也稱半雙工通訊,通訊的雙方都可以發送資訊,但不能雙方同時發送,也不能同時接收。
- 雙向同時通訊,也稱全雙工通訊,通訊的雙方可以同時發送和接收資訊。
- 基頻訊號,即基本頻帶訊號,來自信源的訊號,像電腦輸出的代表各種文字或影像文件的數據訊號都屬於基頻訊號。
- 帶通訊號,把基頻訊號經過載波調製後,把訊號的頻率範圍搬移到較高的頻段以便在信道中傳輸,即僅在一段頻率範圍內能夠通過信道。
基本二元調製方法
- 調幅
AM
:載波的振幅隨基頻數字訊號而變化。 - 調頻
FM
:載波的頻率隨基頻數字訊號而變化。 - 調相
PM
:載波的初始相位隨基頻數字訊號而變化。
信道復用
- 頻分復用
FDM
: 將用於傳輸信道的總頻寬劃分成若干個子頻帶或稱為子信道,每一個子信道傳輸1
路訊號。 - 時分復用
TDM
: 時分復用則是將時間劃分為一段段等長的時分復用幀TDM
幀,每一個時分復用的用戶在每一個TDM
幀中佔用固定序號的時隙。 - 統計時分復用
STDM
: 根據用戶實際需要動態分配線路資源的時分復用方法,只有當用戶有數據要傳輸時才給他分配線路資源。 - 波分復用
WDM
: 就是光的頻分復用。 - 碼分復用
CDM
: 靠不同的編碼來區分各路原始訊號,有碼分多址,頻分多址、時分多址和同步碼分多址等相關技術。
數據鏈路層
數據鏈路層用於建立、維持和拆除鏈路連接,實現無差錯傳輸的功能。將比特組合成位元組,再將位元組組合成幀,使用鏈路層地址,在乙太網使用MAC
地址,來訪問介質,並進行差錯檢測。
基本功能
- 封裝成幀: 在一段數據的前後分別添加首部和尾部,然後就構成了一個幀,確定幀的界限。
- 透明傳輸: 當幀中出現控制字元時便插入一個轉義字元,通常採用字元填充或零比特填充的方式。
- 差錯控制: 由於物理線路存在雜訊,可能出現比特差錯,可以採用糾錯碼或檢測碼的方式進行差錯控制,由於糾錯碼較為複雜且攜帶較多冗餘資訊,一般採用檢測碼配合重傳機制,一般常用檢測碼是循環冗餘編碼
CRC
。
PPP協議
- 簡單
- 封裝成幀
- 透明性
- 多種網路層協議
- 多種類型鏈路
- 差錯檢測
- 檢測連接狀態
- 最大傳送單元
- 網路層地址協商
- 數據壓縮協商
乙太網CSMA/CD協議
- 多點接入: 許多電腦以多點接入的方式連接在一根匯流排上。
- 載波監聽: 每一個站在發送數據之前先要檢測一下匯流排上是否有其他電腦在發送數據,如果有,則暫時不要發送數據,以免發生碰撞。
- 碰撞檢測: 也稱為衝突檢測,當匯流排上至少有兩個站同時在發送數據,表明產生了碰撞。
- 半雙工通訊: 通訊的雙方都可以發送資訊,但不能雙方同時發送,也不能同時接收。
- 爭用期: 將端到端往返時延稱為爭用期,經過爭用期這段時間還沒有檢測到碰撞,就能肯定這次發送不會發生碰撞,乙太網取
51.2
微秒為爭用期。 - 二進位指數類型退避演算法: 發生碰撞的站在停止發送數據後,要推遲一個隨機時間才能再發送數據。
- 最短有效幀長: 如果發生衝突,就一定是在發送的前
64
位元組之內,乙太網規定凡長度小於64
位元組的幀都是由於衝突而異常中止的無效幀。 - 透明網橋: 網橋通過自學習和轉發幀以及生成樹演算法,記錄
MAC
地址和介面資訊,生成轉發表,從而拓展區域網。
網路層
網路層規定了網路連接的建立、維持和拆除的協議,它的主要功能是利用數據鏈路層所提供的相鄰節點間的無差錯數據傳輸功能,通過路由選擇和中繼功能,實現兩個系統之間的連接。
採用設計
- 網路層只提供簡單靈活的、無連接的、盡最大努力交付的數據報服務。
- 網路在發送分組時不需要先建立連接。每一個分組即
IP
數據報,獨立發送,與其前後的分組無關,即不進行編號。 - 網路層不提供服務品質的承諾,即所傳送的分組可能出錯、丟失、重複和失序,也不保證分組傳送的時限。
虛電路與電路交換
- 虛電路表示這只是一條邏輯上的連接,分組都沿著這條邏輯連接按照存儲轉發方式傳送,而並不是真正建立了一條物理連接。
- 電路交換的電話通訊是先建立了一條真正的連接,因此分組交換的虛連接和電路交換的連接只是類似,但並不完全一樣。
虛電路與數據報
對比方面 | 虛電路服務 | 數據報服務 |
---|---|---|
思路 | 可靠通訊應當由網路來保證 | 可靠通訊應當由用戶主機來保證 |
建立連接 | 必須有 | 不需要 |
終點地址 | 僅在連接建立階段使用,每個分組使用短的虛電路號 | 每個分組都有終點的完整地址 |
分組轉發 | 屬於同一條虛電路的分組均按照同一路由進行轉發 | 每個分組獨立選擇路由進行轉發 |
當結點出故障時 | 所有通過出故障的結點的虛電路均不能工作 | 出故障的結點可能會丟失分組,一些路由可能會發生變化 |
分組的順序 | 總是按發送順序到達終點 | 到達終點時不一定按發送順序 |
端到端的差錯處理和流量控制 | 可以由網路負責,也由用戶主機負責 | 可以由用戶主機負責 |
IP地址分類
A
類地址: 網路號欄位Net-Id
為1
位元組,主機號欄位Host-Id
為3
位元組。B
類地址: 網路號欄位Net-Id
為2
位元組,主機號欄位Host-Id
為2
位元組。C
類地址: 網路號欄位Net-Id
為3
位元組,主機號欄位Host-Id
為1
位元組。D
類地址: 多播地址。E
類地址: 保留為今後使用。
ARP協議
- 不管網路層使用的是什麼協議,在實際網路的鏈路上傳送數據幀時,最終還是必須使用硬體“MAC`地址。
- 每一個主機都設有一個
ARP
高速快取,裡面有所在的區域網上的各主機和路由器的IP
地址到硬體MAC
地址的映射表。 ARP
是解決同一個區域網上的主機或路由器的IP
地址和硬體MAC
地址的映射問題。
ICMP協議
ICMP
報文的種類有兩種,即ICMP
差錯報告報文和ICMP
詢問報文。ICMP
協議主要用於在主機與路由器之間傳遞控制資訊,包括報告錯誤、交換受限控制和狀態資訊等。當遇到IP
數據無法訪問目標、IP
路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP
消息,ping
命令就是基於ICMP
協議。
劃分子網方式
- 從主機號借用若干個位作為子網號
Subnet-id
,而主機號Host-Id
也就相應減少了若干個位。 - 使用子網掩碼標識將
IP
地址劃分成網路地址和主機地址兩部分。 - 使用無分類域間路由選擇
CIDR
,在IP
地址後面加上一個斜線/
,然後寫上網路前綴所佔的位數,將網路前綴都相同的連續的IP
地址組成CIDR
地址塊。
路由協議
- 內部網關協議
IGP
,即在一個自治系統內部使用的路由選擇協議,目前這類路由選擇協議使用得最多,如RIP
和OSPF
協議。 - 外部網關協議
EGP
,若源站和目的站處在不同的自治系統中,當數據報傳到一個自治系統的邊界時,就需要使用一種協議將路由選擇資訊傳遞到另一個自治系統中,這樣的協議就是外部網關協議EGP
,在外部網關協議中目前使用最多的是BGP-4
。
RIP協議
- 僅和相鄰路由器交換資訊。
- 交換的資訊是當前本路由器所知道的全部資訊,即自己的路由表。
- 按固定的時間間隔交換路由資訊。
RIP
存在的一個問題是當網路出現故障時,要經過比較長的時間才能將此資訊傳送到所有的路由器。RIP
協議最大的優點就是實現簡單,開銷較小。RIP
限制了網路的規模,它能使用的最大距離為15
,16
表示不可達。路由器之間交換的路由資訊是路由器中的完整路由表,因而隨著網路規模的擴大,開銷也就增加。
OSPF協議
- 向本自治系統中所有路由器發送資訊,這裡使用的方法是洪泛法。
- 發送的資訊就是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分資訊,鏈路狀態就是說明本路由器都和哪些路由器相鄰,以及該鏈路的度量。
- 只有當鏈路狀態發生變化時,路由器才用洪泛法向所有路由器發送此資訊。
- 由於各路由器之間頻繁地交換鏈路狀態資訊,因此所有的路由器最終都能建立一個鏈路狀態資料庫。
- 這個資料庫實際上就是全網的拓撲結構圖,它在全網範圍內是一致的,這稱為鏈路狀態資料庫的同步。
OSPF
的鏈路狀態資料庫能較快地進行更新,使各個路由器能及時更新其路由表。OSPF
的更新過程收斂得快是其重要優點。OSPF
規定每隔一段時間刷新一次資料庫中的鏈路狀態。OSPF
沒有壞消息傳播得慢的問題。- 一個路由器的鏈路狀態只涉及到與相鄰路由器的連通狀態,因而與整個互聯網的規模並無直接關係,當互聯網規模很大時,
OSPF
協議表現要比距離向量協議RIP
好。
BGP協議
BGP
是不同自治系統的路由器之間交換路由資訊的協議。- 每一個自治系統的管理員要選擇至少一個路由器作為該自治系統的
BGP
發言人。 - 一個
BGP
發言人與其他自治系統中的BGP
發言人要交換路由資訊,就要先建立TCP
連接,然後在此連接上交換BGP
報文以建立BGP
會話,利用BGP
會話交換路由資訊。 - 使用
TCP
連接能提供可靠的服務,也簡化了路由選擇協議。 - 使用
TCP
連接交換路由資訊的兩個BGP
發言人,彼此成為對方的鄰站或對等站。
內網IP段
A
類:10.0.0.0 - 10.255.255.255
B
類:172.16.0.0 - 172.31.255.255
C
類:192.168.0.0 - 192.168.255.255
運輸層
運輸層完成網路各層次之間的數據傳送控制,主要功能是開放系統之間的數據的收發確認,同時還用於彌補各種通訊網路的品質差異,對經過下三層之後仍然存在的傳輸差錯進行恢復,進一步提高可靠性,另外,還通過復用、分段和組合、連接和分離、分流和合流等技術措施,提高吞吐量和服務品質。
TCP協議
TCP
是面向連接的協議,提供全雙工通訊,需要建立鏈接之後再傳輸數據,數據傳輸負載相對較大。TCP
提供可靠交付的服務,使用流量控制和擁塞控制等服務保證可靠通訊。TCP
首部最小20
位元組,最大60
位元組,包括源埠、目的埠、序號、確認號、數據偏移、控制標誌、窗口、校驗和、緊急指針、選項等資訊。TCP
只能是一對一通訊。TCP
面向位元組流通訊。TCP
保證數據傳輸的順序,通過給TCP
連接中傳送數據流的每個位元組都編上序號來確定傳輸順序。TCP
提供校驗和、確認應答、序列號、超時重傳、連接管理、流量控制、擁塞控制等功能。TCP
適用於要求可靠傳輸的應用,如文件傳輸等
三次握手
client server
主動打開 → SYN=1,seq=x → 被動打開,接收
(同步已發送) (同步收到)
接收 ← SYN=1,ACK=1,seq=y,ack=x+1 ← 發送
(已建立鏈接) (同步收到)
發送 → ACK=1,seq=x+1,ack=y+1 → 接收
(已建立鏈接) (已建立鏈接)
- 第一次握手:客戶端主動鏈接伺服器,發送初始序列號
seq=x
與SYN=1
同步請求標誌,並進入同步已發送SYN_SENT
狀態,等待伺服器確認。 - 第二次握手:服務端收到消息後發送確認標誌
ACK=1
與同步請求標誌SYN=1
,發送自己的序列號seq=y
以及客戶端確認序號ack=x+1
,此時伺服器進入同步收到SYN_RECV
狀態。 - 第三次握手:客戶端收到消息後發送確認標誌
ACK=1
,發送自己的序列號seq=x+1
與伺服器確認號ack=y+1
,發送過後即確認鏈接已建立狀態ESTABLISHED
,服務端接收確認資訊後進入鏈接已建立狀態ESTABLISHED
四次揮手
client server
主動關閉 → FIN=1,seq=u → 被動關閉,接收
(終止等待1) (關閉等待)
接收 ← ACK=1,seq=v,ack=u+1 ← 發送
(終止等待2) (關閉等待)
接收 ← FIN=1,ACK=1,seq=w,ack=u+1 ← 發送
(時間等待) (最後確認)
發送 → ACK=1,seq=u+1,ack=w+1 → 接收
(時間等待 2MSL 關閉) (關閉)
- 第一次揮手:客戶端發出釋放標識
FIN=1
,自己的序列號seq=u
,進入終止等待FIN-WAIT-1
狀態 - 第二次揮手:服務端收到消息後發出
ACK=1
確認標誌和客戶端的確認號ack=u+1
,自己的序列號seq=v
,進入關閉等待CLOSE-WAIT
狀態,客戶端收到消息後進入終止等待FIN-WAIT-2
狀態 - 第三次揮手:伺服器發送釋放標識
FIN=1
訊號,確認標誌ACK=1
,確認序號ack=u+1
,自己的序列號seq=w
,伺服器進入最後確認LAST-ACK
狀態 - 第四次揮手:客戶端收到回復後,發送確認標誌
ACK=1
,確認序號ack=w+1
,自己的序列號seq=u+1
,客戶端進入時間等待TIME-WAIT
狀態,經過2
個最長報文段壽命後,客戶端CLOSE
。伺服器收到確認後,立刻進入CLOSE
狀態。
傳輸控制
- 流量控制: 利用滑動窗口實現流量控制,讓發送方的發送速率不要太快,既要讓接收方來得及接收,也不要使網路發生擁塞。
- 擁塞控制
- 慢開始,只要網路沒有出現擁塞,擁塞窗口就再增大一些,以便把更多的分組發送出去,但只要網路出現擁塞,擁塞窗口就減小一些,以減少注入到網路中的分組數。
- 擁塞避免,無論在慢開始階段還是在擁塞避免階段,只要發送方判斷網路出現擁塞,就要把慢開始門限設置為出現擁塞時的發送方窗口值的一半。
- 快重傳: 首先要求接收方每收到一個失序的報文段後就立即發出重複確認,這樣做可以讓發送方及早知道有報文段沒有到達接收方,發送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段。
- 快恢復: 當發送端收到連續三個重複的確認時,就執行乘法減小演算法,把慢開始門限減半,但接下去不執行慢開始演算法,而是設置為慢開始門限減半後的數值,然後開始執行擁塞避免演算法加法增大,使擁塞窗口緩慢地線性增大。
- 超時重傳: 一般使用
Karn
演算法,當計算平均往返時延RTT
時,只要報文段重傳了,就不採用其往返時間樣本,這樣得出的加權平均平均往返時間RTT
和超時重傳時間RTO
就較準確。
連續ARQ協議
- 接收方一般採用累積確認的方式。即不必對收到的分組逐個發送確認,而是對按序到達的最後一個分組發送確認,這樣就表示:到這個分組為止的所有分組都已正確收到了。
- 累積確認有的優點是:容易實現,即使確認丟失也不必重傳。缺點是:不能向發送方反映出接收方已經正確收到的所有分組的資訊。
UDP協議
UDP
是無連接的,即發送數據之前不需要建立連接,數據傳輸負載相對較小。UDP
使用盡最大努力交付,即不保證可靠交付,同時也不使用流量控制和擁塞控制。UDP
首部8
位元組,包括源埠、目的埠、長度、校驗和資訊。UDP
具有單播、多播、廣播的功能,支援一對一、一對多、多對多、多對一的數據傳輸方式。UDP
是面向報文通訊,對應用層交下來的報文,既不合併,也不拆分,而是保留這些報文的邊界,在添加首部後就向下交付IP
層。UDP
不保證數據傳輸的順序,需要應用層程式在數據段加入序號等方式控制順序。UDP
只在IP
的數據報服務之上增加了很少一點的功能,即埠的功能和差錯檢測的功能。UDP
適用於實時應用,如網路電話、影片會議、直播等
應用層
一般將會話層、表示層、應用層歸為為應用層。
會話層
會話層依靠傳輸層以下的通訊功能使數據傳送功能在開放系統間有效地進行。其主要功能是按照在應用進程之間的約定,按照正確的順序收發數據,進行各種形式的對話。控制方式可以歸納為以下兩類:一是為了在會話應用中易於實現接受處理和發送處理的逐次交替變換,設置某一時刻只有一端發送數據。因此需要有交替改變發信端的傳送控制。二是在類似文件傳送等單方向傳送大量數據的情況下,為了防備應用處理中出現意外,在傳送數據的過程中需要給數據記上標記。當出現意外時,可以由記標記處重發。例如可以將長文件分頁發送,當收到上頁的接受確認後,再發下頁的內容。
表示層
表示層的主要功能是把應用層提供的資訊變換為能夠共同理解的形式,提供字元程式碼、數據格式、控制資訊格式、加密等的統一表示,表示層僅對應用層資訊內容的形式進行變換,而不改變其內容本身。
應用層
應用層是OSI
參考模型的最高層,其功能是實現應用進程之間的資訊交換,同時還具有一系列業務處理所需要的服務功能。
常見應用層協議
DNS
協議: 域名服務協議,將域名地址轉換為IP
地址,域名解析查詢時通常使用UDP
傳輸數據,默認埠53
,在區域傳輸數據同步時一般使用TCP
傳輸數據。FTP
協議: 文件傳輸協議,提供互動式的訪問,允許客戶指明文件的類型與格式,並允許文件具有存取許可權,使用TCP
進行數據傳輸,控制資訊默認21
埠,主動模式下數據傳輸默認20
埠,被動模式下默認伺服器與客戶端協商在39000-40000
之間的埠。TFTP
協議: 簡單文件傳送協議,很小且易於實現的文件傳送協議,使用UDP
傳輸數據,默認69
埠。TELNET
協議: 遠程終端協議,簡單的遠程終端協議,明文傳輸協議,使用TCP
傳輸數據,默認埠23
。SSH
協議: 安全外殼協議,提供安全的遠程終端會話,使用TCP
傳輸數據,默認埠22
。HTTP
協議: 超文本傳輸協議,簡單的請求響應協議,使用TCP
傳輸數據,默認埠80
。HTTP
協議: 超文本傳輸安全協議,在HTTP
協議的基礎下加入SSL
層實現加密傳輸,使用TCP
傳輸數據,默認埠443
。SMTP
協議: 簡單郵件傳輸協議,提供可靠且有效的電子郵件傳輸的協議,使用TCP
傳輸數據,默認埠25
。POP3
協議: 郵局協議,簡單的郵件讀取協議,使用TCP
傳輸數據,默認埠110
。IMAP
協議: 交互郵件訪問協議,互動式進行郵件的訪問,使用TCP
傳輸數據,默認埠143
。DHCP
協議: 動態主機配置協議,用於動態分配IP
地址,使用UDP
傳輸數據,客戶端發送到DHCP
伺服器默認67
埠,DHCP
伺服器應答客戶端默認68
埠。SNMP
協議: 簡單網路管理協議,用於IP
網路管理的協議,使用UDP
傳輸數據,默認代理埠161
與管理站埠162
。
每日一題
//github.com/WindrunnerMax/EveryDay