網路通訊協議基礎(ISIS)——入門

動感牛排發表於2017-02-02

今天是這個系列部落格的開始,第一次寫部落格,希望這些年自己所學到東西能夠幫助更多的人。但是轉載的時候還是請註明下是轉載的,謝謝啦,嘿嘿。

網路通訊協議是一個挺窄的方向。相對於Android、ios、JavaScript、python等等方向,網路通訊協議知道的人很少。本文也指在普及一下網路通訊協議,讓更多的人知道世界上還有這麼一群人在維護著這麼一堆協議。

想要了解本文,需要擁有一些知識儲備,包括如下內容:

1.IP轉發原理(看一遍TCP/IP詳解卷一的IP章節,瞭解原理即可,不必精通)

2.二層轉發協議(看一遍TCP/IP詳解卷一的二層協議相關章節,瞭解原理即可,不必精通)

好,那麼我們先開始我們的旅程。

首先,我們瞭解一下我們的網路,大家每天都接觸,甚至於離不開網際網路。但是,網際網路究竟是如何組成的呢?最早,當微型計算機剛發明的時候,還是單機時代,每臺計算機獨立運作。我家的計算機和你家的計算機各玩各的。我想要你家電腦上的遊戲怎麼辦?硬碟、光碟、U盤等等儲存介質逐一登場。其實這就是比較原始的資訊互動手段。

後來,我們用網線將兩臺電腦連線起來,這樣兩臺電腦之間就可以通過網線傳遞資料了,省去了硬碟、光碟、U盤拷來拷去的麻煩。但是,三臺以上的電腦怎麼辦呢?最簡單的辦法就是用三根網線兩兩相連,那麼四臺呢?五臺呢?隨便一個公司都是好幾十個人、幾十臺電腦,全連線顯然太麻煩。

於是,一個叫HUB的東西誕生了。這東西又叫集線器,原理很簡單,從一個介面收上來的報文,從其他所有介面都複製一份過去。這樣,拓撲就從全連線變成了以HUB為中心的星型連線,瞬間簡化了很多。但是,HUB有個問題,是啥呢?就是它是物理層面的複製。HUB裡面沒有邏輯,沒有什麼程式碼,只是簡單的把從一個介面收進來的代表報文的電訊號複製到其他介面上而已。功能上倒是沒啥問題,但是效能上會差一些。比如網路裡面有255臺機器,A發個報文給B,好傢伙,報文到HUB這裡,HUB沒有邏輯啊,它又不知道你是發給誰的,於是網路裡面的255臺機器都收到了A傳送的報文。這明顯對於其他機器來說是個騷擾資訊。那怎麼辦呢?當然是出現更高階的東西了。

這個東西叫交換機,英文名字叫switch。從這個東西開始就有轉發邏輯了,不再單純的複製資訊,它能夠識別報文中的目的地址。當然,它被設計用來只能識別二層網路協議的目的地址。於是,在一個網路裡面,如果A發生報文給B,那麼交換機就可以和二層網路協議一起保證報文只會給B,而不會騷擾其他機器。這顯然對其他機器來說是個好事情,他們節省了大量用於識別垃圾報文的資源。但是,交換機還有一個不足的地方,就是它無法連線異構網路。交換機被設計只能和二層網路協議一起工作,工作在同一片二層協議的網路裡面。但是,隨著網路的發展,一個一個獨立的區域網路有越來越強烈的願望想要連線到一起。

後來,路由器出現了,英文名字叫router。路由器沒有明確的定義,通用和常見的一個,就是連線異構網路的機器。這裡的異構說的是不同的二層協議,比如ethernet和ppp、atm和hdlc等等。路由器被設計工作在IP層,同時也有更強大的邏輯。我們這次要討論的ISIS協議,主要的應用常見就是路由器。

路由器將不同的網路連線到一起,路由器和路由器之間也可以用路由器再連線到一起,層層疊疊,最終全世界的網路都連線到了一起,形成了網際網路。當然,現在也不是隻有網際網路。我們說的網際網路通常指的是internet網路,但是也有其他的網路。幾臺電腦連在一起就可以叫一個網路,不一定非要是網際網路。比如各國軍事網路,各公司的內部專用網路,某些組織的私有網路等等,這些都是網路。當然,在日常生活中說的網路,通常說的是網際網路。

