1.概述
計算機體系結構
計算機網(wǎng)絡

五層協(xié)議
application layer應用層:為特定應用程序通信的協(xié)議和規(guī)則,如DNS、HTTP,傳輸報文(message)為數(shù)據(jù)段
transport layer運輸層:為兩臺主機進程通信提供通用的數(shù)據(jù)傳輸服務。應用層協(xié)議很多,定義傳輸協(xié)議可以不斷支持新的應用層協(xié)議。有兩大協(xié)議:傳輸控制協(xié)議TCP協(xié)議:提供面向連接的、可靠的數(shù)據(jù)傳輸服務,數(shù)據(jù)單位為報文段(segment);用戶數(shù)據(jù)報協(xié)議:UDP 提供無連接的、盡最大努力交付的數(shù)據(jù)傳輸協(xié)議。TCP提供完整性服務,UDP提供及時性服務。
網(wǎng)絡層:為主機提供數(shù)據(jù)傳輸服務。運輸層為進程提供服務,把運輸層的報文段或者用戶數(shù)據(jù)報分組打包成為IP數(shù)據(jù)報(分組、數(shù)據(jù)報),目的是選擇合適的路由
數(shù)據(jù)鏈路層:針對兩臺主機間的數(shù)據(jù)傳輸服務,為同一鏈路的主機提供數(shù)據(jù)傳輸服務,將ip數(shù)據(jù)報封裝成幀,將ip數(shù)據(jù)報組裝成幀frame,和差錯控制信息,出錯丟棄,由上層協(xié)議負責控制。
物理層:比特流傳輸協(xié)議,不考慮具體的媒介。屏蔽媒介和手段差異。
OSI七層協(xié)議
表示層:數(shù)據(jù)壓縮、加密,不關心數(shù)據(jù)儲存情況
會話層:建立和關閉回話//五層沒有這些,交給開發(fā)者
TCP/IP
只有四層,網(wǎng)絡接口層相當于五層的物理層和數(shù)據(jù)鏈路層
數(shù)據(jù)在各層之間的傳遞過程
在向下的過程中,需要添加下層協(xié)議所需要的首部或者尾部,而在向上的過程中不斷拆開首部和尾部。
路由器只有下面三層協(xié)議,因為路由器位于網(wǎng)絡核心中,不需要為進程或者應用程序提供服務,因此也就不需要傳輸層和應用層。
2.物理層
單工
半雙工
雙工
帶通帶阻
3.數(shù)據(jù)鏈路層
1.封裝成幀
將上一層轉交下來的分組(ip數(shù)據(jù)報)封裝成幀,添加首尾部標記開始和結束。SOH EOT 接受知道完整情況
規(guī)定數(shù)據(jù)部分MTU最大數(shù)據(jù)單元,盡量保證首尾占比較小
2.透明傳輸
使傳輸?shù)姆纸M透明,IP數(shù)據(jù)報出現(xiàn)幀定界符,使用字符填充,轉義
3.差錯檢測
誤碼能夠檢驗出,使用循環(huán)冗余檢驗CRC。
CSMA/CD
多點接入
載波監(jiān)聽
碰撞檢測
PPP協(xié)議
互聯(lián)網(wǎng)用戶需要連接到ISP才能實現(xiàn)接入互聯(lián)網(wǎng),PPP協(xié)議是和ISP通信時使用的協(xié)議
幀格式

F幀定界符 1
A 無意義1
C 無意義1
協(xié)議 2
IP數(shù)據(jù)報 MTU1500
FCS 2,循環(huán)冗余檢驗
F 幀定界符
0x7d轉義 7E->7d5e 7d->7d5d
MAC地址
鏈路層地址 6字節(jié) 48位,多少網(wǎng)卡就有多少mac地址
以太網(wǎng)
星形拓撲網(wǎng),mac幀發(fā)送廣播,由網(wǎng)卡判斷mac地址決定是否接收
以太網(wǎng)幀:

目的地址 6
源地址 6
類型 2。0x0800即ip協(xié)議
mtu 46~1500
FCFS 4
最小64,最大1518
檢測到錯誤就重新傳,不負責重傳。傳輸中首尾部發(fā)生變化
交換機
具有自學習能力,交換表存接口和mac地址

