計算機網路基礎

多來K貓發表於2020-10-03

計算機網路基礎

網路協議介紹

  網際網路的本質就是一系列的網路協議。一臺硬設有了作業系統,然後裝上軟體就可以正常使用了。然而這樣只能侷限於擁有者一個人使用,如果每一個人都這樣那麼其實是彼此之間孤立且不互通的。將地理位置不同的且具有獨立功能的多臺計算機及其外部裝置,通過通訊線路連線起來,在網路作業系統,網路管理軟體及網路通訊協議的管理和協調下,實現資源共享和資訊傳遞的計算機系統就叫做計算機網路

  其實計算機和計算機之間的通訊和兩個人打電話之間的通訊原理是一樣的。比如中國有很多地區,如果一個新疆人和一個廣西人打電話彼此都用著自己地區的方言。那麼互相之間是誰都聽不懂對方說什麼的,但是如果統一說普通話,這兩個人互相就能聽得懂了。既然有了大家統一都說了普通話的標準,那麼至少在中國範圍內是全部都聽得懂了。但是如果到了國外又不行了,外國人聽不懂普通話呀,所以大家這時候就全部說英語。那就又能都彼此聽得懂了。

  網路協議其實也是和上面的道理是一樣的,各個計算機為了能夠互相之間進行通訊,故而產生了一系列共同遵守的規則,這些規則就被稱之為協議。網路硬體本就是基於協議運作的

協議圖解

img

 

  網際網路協議的功能:定義計算機如何接入 Internet ,以及對已經接入 Internet 的計算機之間的通訊制定標準

  大家可能經常聽說過 OSI 七層網路協議以及 TCP/IP 網路通訊協議等等。實際上這些多少層多少層的都是很抽象的東西,只是按照不同的協議實現的具體功能而劃分出的這些層次(層次本身就是虛擬概念,是不存在的東西)。

 

OSI七層模型與TCP/IP五層模型介紹

  如今的協議在教科書上一般都會介紹OSI七層協議與TCP/IP五層協議,但是現實生活中基本都是用的TCP/IP協議居多,理解OSI能夠更好的理解TCP/IP協議。

OSI參考模型和TCP/IP參考模型

img

背誦訣竅 : 應 表 會 傳 網 數 物

 

  每一層都執行的有不同的網路協議,實際上每一層的劃分就是通過這些網路協議的功能來劃分的。當然每一層也執行著常見的網路物理裝置。

各層次掌管的常見協議

img

 

  關於每一層的具體功能下面會逐一做詳細的介紹。但是表示層和會話層這邊不做具體的詳解,感興趣的朋友可以自己百度一下相關方面的資料。

 

TCP/IP五層模型之物理層

  物理層主要負責基於電器特性傳送高低電壓 (電訊號),高電壓對應數字1低電壓對應數字0,物理層就是負責線路聯通和傳輸電訊號,不斷的101010來產生資料。資料本身是沒有意義的,但是具有了相應的規則就會產生意義

 

能看到的網路裝置都是屬於物理層

img

  物理層包括(光纜,電纜,雙絞線,無線電波等等...)

 

TCP/IP五層模型之資料鏈路層

  資料鏈路層最大的作用就是對電訊號來制定規則。因為單純的電訊號0和1是沒有任何意義。必須要規定多少電訊號位一組,每組什麼意思,早期的時候各個公司都有自己的分組方式,後來形成了統一的標準。就是乙太網協議 ethernet

 

  乙太網協議規定一組電訊號構成一個資料包,叫做幀。

  每一資料幀分成:報頭head和資料data兩個部分。

 

資料幀與電訊號

