今天來介紹網路層與鏈路層的協定
網路層同樣也提供傳輸的服務,但只提供基本的連線服務,不能保證資料抵達
網路層最重要的協定就是IP(Internet Protocol)
每一台主機和路由器都有自己的網路層IP地址,每一個IP地址固定為32位元,其表示的方式為W.X.Y.Z,每個數字都介在0~255(有四個8位元的數字,排列組合一共就32位元種IP可能),例如223.138.161.98,就是一個IP的地址
各位可以在這個網站找到自己目前上網的機器的IP地址
每台機器的IP位置就跟住家門牌一樣,是可以發生改變,並非永久固定
在同一個主機IP上,可以有很多不同的程序同時進行,例如瀏覽網頁、寄送email、檔案傳輸等
為了有效率地利用網路互相溝通,儘管這些程序發生在同一個IP地址,必須得有方法分別這些程序
因此我們會在每個程序上,冠上一個16位元的窗口(port)(官方翻譯叫通訊埠),一共 =65536個窗口做使用
就像同一個門牌地址開個6萬多個對外窗戶一樣,每一個窗戶專門處理一件事
其中1024以下的窗口幾乎都是預先保留給有名的應用協定,例如HTTP是80、POP3是110、DNS是53,各位可以找找先前介紹的應用協定是保留給哪一個窗口使用,1024至65535是機動窗口,隨時開放做使用,沒有事先預留
IP位置結合窗口號碼,這一對東西稱為網路插座(socket)
這邊講一點點路由器的功能
IP表頭中有包含起點終點的IP位置,存活時間(避免封包迷路後陰魂不散),一但封包進到路由器上,他便會根據IP表頭規劃路線傳送到指定地點
由於網路連接的數據大小有傳輸上限,一但封包裝的資料太大,路由器需負責將資料碎片化(fragmentation),到了目的地後會再將資料組裝
碎片化讓惡意的資料難以被偵測,因為他抵達目的後才知道裡面究竟裝的是什麼,這讓防火牆必須花很大的
力氣處理碎片化的資料
以上講的IP是第四版本(IPv4),由於當初設計的關係只有32位元讓可用地址(最多 六百多萬)一下就用完,而且碎片化的資料傳輸也很不安全
更新的IPv6使用128位元的表示方式,可視為無窮無盡的可用地址(39位數),而且在碎片化上有更安全的設計
目前兩種版本的IP都混合著使用
到了更下面的鏈路層,他是專門處理節點與節點間的連結問題,從主機到節點、節點到節點的問題
鏈路層最重要的協定是乙太網(Ethernet),假如有多台主機連線一個路由器,一但有兩個以上的封包同時抵達路由器,乙太網協定可以決定誰先被處理
在鏈路層,每台機器有自己的MAC地址(media access control address),為不可變更的48位元地址
可以想成網路層的IP位置為住家地址,MAC地址就像是一個人的身分證字號
某些協定是藉由MAC地址而非IP地址來辨識機器位置
另一個鏈路層級有趣的協定是ARP(Address Resolution Protocol),其主要的功能是用來找尋一個區域網路(LAN:公司的內部網路、連家裡Wifi的所有裝置,彼此可以互相溝通)中,某個機器IP地址的MAC地址
在區域網路中,ARP表格儲存著該網路中每台機器的IP地址與MAC地址
當一個裝置不知道IP-MAC地址的關係,他可以發送ARP請求訊息給區域網路中所有的裝置,該對應IP地址的機器會回傳自己的MAC地址給發送請求的人,這樣他可以更新自己的ARP表格
就像班上同學,每一個人有不同的住家位置(IP)以及不同的身分證字號(MAC),假如有一個同學想知道住在106臺北市大安區羅斯福路四段一號
的人是誰,他就發送ARP訊息給所有班上同學,真正住在那裡的同學就會回傳自己的MAC資訊給他
由於ARP是個無狀態協定,發送ARP後的裝置會瞬間忘記自己已經發送請求,因此即使他沒有發問,有人傳過來的ARP回覆他都會接收
因此,假如內部網路混入一個邪惡的機器,他可以跟所有的裝置謊報其他人的MAC地址,即使大家沒有發送ARP請求,他們也會更新自己的ARP表格
像是邪惡的C機器可以寄送假的ARP回覆給內網的所有人,跟A說B的IP地址對應至MAC地址C、跟B說A的IP地址對應至MAC地址C
這樣AB之間的所有對話,都會先傳到C的手上,如此C可以對內部的資料進行竄改,形成中間人攻擊的狀況
我們終於介紹完協定疊的東西
也有足夠的知識講解防火牆的基本知識🥹
明天會介紹幾個防火牆的基本原理