說了這麼多,大家應該對網際網路的基礎組成有了一定的概念。網際網路就是由計算機、網線和網路協議組成。當然,計算機的職責各不相同。家裡的電腦是微機,打遊戲、上網、看視訊。小區機房裡的交換機也是計算機,只不過專門負責轉發報文,識別地址,保證通訊。各縣/市/省級的路由器也是計算機,負責各片區所有報文的轉發。國家級的路由器也是計算機,負責國際流量的出入口。網際網路裡面還有其他特殊職責的計算機,比如負責將網址變成IP地址的DNS伺服器。負責安全的防火牆。負責提供資訊的網路伺服器,比如網易、百度、愛奇藝的伺服器,儲存了大量的資訊在裡面。

這些計算機有不同的型號,不同的生產時期,不同的技術,不同的硬體,不同的廠家。想一想一臺2007年的華碩公司出廠的筆記本,由本廠高階工程師設計,想要訪問SUN公司出品的伺服器。而這個伺服器又是個美國架構師設計的。我們怎麼保證這兩個人設計出來的計算機能夠互相通訊?他們甚至都不認識對方,不知道對方的存在。華碩的筆記本不會知道將來使用者會訪問哪個公司的伺服器。他們之間就好像有一道鴻溝。

提個問題,一個韓國人和一個坦尚尼亞人想要互相討論問題,該如何實現?當然是語言要統一。要麼坦尚尼亞人會韓語,要麼韓國人會非洲語言。當然,還有第三個選項,大家都說英語。這個在網路裡面就是協議,大家事先約定都說英語,這樣就能對話了。在網路的世界裡面,協議就是這樣的作用。協議由國際組織統一規定,各廠商都必須遵守,有了統一的標準,大家就能讓不同的計算機互相通訊了。

網路協議,就是這麼個東西。當然,隨著網路的發展,只是簡單的互相對話滿足不了需求。只會英語不是目的,目的是交流,是協作。也就是說,大家逐漸發現英語不夠,要專業英語。普通的專業英語不夠,要各領域的專業英語。於是,網路協議的分工越來越細,種類越來越多。制定協議的國際組織IETF,協議從1開始編號,每篇協議一個編號,現在已經七八千了。

ISIS協議就是眾多網路協議中的一個,它的作用是負責自動構建路由表。之前說過,網路由不同角色的計算機組成。每臺計算機如何知道怎樣到達遠端的伺服器的呢?IP層轉發靠的是路由表。路由表裡有要訪問的機器的地址,那麼就能夠到達。這一部分參看TCP/IP詳解卷一里的IP轉發章節。

老式的路由表是網路管理員手工配置的,那時候網路規模小。現在網路越來越大了。手工配置滿足不了需求。於是ISIS協議這種能夠自動構建路由表的協議越來越重要。ISIS協議能夠自動計算到達目的地的最短的路。如果最短的路有好幾條,那麼還能讓這幾條路同時承擔報文的轉發。在最短路徑故障時,還能自動換新路徑。在出現更好的路徑的時候,還能自動換到更好的路徑上。完全的全自動,同時也賦予網路管理員一定的控制報文轉發的能力,能夠決定流量的走向。怎麼樣?高階吧。網路管理員瞬間省了好多事情。只要配置上ISIS,那麼會自動構建路由表,學習遠端路由器、伺服器的IP地址。等所有地址都學習完畢後。整片網路的IP層就打通了,網路內的任何機器都知道到所有其他機器的路徑。

在IP層打通以後,在大家平時看來,就相當於網路連線通了。能ping通地址了。就好像偏遠山區通車了一樣。當然,光通車是沒有用的,在通車之後,會有其他的協議提供真正實用的內容和服務。比如有運商品的車進來,有運山貨的車出去,有運人的車進來,有運人的車出去。這些車,這些相當於車的協議,才是給我們真正服務的東西,比如愛奇藝的電影,比如基於HTTP協議的瀏覽器。但是,一切的基礎,就是打通IP層,路要通。而通路,就是ISIS協議最大的作用之一。當然,只是之一,嘿嘿。

相關文章