img

 

  Head 包含:(固定18個位元組)

    傳送者 / 源地址 :6個位元組

    接受者 / 目標地址 :6個位元組

    資料型別: 6個位元組

 

  Data包含:(最短46位元組,最長1500位元組)

    資料包的具體內容

 

  Head + data = 最短64位元組,最長1518位元組。超過最大限制就分片傳送。

 

  MAC地址:

    Head中包含的源和目標地址由來:ethernet規定接入Internet的裝置必須要具備網路卡。傳送端和接收端的地址便是指的網路卡的地址,即是MAC地址。

    MAC地址在每一塊網路卡出廠時候都會被燒紙一個世界上唯一的MAC地址。長度為48位2進位制。通常由12位16進位制數表示,前六位是廠商地址,後六位是流水線地址

Windows下16進位制顯示的本機網路卡MAC地址

img

  

  廣播:

  有了MAC地址,同一網路內的兩臺主機就可以通訊了。(一臺主機通過ARP協議獲取另一臺主機的MAC地址)。ethernet採用最原始的方式,即廣播的方式進行通訊,即計算機通訊基本靠吼。

 

廣播示意圖

img

 

TCP/IP五層模型之網路層

  網路層由來:有了ethernet,MAC地址,廣播的傳送方式,世界上的計算機就可以彼此通訊了,但是有一個問題就是說全世界範圍內的網際網路都是由一個個彼此隔離的小小的區域網組成,如果所有的通訊都採用乙太網的廣播方式。那麼一臺機器傳送的包全世界都會收到,這不僅僅是效率低的問題,更是一種災難

  由於有太多的區域網了,必須找出一個方法來區分哪些計算機同屬於一個廣播域,哪些不是,如果是的話再採用廣播的方式傳送,如果不是就採用路由的方式(向不同的廣播域 / 子網分發資料包),並且MAC地址是無法區分廣播域的,它只跟廠商有關,於是網路層誕生了,主要功能:引入一套新的網路地址(非MAC地址)用來區分不同的廣播域 / 子網

  因此網路層定義了一種叫做IP協議的東西。

 

  IP協議:

    規定網路地址的協議叫做IP協議,它定義的地址稱為IP地址,目前廣泛採用V4版本。V4版本規定網路地址由32位2進製表示

 

  範圍:0 . 0 . 0 . 0 ---> 255 . 255 . 255 . 255

  IP地址通常用點分十進位制來定義,例如:172.16.10.1

  IP地址分為兩部分即:

  網路部分:標識子網

  主機部分:標識主機

 

  

  子網掩碼:

    所謂”子網掩碼”,就是表示子網路特徵的一個引數。它在形式上等同於IP地址,也是一個32位二進位制數字,它的網路部分全部為1,主機部分全部為0。比如,IP地址172.16.10.1,如果已知網路部分是前24位,主機部分是後8位,那麼子網路掩碼就是11111111.11111111.11111111.00000000,寫成十進位制就是255.255.255.0。

 

    知道”子網掩碼”,我們就能判斷,任意兩個IP地址是否處在同一個子網路。方法是將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都為1,運算結果為1,否則為0),然後比較結果是否相同,如果是的話,就表明它們在同一個子網路中,否則就不是。

 

    比如,已知IP地址172.16.10.1和172.16.10.2的子網掩碼都是255.255.255.0,請問它們是否在同一個子網路?兩者與子網掩碼分別進行AND運算,

 

      172.16.10.1:10101100.00010000.00001010.000000001

      255255.255.255.0:11111111.11111111.11111111.00000000

      AND運算得網路地址結果:10101100.00010000.00001010.000000001->172.16.10.0

 

      172.16.10.2:10101100.00010000.00001010.000000010

      255255.255.255.0:11111111.11111111.11111111.00000000

      AND運算得網路地址結果:10101100.00010000.00001010.000000001->172.16.10.0

 

    結果都是172.16.10.0,因此它們在同一個子網路。

    總結一下,IP協議的作用主要有兩個,一個是為每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網路。

 

  IP資料包:

    IP資料包和資料幀是一樣的,都是有一個head和data。在head裡也包括了目標IP地址和自身的IP地址。但是網路層的資料包和資料鏈路層的資料包都是基於物理層埠傳輸出去的,這就產生了一個問題,有兩個包。怎麼解決呢?其實只要把IP資料包放到ethernet資料包的data部分就好了。最後通過物理層電訊號傳送出去。最終的資料幀就變成了下圖。

 