4.網(wǎng)絡層
網(wǎng)絡層是互聯(lián)網(wǎng)的核心,靈活簡潔,只提供無連接的 盡最大努力的數(shù)據(jù)報服務,傳輸單位,ip數(shù)據(jù)報
使用ip連接整個網(wǎng)絡,使其統(tǒng)一。
與 IP 協(xié)議配套使用的還有三個協(xié)議:
- 地址解析協(xié)議 ARP(Address Resolution Protocol)
- 網(wǎng)際控制報文協(xié)議 ICMP(Internet Control Message Protocol)
- 網(wǎng)際組管理協(xié)議 IGMP(Internet Group Management Protocol)
虛擬網(wǎng)絡
虛電路:面向連接,保存一切資源
數(shù)據(jù)報服務,出錯、失序、丟失、重復都不管,由上層協(xié)議保證。
ARP協(xié)議 地址解析協(xié)議
知道ip而不知道硬件地址MAC地址,在主機的arp高速緩存中存放一個mac和ip地址映射表
A向本局域網(wǎng)發(fā)送ip數(shù)據(jù)報時,先查arp緩存有無Bip地址,有就直接發(fā)給其mac。
若沒有B,有可能B不再本網(wǎng),或者B剛加入,arp緩存沒有。
1)arp向本網(wǎng)發(fā)送請求分組,我是192.168.1.1,硬件地址xxx,請問192.168.1.2在嗎?
2)所有主機都收到
3)對應主機應答,將a寫入arp緩存,并發(fā)送應答分組,我是192.168.1.1,mac地址yyy 其余的主機不理睬,單播
ip數(shù)據(jù)報格式

最低20字節(jié),5個32位字,只有首部
版本:4位
首部長度 4位,最小5(首部固定長度),最大15,是32位子,即首部=x*4字節(jié)??蛇x部分不是4字節(jié)倍數(shù)填充
區(qū)分服務:8位 來獲取更好服務,一般不用
總長度:16位
標識符:16位 每一個都不同,??循環(huán)使用
標志位 :3位 MF 更多分片 DF 禁止分片 第三位沒用
片偏移 13位。 8字節(jié)為單位,分片必須是64的倍數(shù)
生存時間 8位 TTL每次轉發(fā)-1
協(xié)議 8位 數(shù)據(jù)報攜帶的數(shù)據(jù)是哪個協(xié)議的
首部檢驗和 16位,只檢查首部, 檢驗和置為0,首部分為16位字 反碼運算數(shù)術相加,結果的反碼和原先一致
子網(wǎng)劃分
ip and 子網(wǎng)掩碼 子網(wǎng)號
掩碼 255.255.x.x
2^bit(x)-2 個子網(wǎng)(除去全0和全1) 不能全0和全1
單cdir規(guī)定可以了!
cdir地址塊 128.14.35.7/20 屬于128.14.32.0/20地址塊
網(wǎng)際控制協(xié)議ICMP

ICMP 報文分為差錯報告報文和詢問報文。

1. Ping
Ping 是 ICMP 的一個重要應用,主要用來測試兩臺主機之間的連通性。
Ping 的原理是通過向目的主機發(fā)送 ICMP Echo 請求報文,目的主機收到之后會發(fā)送 Echo 回答報文。Ping 會根據(jù)時間和成功響應的次數(shù)估算出數(shù)據(jù)包往返時間以及丟包率。
2. Traceroute
Traceroute 是 ICMP 的另一個應用,用來跟蹤一個分組從源點到終點的路徑。
Traceroute 發(fā)送的 IP 數(shù)據(jù)報封裝的是無法交付的 UDP 用戶數(shù)據(jù)報,并由目的主機發(fā)送終點不可達差錯報告報文。
- 源主機向目的主機發(fā)送一連串的 IP 數(shù)據(jù)報。第一個數(shù)據(jù)報 P1 的生存時間 TTL 設置為 1,當 P1 到達路徑上的第一個路由器 R1 時,R1 收下它并把 TTL 減 1,此時 TTL 等于 0,R1 就把 P1 丟棄,并向源主機發(fā)送一個 ICMP 時間超過差錯報告報文;
- 源主機接著發(fā)送第二個數(shù)據(jù)報 P2,并把 TTL 設置為 2。P2 先到達 R1,R1 收下后把 TTL 減 1 再轉發(fā)給 R2,R2 收下后也把 TTL 減 1,由于此時 TTL 等于 0,R2 就丟棄 P2,并向源主機發(fā)送一個 ICMP 時間超過差錯報文。
- 不斷執(zhí)行這樣的步驟,直到最后一個數(shù)據(jù)報剛剛到達目的主機,主機不轉發(fā)數(shù)據(jù)報,也不把 TTL 值減 1。但是因為數(shù)據(jù)報封裝的是無法交付的 UDP,因此目的主機要向源主機發(fā)送 ICMP 終點不可達差錯報告報文。
- 之后源主機知道了到達目的主機所經(jīng)過的路由器 IP 地址以及到達每個路由器的往返時間。
虛擬專用網(wǎng) VPN
由于 IP 地址的緊缺,一個機構能申請到的 IP 地址數(shù)往往遠小于本機構所擁有的主機數(shù)。并且一個機構并不需要把所有的主機接入到外部的互聯(lián)網(wǎng)中,機構內的計算機可以使用僅在本機構有效的 IP 地址(專用地址)。
有三個專用地址塊:
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
VPN 使用公用的互聯(lián)網(wǎng)作為本機構各專用網(wǎng)之間的通信載體。專用指機構內的主機只與本機構內的其它主機通信;虛擬指好像是,而實際上并不是,它有經(jīng)過公用的互聯(lián)網(wǎng)。

