想更一進步的支持我,請掃描下方的二維碼,你懂的~算法
因特網的核心部分是由許多網絡
和把它們互連起來的路由器
組成,而主機處在因特網的邊緣部分
。緩存
路由器:實現分組交換的關鍵構建,在路由器中的輸入和輸出端口之間沒有直接連線
(並不是面向鏈接)。
任務是轉發收到的分組
-- 網絡核心部分最重要的功能。路由器收到一個分組,先暫時存儲下來,再檢查其首部,查找轉發表,按照首部的目的地址,找到合適的接口轉發出去,把分組交給下一個路由器。這樣一步一步地以存儲轉發
的方式,把分組交付到最終的目的主機。目的主機收到分組後剝去首部還原成報文。服務器
路由器處理分組的過程是:網絡
報文:併發
報文。在發送報文以前,先把較長的報文劃分紅爲一個個更小的等長
數據段, 在每個數據段前面,加上一些必要的控制信息組成的
首部(也稱爲
包頭)後,就構成了一個
分組,也成爲
包`。分組是因特網中傳送的數據單元。而分組的首部很是重要,由於首部包含了諸如目的地址和源地址等重要信息,每個分組才能在因特網中獨立地選擇傳輸路徑。分佈式
適配器/網絡接口卡/網卡
適配器的重要功能:測試
即計算機經過適配器來和局域網進行通訊。spa
集線器很像一個多接口的轉發器,工做在物理層.
用集線器能夠在物理層上擴展局域網。3d
用網橋能夠在數據鏈路層擴展局域網。code
它根據 MAC 幀的目的地址對收到的幀進行轉發。目前用的最多的是透明網橋
。
數據鏈路層有三個目的:
數據鏈路層傳送的是:幀
。不管是以太網仍是IEEE802封裝都採用48bit的目的地址和源地址-- 硬件地址。(ARP/RARP)對32bit的IP地址和48bit的硬件地址進行映射。
數據鏈路層三個基本問題:
1. 封裝成幀
封裝成幀(framing)就是在一段數據的先後分別添加首部和尾部(用於幀定界),而後就構成了一個幀。肯定幀的界限。
不管是以太網(46bytes)仍是IEEE802(38bytes)都對幀有最小長度要求, 爲保證這一點,須要在不足的空間插入填充字節
。還能夠利用字節填充法解決透明傳輸的問題 。
循環冗餘檢驗 CRC
的檢錯技術。僅用循環冗餘檢驗只能作到無差錯的接受:凡是接收端數據鏈路層接受的幀都沒有傳輸差錯」(有差錯的幀就丟棄而不接受)要作到可靠傳輸
(即發送什麼就收到什麼)就必須再加上確認
和重傳
機制。
如今全世界使用得最多的數據鏈路層協議是點對點協議 PPP
. 用戶使用撥號電話線接入因特網時,通常都是使用 PPP 協議。
PPP協議不須要作到: 糾錯(單要檢查錯誤),流量控制,多點線路...
三個組成部分:
局域網最重要的特色是:網絡爲一個單位所擁有,且地理範圍和站點數目均有限。
局域網的拓撲:1 星形網 2 總線網 (樹形網) 3 環形網 (令牌環) -- 如今以太網是局域網代名詞。
局域網(以太網)的工做層次跨越了數鏈層 和 物理層。計算機經過使用適配器和互聯網通訊。
以太網提供的服務是不可靠的交付,即盡最大努力的交付。目的站收到有錯誤的數據幀就丟掉此幀。
以太網中,硬件地址又稱爲物理地址/MAC地址(48位),實際上就是適配器地址。
網絡層向上只提供簡單靈活的,無鏈接的,盡最大努力交付(不可靠)的數據報服務。
不可靠:IP協議不能保證IP數據報能成功地到達目的地。僅提供最好的傳輸服務,若是發生錯誤:就丟棄該數據報。
無鏈接: IP不維護任何關務後續數據報的狀態信息。每一個數據報的處理都是相互獨立的。
-- IP數據報能夠不按發送順序接收。
網際協議 IP 是 TCP/IP 體系中兩個最主要的協議之一。與 IP 協議配套使用的還有三個協議:
地址解析協議 ARP
網際控制報文協議 ICMP
網際組管理協議 IGMP
具體關係如圖:
IP路由選擇分兩種狀況,對於主機來講,若是是在PPP點對點或者共享網絡(局域網)上,那麼IP數據報就能夠從源主機直接發送到目的主機;對於互聯網來講,源主機得首先把IP數據報發送到默認路由器
,由該路由器進行轉發改數據報。
IP層既能夠配置成主機的功能,也能夠配置成路由器的功能。區別就是主機不在不一樣網絡接口間轉發數據報,而路由器進行轉發。
進一步說就是,IP層在內存中有一個路由表, 當收到一份數據報並進行發送的時候,IP層要對路由表進行搜索一次。當該數據報是來自某個網絡接口時,IP首先檢查目的IP是否爲本機IP地址之一或者IP廣播地址。
下面介紹下路由表
,在路由表中,對每一條路由,最主要的是(目的網絡地址,下一跳地址)
。根據目的網絡地址就能肯定下一跳路由器,這樣1.IP 數據報最終必定能夠找到目的主機所在目的網絡上的路由器(despite要經過屢次的間接交付)2. 只有到達最後一個路由器時,才試圖向目的主機進行直接交付。
路由表的每一項包括:
IP層執行選路機制(一組決定把那些路由放入路由表的規則);而daemon守護程序提供選路策略。
(1) 從數據報的首部提取目的主機的 IP 地址 D, 得出目的網絡地址爲 N。
(2) 若網絡 N 與此路由器直接相連,則把數據報直接交付目的主機 D;不然是間接交付,執行(3)。
(3) 若路由表中有目的地址爲 D 的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;不然,執行(4)。
(4) 若路由表中有到達網絡 N 的路由,則把數據報傳送給路由表指明的下一跳路由器;不然,執行(5)。
(5) 若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;不然,執行(6)。
(6) 報告轉發分組出錯
IP搜索路由表的3個步驟:
1. 搜索路由表,尋找能與目的IP地址徹底匹配的表目。
2. 搜索路由表,尋找能與目的網絡號相匹配的表目。
3. 搜索路由表,尋找標爲默認的表目。
每一類地址都由兩個固定長度的字段組成,其中一個字段是網絡號 net-id,它標誌主機(或路由器)所鏈接到的網絡,而另外一個字段則是主機號 host-id,它標誌該主機(或路由器)。
兩級IP能夠記爲 IP地址 ::={<網絡號>,<主機號>}
網絡類別 | 最大網絡數 | IP地址範圍 | 第一個可用的網絡號 | 最後一個可用的網絡號 | 每一個網絡最大主機數 |
---|---|---|---|---|---|
A | 126(2^7-2) | 1.0.0.0-126.255.255.255 | 1 | 126 | 16777214 |
B | 16383(2^14-1) | 128.1.0.0-191.255.255.255 | 128.1 | 191.255 | 65534 |
C | 2^21-1 | 192.0.1.0-223.255.255.0 | 192.0.1 | 223.255.255 | 254 |
IP地址特色:
網絡號
來轉發分組。對基本兩級IP結構的改進,由於A類地址和B類地址爲主機號分配了太多的空間,而事實上不須要安排這麼多主機。
因此不是把IP地址當作單純的一個網絡號+主機號。而是進一步把主機號劃分爲一個子網號+主機號。 因此IP地址 = 網絡號+子網號+主機號。
子網掩碼
:除了IP地址外, 主機還須要知道有多少比特用於子網號,有多少比特用於主機號,也就是兩者界限。
這是在引導過程經過子網掩碼來肯定的。這個掩碼是32bit
:值爲1的比特留給網絡號和子網號。爲0的比特留給主機號。
(IP 地址) AND (子網掩碼) = 子網的網絡地址
給定IP地址和子網掩碼之後,主機就能夠肯定IP數據報的目的是:(1)本子網的主機;(2)本網絡中其餘子網的主機;(3)其餘網絡的主機。
網絡層及以上使用IP地址(放在IP數據報首部),鏈路層及如下使用MAC硬件地址(放在MAC幀首部)
什麼是 ARP?
ARP (Address Resolution Protocol) 是個地址解析協議。最直白的說法是:在 IP 以太網中,當一個上層協議要發包時,有了該節點的 IP 地址,ARP 就能提供該節點的 MAC 地址。
爲何要有 ARP?
OSI 模式把網絡工做分爲七層,彼此不直接打交道,只經過接口 (layre interface). IP 地址在第三層, MAC 地址在第二層。
協議在發生數據包時,首先要封裝第三層 (IP 地址)和而後在封裝第二層 (MAC 地址)的報頭, 但協議只知道目的節點的 IP 地址,不知道其物理地址,又不能跨第2、三層,因此得用 ARP 的服務。
詳細說明:
Ø 在網絡通信時,源主機的應用程序知道目的主機的 IP 地址和端口號,殊不知道目的主機的硬件地址,而數據包首先是被網卡接收到再去處理上層協議的,若是接收到的數據包的硬件地址與本機不符,則直接丟棄。所以在通信前必須得到目的主機的硬件地址。ARP 協議就起到這個做用
Ø 當一臺主機把以太網數據幀發送到位於同一局域網上的另外一臺主機時,是根據 48 位的以太網地址來肯定目的接口的,設備驅動程序從不檢查 IP 數據報中的目的 IP 地址。ARP(地址解析)模塊的功能爲這兩種不一樣的地址形式提供映射:32 位的 IP 地址和 48 位的以太網地址
每個主機都設有一個 ARP 高速緩存(ARP cache)
---ARP協議高效運行的關鍵,爲了減小網絡上的通訊量。裏面有所在的局域網上的各主機和路由器的 IP 地址到硬件地址的映射表。ARP高速緩存在每一項內容都有一個定時器,根據它來刪除不完整和完整的表項。
當主機 A 欲向本局域網上的某個主機 B 發送 IP 數據報時,就先在其 ARP 高速緩存中查看有無主機 B 的 IP 地址。若有,就可查出其對應的硬件地址,再將此硬件地址寫入 MAC 幀,而後經過局域網將該 MAC 幀發往此硬件地址
arp -a arp -d
該命令能夠檢查ARP高速緩存。
-a : 顯示高速緩存中的全部內容。
-d :刪除ARP高速緩存的某一項內容。
須要注意:ARP 是解決同一個局域網上的主機或路由器的 IP 地址和硬件地址的映射問題。
若是所要找的主機和源主機不在同一個局域網上,那麼就要經過 ARP 找到一個位於本局域網上的某個路由器的硬件地址,而後把分組發送給這個路由器,讓這個路由器把分組轉發給下一個網絡。剩下的工做就由下一個網絡來作
爲了提升IP數據報交付成功的機會
,在IP層使用了網絡控制報文協議ICMP.
ICMP容許主機或路由器報告差錯狀況
和提供有關異常狀況
的報告。ICMP 報文的種類有兩種,即ICMP 差錯報告報文
和ICMP 詢問報文
.
ICMP差錯報告報文有5種:
ICMP差錯報告報文的數據字段的內容
不該發送ICMP差錯報告報文的幾種狀況
自治系統和內部網關協議IGP(RIP, OSPF),外部網關協議EFP(BGP)
RIP是一種分佈式基於距離向量的路由選擇協議
原理:要求網絡中每個路由器都要維護從它本身到其餘每個目的網絡的距離記錄(這是一組距離,即距離向量)。
RIP 認爲一個好的路由就是它經過的路由器的數目少,即「距離短」. 它容許一挑路徑最多隻包括15個路由器,當距離最大值爲16的時候至關於不可達。因此RIP只能用於小型互聯網。 RIP不能再兩個網絡直徑同時使用多條路由,RIP選擇一個具備最少路由器的路由(最短路由),哪怕還存在另外一條告訴但路由較多的路由。
RIP協議的三個要點:
僅和相鄰路由器
交換信息
RIP協議讓互聯網中的全部路由器都和本身的相鄰路由器不斷交換路由信息,並不斷更新其路由表,使得從每個路由器到每個目的網絡的路由都是最短的(即跳數最少)。
雖然全部的路由器最終都擁有了整個自治系統的全局路由信息,但因爲每個路由器的位置不一樣,它們的路由表固然也應當是不一樣的。
交換的信息是當前本路由器所知道的所有信息
,即本身的路由表
交換路由信息
RIP 協議的收斂(convergence)過程較快,即在自治系統中全部的結點都獲得正確的路由選擇信息的過程.
優勢:簡單
缺點:當網絡出現故障時,要通過比較長的比較時間才能將此信息傳送到全部的路由器;
並且限制了網絡的規模,所能使用的最大距離是15;
路由器之間交換的路由信息是路由器中完整的路由表,於是隨着網絡規模的擴大,開銷也就增長。
是分佈式的鏈路狀態協議
OSPF協議的三個要點:
向本自治系統中全部路由器發送信息
,這裏使用的方法是洪泛法爲了使 OSPF 可以用於規模很大的網絡,OSPF 將一個自治系統再劃分爲若干個更小的範圍,叫做區域。-- 劃分區域的好處就是將利用洪泛法交換鏈路狀態信息的範圍侷限於每個區域而不是整個的自治系統,這就減小了整個網絡上的通訊量。
OSPF 優勢:
- 因爲一個路由器的鏈路狀態只涉及到與相鄰路由器的連通狀態,於是與整個互聯網的規模並沒有直接關係。所以當互聯網規模很大時,OSPF 協議要比距離向量協議 RIP 好得多。
- OSPF 沒有「壞消息傳播得慢」的問題,據統計,其響應網絡變化的時間小於 100 ms。
BGP是不一樣自治系統的路由器之間交換路由信息的協議。
BGP力求尋找一條可以到達目的網絡且比較好
的路由, 而並不是找到一條最佳路由
。BGP採用了路徑向量路由選擇協議。
是一種具備多個輸入端口和多個輸出端口的專用計算機,其任務是轉發分組。namely, 將路由器某個輸入端口收到的分組,按照分組要去的目的地(目的網絡),把該分組從路由器的某個合適的輸出端口轉發給下一跳路由器。
轉發
:就是路由器根據轉發表將用戶的IP數據表從合適的端口轉發出去路由選擇
: 是按照分佈式算法, 根據各相鄰路由器獲得的關於網絡拓撲的變化狀況,動態地改變所選擇的路由。
路由表是根據路由選擇算法得出的,轉發表是從路由表得出的。
單播
每一個以太網幀包含源主機和目的主機的以太網地址。一般每一個以太網幀僅發往單個目的主機,目的地址指明單個接收接口。在此方式下,任意兩個主機的通訊不會干擾網內其餘主機。
廣播
一個主機要向網上的全部其餘主機發送幀,這就是廣播。
多播
處於單播和廣播本身:幀僅傳送給屬於多播組的多個主機。
主機對信道傳送過來幀的過濾過程如圖:
首先:一般網卡僅接收那些目的地址爲網卡物理地址
或廣播地址
的幀。對於以太網,當地址中最高字節的最低位
設置爲1
時表示該地址是一個多播地址
,用十六進制可表示爲0 1 : 0 0 : 0 0 : 0 0 : 0 0 : 0 0
(以太網廣播地址ff : ff : ff : ff : ff : ff
可看做是以太網多播地址的特例)
其次,設備驅動程序接收到幀,對其進行幀過濾:首先幀類型必須制定要使用的協議(IP,ARP)。其次,進行多播過濾來檢測該主機是否屬於多播地址說明的多播組。
4種IP廣播地址:
255.255.255.255
。指向子網的廣播
即主機號爲全1且有特定子網號的地址。做爲子網直接廣播地址的IP地址須要瞭解子網的掩碼。
例如,若是路由器收到發往128.1.2.255的數據報,當B類網絡128.1的子網掩碼是255.255.255.0時,該地址就是指向子網的廣播地址。但若是該子網的掩碼爲255.255.254.0,該地址就不是指向子網的廣播地址。
廣播是一種應該謹慎使用的功能。在許多狀況下, I P多播被證實是一個更好的解決辦法
IP多播提供兩類服務:
1) 向多個目的地址傳送數據。
2) 客戶對服務器的請求。
使用多播能夠明顯減輕網絡中各類資源的消耗。
多播數據報與通常的IP數據報 區別是它使用D類IP地址做爲IP地址,而且首部的協議字段是2,代表使用IGMP協議。此外多播數據報不產生ICMP差錯報文,所以不對PING命令產生響應。;
多播數據報的目的地址必定不能寫入目的主機的IP地址,由於在同一時間可能有成千上萬個主機要加入同一多播組。因此多播數據報不能再其首部寫入這樣多的主機IP地址。 -- 因此在多播數據報的目的地址寫入的是多播組的標示符,即IP地址的D類地址。而後設法讓加入到這個多播組的主機的IP地址與多播組的標示符關聯起來。
多播使用組地址
--- IP使用D類地址支持多播。多播地址只能用於目的地址,而不能用於源地址。
分配的28 bit均用做多播組號而再也不表示其餘。 而這28位的前5位不能用來構成以太網的硬件地址。
IP地址範圍224.0.0.0
到239.255.255.255
.
D 類 IP 地址與以太網多播地址的映射關係
接口和網絡的有關信息能夠經過ifconfig和netstat命令能夠得到,包括接口IP地址,子網掩碼,廣播地址和MTU.
查看路由表的命令:
netstat -rn
ping 用來測試兩個主機本身的連通性,執行ping指令使用ICMP傳輸協議發送請求併發出要求迴應的信息。
ping是應用層直接使用網絡層ICMP的例子,它沒有經過運輸層的TCP/UDP
Traceroute用來跟蹤一個分組從源點到終點的路徑。
Traceroute從源主機向目的主機發送一連串的IP數據報,數據報中封裝的是沒法交付的UDP用戶數據報。
arp -a arp -d
該命令能夠檢查ARP高速緩存。 -a : 顯示高速緩存中的全部內容。 -d :刪除ARP高速緩存的某一項內容。