乙太網資料幀與IP資料包的封裝

img

  Arp協議(資料鏈路層的協議,此處舉例是為了與網路層IP協議配合完成通訊):

 

  ARP協議作用:廣播的方式傳送資料包獲取主機的MAC地址。

  協議工作方式:每臺主機的IP地址都是已知的。

 

  ARP協議內網通訊過程:

    1.準備傳送資料

    2.分析目標IP是否與自身存在於同一廣播域(是)

    3.檢視自身ARP快取 (IP地址,MAC地址 一一對應)

    4.如果沒有則吼一聲 目標MAC填寫12個F 目標IP填上對應的目標IP地址

    5.所有當前廣播域計算機收到該包,拆開一看如果IP是自己則告訴傳送方自身的MAC地址

    6.傳送方拿到回應資訊,更新ARP快取

    7.接下來的通訊將不用通過廣播的方式傳送,而是點對點的進行通訊

 

  ARP協議外網通訊過程:

    1.準備傳送資料

    2.分析目標IP是否與自身存在於同一廣播域(不是)

    3.檢視自身ARP快取

    4.目標IP填寫閘道器IP,目標MAC填寫12個F

    5.閘道器回應,拿到閘道器MAC地址,更新ARP快取

    6.目標IP填寫目標的IP地址,目標MAC填寫12個F

    7.開啟漫長的路由過程,通過IP地址去找目標計算機的廣播域,並拿到其目標MAC地址

    8.傳送方拿到回應資訊,更新ARP快取

    9.接下來的通訊將不用再去先獲取閘道器的MAC地址了,而是通過路由點對點的與外網目標計算機進行通訊

 

IP地址與ARP協議以及MAC地址的區別以及用途(三層交換機)

img

 

TCP/IP五層模型之傳輸層

  傳輸層的由來,就是在網路層前提下產生來的。打個比喻,有了IP地址,有了MAC地址我們確實是能和目標計算機進行通訊。但是問題是怎麼具體和目標計算機怎麼通訊呢?通過QQ ? 微信?還是其他的通訊軟體?所以這個時候就需要使用埠,一個埠對應一個軟體。而埠是和網路卡繫結到一起的,網路卡上有MAC地址,有IP地址。如果沒有埠號,是找不到相應的應用程式的

  把區域網比作一個房間,IP地址表示目標計算機在哪個房間,MAC地址表示目標計算機坐在了哪裡,埠號則表示了怎麼和目標計算機進行溝通。是丟紙條?還是直接對話

傳輸層就是基於埠的一個層面。而埠可指定的範圍是0 - 65535,0 - 1024位系統佔用埠

 

  TCP協議

  可靠傳輸,TCP資料包沒有長度限制,理論上可以無限長,但是為了保證網路的效率,通常TCP資料包的長度不會超過IP資料包的長度。以確保單個TCP資料包不會被分割。

 

  UDP協議

  不可靠傳輸,報頭部分只有 8 個位元組,總長度不超過65,535,正好放進一個IP資料包

 

封裝了傳輸層的etherne資料幀(TCP/UDP的資料包為了區分前者常被稱為資料段)

img

TCP/IP五層模型之應用層

  應用層就是屬於跑應用程式的一層。

  應用層的功能:規定應用程式的資料格式

  例:TCP協議可以為各種各樣的程式傳遞資料,比如Email,www,ftp等等,那麼,必須有不同協議規定電子郵件,網頁,ftp資料的格式。這些應用程式之間的協議就構成了應用層

其他的比如:

 

  表示層就是做一個資料的壓縮和解壓縮以及加密解密的協議。(不做詳解)

  會話層主要就是一些會話方面的協議而已。(不做詳解)

 

  我們其實在今後的學習中使用最多的也就是應用層,在應用層中我們可以定製屬於自己的協議(其他層不行),需要注意的是我們自定製的協議必須也要是由Head和data兩部分組成。  

 

  總結:資料包的的傳送就是一個封裝的過程,不斷的封裝解包封裝解包