網(wǎng)絡地址轉換 NAT
專用網(wǎng)內部的主機使用本地 IP 地址又想和互聯(lián)網(wǎng)上的主機通信時,可以使用 NAT 來將本地 IP 轉換為全球 IP。
在以前,NAT 將本地 IP 和全球 IP 一一對應,這種方式下?lián)碛?n 個全球 IP 地址的專用網(wǎng)內最多只可以同時有 n 臺主機接入互聯(lián)網(wǎng)。為了更有效地利用全球 IP 地址,現(xiàn)在常用的 NAT 轉換表把傳輸層的端口號也用上了,使得多個專用網(wǎng)內部的主機共用一個全球 IP 地址。使用端口號的 NAT 也叫做網(wǎng)絡地址與端口轉換 NAPT。

路由選擇協(xié)議
路由選擇協(xié)議都是自適應的,能隨著網(wǎng)絡通信量和拓撲結構的變化而自適應地進行調整。
互聯(lián)網(wǎng)可以劃分為許多較小的自治系統(tǒng) AS,一個 AS 可以使用一種和別的 AS 不同的路由選擇協(xié)議。
可以把路由選擇協(xié)議劃分為兩大類:
- 自治系統(tǒng)內部的路由選擇:RIP 和 OSPF
- 自治系統(tǒng)間的路由選擇:BGP
1. 內部網(wǎng)關協(xié)議 RIP
RIP 是一種基于距離向量的路由選擇協(xié)議。距離是指跳數(shù),直接相連的路由器跳數(shù)為 1。跳數(shù)最多為 15,超過 15 表示不可達。
RIP 按固定的時間間隔僅和相鄰路由器交換自己的路由表,經(jīng)過若干次交換之后,所有路由器最終會知道到達本自治系統(tǒng)中任何一個網(wǎng)絡的最短距離和下一跳路由器地址。
距離向量算法:
- 對地址為 X 的相鄰路由器發(fā)來的 RIP 報文,先修改報文中的所有項目,把下一跳字段中的地址改為 X,并把所有的距離字段加 1;
- 對修改后的 RIP 報文中的每一個項目,進行以下步驟:
- 若原來的路由表中沒有目的網(wǎng)絡 N,則把該項目添加到路由表中;
- 否則:若下一跳路由器地址是 X,則把收到的項目替換原來路由表中的項目;否則:若收到的項目中的距離 d 小于路由表中的距離,則進行更新(例如原始路由表項為 Net2, 5, P,新表項為 Net2, 4, X,則更新);否則什么也不做。
- 若 3 分鐘還沒有收到相鄰路由器的更新路由表,則把該相鄰路由器標為不可達,即把距離置為 16。
RIP 協(xié)議實現(xiàn)簡單,開銷小。但是 RIP 能使用的最大距離為 15,限制了網(wǎng)絡的規(guī)模。并且當網(wǎng)絡出現(xiàn)故障時,要經(jīng)過比較長的時間才能將此消息傳送到所有路由器。
2. 內部網(wǎng)關協(xié)議 OSPF
開放最短路徑優(yōu)先 OSPF,是為了克服 RIP 的缺點而開發(fā)出來的。
開放表示 OSPF 不受某一家廠商控制,而是公開發(fā)表的;最短路徑優(yōu)先表示使用了 Dijkstra 提出的最短路徑算法 SPF。
OSPF 具有以下特點:
- 向本自治系統(tǒng)中的所有路由器發(fā)送信息,這種方法是洪泛法。
- 發(fā)送的信息就是與相鄰路由器的鏈路狀態(tài),鏈路狀態(tài)包括與哪些路由器相連以及鏈路的度量,度量用費用、距離、時延、帶寬等來表示。
- 只有當鏈路狀態(tài)發(fā)生變化時,路由器才會發(fā)送信息。
所有路由器都具有全網(wǎng)的拓撲結構圖,并且是一致的。相比于 RIP,OSPF 的更新過程收斂的很快。
3. 外部網(wǎng)關協(xié)議 BGP
BGP(Border Gateway Protocol,邊界網(wǎng)關協(xié)議)
AS 之間的路由選擇很困難,主要是由于:
- 互聯(lián)網(wǎng)規(guī)模很大;
- 各個 AS 內部使用不同的路由選擇協(xié)議,無法準確定義路徑的度量;
- AS 之間的路由選擇必須考慮有關的策略,比如有些 AS 不愿意讓其它 AS 經(jīng)過。
BGP 只能尋找一條比較好的路由,而不是最佳路由。
每個 AS 都必須配置 BGP 發(fā)言人,通過在兩個相鄰 BGP 發(fā)言人之間建立 TCP 連接來交換路由信息。

參考文獻
1.《計算機網(wǎng)絡》-計算機網(wǎng)絡, 謝希仁
2.cyc大佬的筆記https://cyc2018.github.io/CS-Notes