封裝解包過程

 

 

資料包封裝圖解

img

DHCP服務

  IP地址並不是憑空產生的,而是由兩種情況產生。

 

  1.手動靜態配置

  2.通過DHCP伺服器自動獲取(基於UDP協議)

 

  接下來我們就講解通過DHCP伺服器獲取IP地址的這一套流程,首先這個請求IP地址的過程是通過UDP協議進行的,我們來看一下它的資料組成部分。

 

乙太網標頭IP標頭UDP標頭DHCP資料包

 

  乙太網標頭

    包含本機MAC地址,DHCP伺服器的MAC地址。由於我們剛開機,所以DHCP伺服器的MAC地址是不知道的,所以這個時候通過ARP協議將接收方的MAC地址設為FF-FF-FF-FF-FF-FF。

 

  IP標頭

    這一部分是設定傳送方的IP地址與接收方的IP地址。由於我們剛開機,這兩者都不知道,所以對於傳送發也就是自身的IP地址來說填上0.0.0.0,而對於接收方的IP地址我們也不知道,就填上255.255.255.255

 

  UDP標頭

    這一部分填入的傳送方的埠與接收方的埠,由DHCP協議規定死的,傳送方的埠是68,而接收方的埠是67

 

  首先,這個資料包構造完成後會在當前廣播域以廣播的方式傳送,同一子網內的所有計算機都會收到該資料包,由於接收方地址是FF-FF-FF-FF-FF-FF,所有的計算機都不知道這個包是要發給誰,當所有的計算機對該包進行拆包分析的時候就會看到傳送方的IP地址是0.0.0.0而接收方的地址是255.255.255.255,進行到這一步DHCP伺服器恍然大悟,原來這個包是發給我的。而其他計算機則可以丟棄這個包。

 

  此時,DHCP伺服器會分配好IP地址,併傳送回一個“DHCP響應"的資料包,這個響應包的結構也是類似的。乙太網標頭的MAC地址是雙方的網路卡地址,IP標頭的IP地址是DHCP伺服器的IP地址(傳送方)和255.255.255.255(接收方),UDP標頭的埠是67(傳送方)和68(接收方),分配給請求端的IP地址和本網路的具體引數則包含在Data部分。

 

  新加入的計算機收到這個響應包,於是就知道了自己的IP地址、子網掩碼、閘道器地址、DNS伺服器等等引數。

 

淺析DNS服務

  DNS( Domain Name System)是"域名系統"的縮寫,它的主要職責就是提供域名解析服務。

 

  其實我們的網際網路通訊絕大多數都是基於TCP/IP協議進行,有了IP地址加埠就可以找到全世界範圍內獨一無二的一臺計算機上的一個網路程式。但是這樣做會很麻煩因為我們根本不可能記住太多的毫無規則的IP地址。為了解決這種情況,出現了域名這個玩意兒,這玩意兒和IP地址一一對應,當你在瀏覽器內輸入一個域名的時候就會通過DNS解析出它對應的IP地址。

 

 

  那麼,我們輸入一個網址的時候是如何解析出其對應的IP地址呢?這個就有一系列非常複雜的過程(其本質也是通過UDP協議進行發包,因為速度快,不用建立雙向連結通道)

 

  我這裡儘量用通俗的語言來闡述這一過程,在研究該過程之前我們先來研究一下域名的組成部分。

 

在這裡插入圖片描述

 

  這裡貼一張圖,並附上一段視訊連結感興趣的朋友可以看一下里面介紹的很詳細:域名詳解視訊

 

  通常我們可以這麼區分:

    一級域:只有一個點統稱為一級域如: baidu.com,在一級域下可以擴充套件多個二級域。而在一級域最右邊的 .com 則為頂級域。

    二級域:兩個點如: www.baidu.com ; tieba.baidu.com等等

    主機名: 如www,mail等等

 

  域名解析流程:

 

  1) 瀏覽器快取

    當使用者通過瀏覽器訪問某域名時,瀏覽器首先會在自己的快取中查詢是否有該域名對應的IP地址(若曾經訪問過該域名且沒有清空快取便存在);

 

  2) 系統快取

    當瀏覽器快取中無域名對應IP則會自動檢查使用者計算機系統Hosts檔案DNS快取是否有該域名對應IP;

 

  3) 路由器快取

    當瀏覽器及系統快取中均無域名對應IP則進入路由器快取中檢查,以上三步均為客服端的DNS快取;

 

  4) ISP(網際網路服務提供商)DNS快取

    當在使用者客服端查詢不到域名對應IP地址,則將進入ISP DNS快取中進行查詢。比如你用的是電信的網路,則會進入電信的DNS快取伺服器中進行查詢;

 

  5) 根域名伺服器

    當以上均未完成,則進入根伺服器進行查詢。全球僅有13臺根域名伺服器,1個主根域名伺服器,其餘12為輔根域名伺服器。根域名收到請求後會檢視區域檔案記錄,若無則將其管轄範圍內頂級域名(如.com)伺服器IP告訴本地DNS伺服器;

 

  6) 頂級域名伺服器

    頂級域名伺服器收到請求後檢視區域檔案記錄,若無則將其管轄範圍內主域名伺服器的IP地址告訴本地DNS伺服器;

 

  7) 主域名伺服器

    主域名伺服器接受到請求後查詢自己的快取,如果沒有則進入下一級域名伺服器進行查詢,並重復該步驟直至找到正確紀錄;

 

  8)儲存結果至快取

    本地域名伺服器把返回的結果儲存到快取,以備下一次使用,同時將該結果反饋給客戶端,客戶端通過這個IP地址與web伺服器建立連結。

 

 

img

 

13臺根伺服器  
URL IP 所在地
A.root-servers.net 198.41.0.4 美國
B.root-servers.net 192.228.79.201 美國(另支援IPv6)
C.root-servers.net 192.33.4.12 法國
D.root-servers.net 128.8.10.90 美國
E.root-servers.net 192.203.230.10 美國
F.root-servers.net 192.5.5.241 美國(另支援IPv6)
G.root-servers.net 192.112.36.4 美國
H.root-servers.net 128.63.2.53 美國(另支援IPv6)
I.root-servers.net 192.36.148.17 瑞典
J.root-servers.net 192.58.128.30 美國
K.root-servers.net 193.0.14.129 英國(另支援IPv6)
L.root-servers.net 198.32.64.12 美國
M.root-servers.net 202.12.27.33 日本(另支援IPv6)

 

  除此之外DNS查詢過程還分為遞迴查詢和迭代查詢兩種模式。

 

  1)遞迴查詢

    遞迴查詢是一種DNS 伺服器的查詢模式,在該模式下DNS 伺服器接收到客戶機請求,必須使用一個準確的查詢結果回覆客戶機。如果DNS 伺服器本地沒有儲存查詢DNS 資訊,那麼該伺服器會詢問其他伺服器,並將返回的查詢結果提交給客戶機。

 

  2)迭代查詢

    DNS 伺服器另外一種查詢方式為迭代查詢,DNS 伺服器會向客戶機提供其他能夠解析查詢請求的DNS 伺服器地址,當客戶機傳送查詢請求時,DNS 伺服器並不直接回複查詢結果,而是告訴客戶機另一臺DNS 伺服器地址,客戶機再向這臺DNS 伺服器提交請求,依次迴圈直到返回查詢的結果

為止。

 

怎麼理解?這裡有兩張圖

 

 

 

參考文獻

  本文主要記錄於海峰老師關於計算機網路中的講解,其中有些深入知識點並沒有涉及。這些會在後面做一個詳細的補充,附上B站視訊連結

  看海峰老師如何詳解計算機網路基礎:

  視訊連結:https://www.bilibili.com/video/BV19b41137Xp

  原文章連結:https://www.cnblogs.com/linhaifeng/articles/5937962.html

 

相關文章