日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

读书笔记之《网络是怎样连接的》

發布時間:2023/12/2 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读书笔记之《网络是怎样连接的》 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好呀,我是小菜~

帥哥美女,知道你們時間寶貴,那么就由小菜為你讀好一本書,讀一本好書,取其精華,與你共享~!

本文主要分享 《網絡是怎樣連接的》

如有需要,可以參考

如有幫助,不忘 點贊 ?

微信公眾號已開啟,菜農曰,沒關注的同學們記得關注哦!

今天帶來的是 《網絡是怎樣連接的》 的讀書筆記

(文中使用到的例子貼圖均出于原書)

在正式進入分享之前,我們想看下這本樹的目錄架構

網絡是怎樣連接的

本書共 6 章,156482 個字,篇幅不多,內容較意思,是一本很好的網絡基礎入門書籍,穿插專業術語的解釋和插圖,對復雜的網絡通信世界能有一定的了解

本書路線:

第一章:瀏覽器生成消息

1)生成 HTTP 請求

  • https://www.baidu.com 中的 www 是 Web服務器上的一種命名,World Wide Web 不是一個協議的名字,而是 Web 的提出者最早開發的瀏覽器兼 HTML 編輯器的名稱
  • 瀏覽器等網路應用程序實際上并不具備網絡控制功能,而是委托操作系統來控制網路

什么是網址?網址準確來說稱之為 URL,就是日常生活中以 Http: 開頭的一串字符。

我們生活中常用的幾種 URL:

雖然 URL 有各種不同的寫法,但是開頭部分的內容決定了后面部分的寫法,也就是定義了某種協議的存在,這樣子在使用的過程中并不會造成混亂。

1. 解析URL

當我們輸入某一串 URL 時,瀏覽器需要對 URL 進行解析,然后生成發送給 Web 服務器的請求消息,當然這一步在我們使用的過程中是無感的,因為瀏覽器幫我們做好了這一切,我們只關心響應的結果。

解析的過程包括以下幾步:

我們先識別出了 HTTP,這說明要訪問 Web 服務器,然后我們可以繼續往后面拆分,包含了服務器名稱、目錄名和文件名,到這一步我們就知道了原來用戶要訪問 dir1 目錄下的 file1.html 文件

2. 省略文件名

上述我們要訪問的 http://www.lab.glasscom.com/dir1/file1.html URL 中清晰的描述了我們訪問的是 file1.html 文件,有時可能也會出現類似一些特殊的 URL

  • http://www.lab.glasscom.com/dir/ ,其中文件名被省略了,但這不代表我們訪問不到文件了,一般來說這種情況會在服務器上事先設置好文件名省略的默認名稱,比如 index.html 或 default.html 之類的

  • http://www.lab.glasscom.com/,該 URL 中帶上了 / ,表示訪問的是根目錄,在知道目錄名的情況下,我們可以按照情況 1 的方式推測出要訪問的文件名

  • http://www.lab.glasscom.com,該 URL 連 / 都省略了,這種情況就代表訪問根目錄下事先設置好的默認文件(最早的時候這個文件稱之為主頁

  • http://www.lab.glasscom.com/dir,該 URL 末尾沒有 /,則表示如果 Web 服務器上存在名為 dir 的文件,則將 dir 以文件名的方式處理,如果存在名為 dir 的目錄,則以目錄名的方式處理

  • 3. 處理的基本思路

    首先,客戶端會向服務器發送請求消息(包含 對什么 和 做什么 兩個部分)

    • 對什么:指的是 URL
    • 做什么:指的是方法

    URL 不做過多的解釋,就是發往服務器的那串請求地址,方法我們調接口的時候也不少見,通常有以下幾種:

  • GET:通常用于獲取信息。
  • POST:通常用于新增數據。
  • PUT:通常用于更新數據。
  • DELETE:通常用于刪除數據。
  • HEAD:與 GET 基本相同。不過它只返回 HTTP 的消息頭,并不返回數據的內容
  • TRACE:將服務器收到的請求行和頭部(header)直接返回給客戶端
  • OPTIONS:用于通知或查詢通信選項
  • 4. 響應處理

    當請求的消息發出后,Web服務器會返回響應消息。在響應消息中,第一行的內容為 狀態碼響應短語,用來表示請求的執行結果是成功還是出錯。狀態碼和響應短語表示的內容一致,但用途不同。

    狀態碼是一個數字,用來向程序告知執行的結果,響應短語是一段文字,同樣使用來告知執行的結果

    狀態碼概要

    • 1xx:告知請求的處理進度和情況
    • 2xx:請求成功
    • 3xx:表示要進一步的操作
    • 4xx:客戶端錯誤
    • 5xx:服務端錯誤

    2)向DNS服務器查詢Web服務器的IP地址

    客戶端要向服務端發送請求之前還有一個工作需要完成,那就是查詢網址中服務器域名對應的 IP 地址。

    因為瀏覽器本身不具備將消息發送到網絡中的功能,而是需要委托操作系統來完成。

    但是委托操作系統來完成通信的條件就是需要提供通信對象的 IP 地址,而不是域名。

    1. 什么是 IP 地址

    1. TCP/IP 初知

    了解什么是 IP 地址,我們就需要了解 TCP/IP。

    這是一個 TCP/IP 的結構圖。TCP/IP 就是由一些小的子網(用集線器連接起來的幾臺計算器),通過路由器連接起來組成的一個大網絡。

    在網路中所有設備都會被分配一個地址(相當于我們現實中的xx號xx室),其中 是分配給整個子網的(網絡號),而 是分配給子網中的計算機的(主機號),這就是網絡中的地址,整體稱之為 IP地址。

    那么消息發送的過程就是:

    發送者發出的消息首先經過子網中的集線器,然后轉發到距離發送者最近的路由器上,路由器會根據消息的目的地判斷下一個路由器的位置,然后將消息發送到下一個路由器,多次轉發后就到了最終的目的地

    2. IP 地址

    IP 地址實際上是一串 32 比特的數字,按照 8 比特(1字節)為一組分成4組,分別用十進制表示然后用圓點 . 隔開。

    IP 地址是由 網路號主機號 組成的,但是通過這一串數字我們無法得知哪些是網路號,哪些是主機號,因此我們還需要 子網掩碼 的幫助。

    子網掩碼:是一串與 IP 地址長度相同的 32 比特數字,左邊一半是1,右邊一半是0,其中子網掩碼為 1 的部分表示網絡號,為 0 的部分表示為主機號,子網掩碼表示網絡號與主機號之間的邊界。

    主機號部分的比特全部為 0 或全部為 1 表示兩種特殊的含義:

    • 全 0:表示整個子網
    • 全 1:表示向子網上所有設備發送包,即 廣播
    2. 域名的出現

    想要達到最終目的地,我們就需要知道目的地的 IP 地址。但 IP 地址是一串數字,我們每天打交道的網站實在是太多了,那么為了記憶簡單,就出現了 域名

    為了填補兩者之間的障礙,就需要有一個機制能夠通過名稱來查詢 IP 地址,或者通過 IP 地址來查詢名稱,這個機制就是 DNS

    3. Socket 庫

    瀏覽器想要發送請求,需要委托操作系統,但是委托操作系統查詢,我們需要告知操作系統目的地的IP地址。因此瀏覽器需要查詢域名對應的 IP 地址再告知操作系統,但是瀏覽器又不具備發送請求的功能,這豈不是死循環了嗎?

    實際上負責 DNS 查詢 IP 地址的操作稱之為域名解析,因此負責解析這一操作就叫做解析器

    解析器實際上是一段程序,它包含在操作系統的 Socket 庫中,它是一堆通用程序組件的集合,其中包含的程序組件可以讓其他的應用程序調用操作系統的網路功能,而解析器就是這個苦衷的一種組件。

    4. 解析器

    當流程流轉到解析器的時候,解析器會生成要發送給 DNS 服務器的查詢消息,同樣發送消息這個操作并不是由解析器自身來執行,而是要委托給操作系統內部的協議棧來執行(解析器本身也不具備網絡收發的能力)

    向 DNS 服務器發送消息時,我們也需要知道 DNS 服務器的 IP 地址,不過這個 IP 地址是已經實現設置好的,比如 windows 上的網絡設置

    3)全世界DNS服務器的大接力

    1. 域名的查詢

    通常客戶端想要向 DNS 查詢通常包含以下 3 種消息:

    • 域名
    • Class:用來識別網絡的信息,永遠是代表互聯網的 IN
    • 記錄類型:表示域名對應哪種類型的記錄。比如,當類型為 A 時,表示域名對應的 IP 地址,為 MX 時,表示對應的是郵件服務器,對于不同的記錄類型,服務器向客戶端返回的信息也會不同

    2. 域名的層次

    互聯網上存在不計其數的服務器,將這些服務器的信息全部都保存在一臺 DNS 服務器上是不可能的,因此就需要將信息分布保存在多臺 DNS 服務器中,這些 DNS 相互接力配合,從而查找出要查詢的信息。

    比如 www.life.cbuc.com,在靠右的位置表示層級越高,這段域名的大致意思為 com 集團 cbuc 部門 life 組的 www。這種具有層次結構的域名信息會被注冊到 DNS 服務器中,而每個域都是作為一個整體來處理,也就是不能將一個域拆開存放在多臺 DNS 服務器中。

    一個域是不可分割的,但我們可以在域的下面創建下級域(子域),然后再將它們分別分配給各個事業集團,比如 life.cbuc.com 可以創建兩個子域:a1.life.cbuc.com 和 a2.life.cbuc.com

    DNS 查詢的結果有點類似樹形結果。

    負責管理下級域的 DNS 服務器的 IP 地址注冊到它們上級 DNS 服務器中,然后上級 DNS 服務器的 IP 地址再注冊到更上一級的 DNS 服務器中,以此類推。也就是說,負責管理 life.cbuc.com 這個域的 DNS 服務器的IP地址需要注冊到 cbuc.com 域的DNS服務器中,而 cbuc.com 域的 DNS 服務器的 IP 地址又需要注冊到 com 域的 DNS 服務器中,這樣,就可以通過上級 DNS 服務器查詢出下級 DNS 服務器的 IP 地址,也就可以向下級服務器發送查詢請求了。

    3. 根域的存在

    經過上面的講解,如果覺得 com、cn 這類就屬于頂級域的話就錯了。

    實際上還有 根域 的存在,一般在書寫的時候會被省略,如果要明確表示根域,則需要在域名的最后面加上 . 如 www.baidu.com. ,雖然書寫的時候不寫,但根域確是真實存在的,根域的 DNS 保管著 com、cn 等 DNS 服務器的信息,所以我們解析域名的時候需要從根域開始一路往下找到任意一個域的 DNS 服務器

    4. 緩存加快響應

    有時候并不需要從最上級的根域開始查找,因為 DNS 服務器有一個緩存的功能,可以記住之前查詢過的域名,如果要查詢到域名和相關信息已經在緩存中,那么就可以直接返回響應。

    同理,當要查詢到域名不存在時,“不存在”這一響應結果也會被緩存。

    緩存都具備有效期,當緩存中的信息超過有效期后,數據就會從緩存中刪除。而且,在對查詢進行響應時,DNS服務器也會告知客戶端這一響應的結果是來自緩存中還是來自負責管理該域名的DNS服務器。

    4)委托協議棧發送消息

    當獲得了 IP 地址之后,操作系統就可以進行消息收發了,消息實際上是一種 數字信息, 這一操作不僅限于瀏覽器,對于各種使用網絡的應用程序來說都是共通的。

    向操作系統內部的協議棧發出委托時,需要按照指定的順序來調用 Socket 庫中的組件。

    在進行收發數據之前,雙方需要先建立一條管道,建立管道的關鍵在于 管道兩端數據的出入口,這些出入口就稱為 套接字,然后將套接字連接起來就形成了管道,數據沿著這條通道流動(雙向),最終到達目的地。

    當數據全部發送完畢之后,連接的管道將會斷開,管道在連接時是由客戶端發起的,但在斷開的時可以由任意一方發起。

    總結,收發數據的大致操作如下:

    • 創建套接字階段:創建套接字
    • 連接階段:將管道連接到服務器端的套接字上
    • 通信階段:收發數據
    • 斷開階段:斷開管道并刪除套接字

    第二章:用電信號傳輸 TCP/IP 數據

    1)創建套接字

    1. 協議棧的內部結構

    圖的結構也是一種層級關系,上層會向下層逐層委派工作。

    • 最上面的部分是網絡應用程序,也就是瀏覽器、電子郵件客戶端、Web服務器、電子郵件服務器等程序,它們會將收發數據等工作委派給下層的部分來完成。

    • 應用程序的下層是 Socket 庫,其中包括解析器,解析器用來向DNS服務器發出查詢。

    • 再下面就是操作系統內部了,其中包括協議棧。協議棧的上半部分有兩塊

      • 負責用 TCP 協議收發數據的部分

      • 負責用 UDP 協議收發數據的部分

    ? 下面一半是用 IP 協議控制網路包收發操作的部分。在互聯網上傳送數據,數據會被切分成一個一個的網絡包,而將網絡包發送給通信對象的操作就是由 IP 來負責。此外,IP 中還包括 ICMP 協議(用于告知網絡包傳送過程中產生的錯誤以及各種控制消息)和 ARP 協議(用于根據IP地址查詢相應的以太網MAC地址)

    • IP 下面的網卡驅動程序負責控制網卡硬件
    • 最下面的網卡則負責完成實際的收發操作,也就是對網線中的信號執行發送和接收操作
    2. 套接字的概念

    套接字就是一個概念,并沒有實際意義上的實體,但它具備了例如通信對象的IP地址、端口號、通信操作的進行狀態等。協議棧在執行操作的時候會查詢這些控制信息。

    它的作用就是:記錄了用于控制通信操作的各種控制信息,協議棧則需要根據這些信息判斷下一步的行動

    2)連接服務器

    創建了套接字之后,應用程序就會調用 connect,隨后協議棧會將本地的套接字與服務器的套接字進行連接。這里的連接指的是通信雙方交換信息的操作過程。

    1. 保存控制信息的頭部

    控制信息可以分為兩類

    • 客戶端和服務器相互聯絡時交換的控制信息。這些信息不僅連接時需要,數據收發和斷開連接都需要。
    • 保存在套接字中,用來控制協議棧操作的信息。應用程序傳遞來的信息以及從通信對象接收到的信息都會保存在這里,還有收發數據操作的執行狀態等信息也會保存在這里。
    2. 連接的實際過程

    連接是從應用程序調用 Socket 庫的 connect 開始的

    connect(<描述符>, <服務器IP地址和端口號>,...)

    上述連接的信息會傳遞給TCP模塊,然后 TCP 會與該 IP 地址對應的通信對象進行交換控制信息。大致過程為以下幾個步驟:

    • 在 TCP 模塊處創建表示連接控制信息的頭部

    • 通過 TCP 頭部找到要連接的套接字

    • 將信息傳遞給 IP 模塊并委托它進行發送

    這期間其實還涉及到TCP 三次握手的過程

    3)收發數據

    1. 將消息交給協議棧

    當控制流程從 connect 回到應用程序之后,接下來就進入到數據收發階段。

    數據收發操作是從應用程序調用 write 將要發送的數據交給協議棧開始的。

    協議棧并不是一收到數據就馬上發送出去,而是將數據存放在內部的發送緩沖區中,并等待應用程序的下一段數據。這樣做的好處是協議棧發送的數據長度由應用程序本身決定。而什么時候是否才發出去有以下幾個因素決定:

    • MTU:一個網絡包的最大長度,以太網中一般為 1500 字節

    • MSS:除去頭部之后,一個網路包所能容納的TCP數據的最大長度

    • 時間:當應用程序發送數據的頻率不高的時候,如果每次都等到長度接近 MSS 時再發送,可能會因為等待時間太長而造成發送延遲,這種情況下,即便緩沖區中的數據長度沒有達到MSS,也應該果斷發送出去,為此協議棧內部有個計時器,當經過一定時間之后,就會把網路包發送出去

    2. 數據拆分

    發送緩沖區中的數據超出 MSS 的長度時,需要以 MSS 的長度為單位進行拆分,拆分出來的每塊數據都會被放進單獨的網絡包匯總,根據發送緩沖區的數據拆分情況,當判斷需要發送這些數據時,就在每一塊數據前面加上TCP頭部,并根據套接字中記錄的控制信息標記發送方和接收方的端口號,然后交給 IP 模塊進行發送

    4)從服務器斷開并刪除套接字

    和服務器的通信結束之后,用來通信的套接字也就不會再使用了,這時我們就可以刪除這個套接字了,不過套接字并不會馬上被刪除,而是會等待一段時間之后再被刪除,等待一段時間的原因是為了防止誤操作。

    具體等待多長的時間與包重傳的操作方式有關。網絡包丟失之后會進行重傳,這個操作通常會持續幾分鐘,如果重傳了幾分鐘之后依然無效,則停止重傳。

    1. 收發操作小結

    數據收發操作第一步便是創建套接字,一般來說服務器一方的應用程序在啟動時就會創建好套接字并進入等待連接的狀態。客戶端則一般是在用戶觸發特定動作,需要訪問服務器的時候才創建套接字

    創建好套接字之后,客戶端會向服務器發起連接操作,也就是經典的 TCP 三次握手操作

    建立完連接之后便進入了數據收發操作

    5)IP與以太網的包收發操作

    1. 包的基本知識

    包是有頭部和數據兩部分構成的

    • 頭部:包含目的地址等控制信息,相當于快遞包裹的面單
    • 數據:發送給對方的內容,相當于快遞包裹中的貨物

    網絡中有 路由器集線器 兩種不同的轉發設備

    • 路由器:根據目標地址判斷下一個路由器的位置
    • 集線器:在子網中將網絡包傳輸到下一個路由

    實際上,集線器是按照 以太網規則 傳輸包的設備,而路由器是按照 IP 規則 傳輸包的設備,因此可以得出一個結論:

    • IP 協議:根據目標地址判斷下一個 IP 轉發設備的位置
    • 以太網協議: 在子網中將包傳輸到下一個轉發設備

    在 TCP/IP 中包含兩個頭部

    • MAC 頭部: 用于以太網協議
    • IP 頭部:用于 iP協議
    2. 包的收發操作

    實際上將包從發送方傳輸到接收方的工作是由集線器、路由器等網絡設備來完成的,因此 IP 模塊僅僅是整個包傳輸過程的入口而已。

    IP 模塊負責添加兩個頭部:

    • MAC 頭部: 以太網用的頭部,包含 MAC 地址
    • IP 頭部:IP 用的頭部,包含 IP 地址

    接下來封裝好的包會交給網絡硬件(網卡),網路硬件會將這些數字信息轉換為電信號或光信號,并通過網線(光纖)發送出去,然后這些信號就會到達集線器、路由器等轉發設備,再由轉發設備一步一步地送達接收方。

    無論要收發的包是控制包還是數據包,IP 對各種類型的包的收發操作都是相同的

    3. 生成 IP 頭部

    IP 并不知道接收方的IP 地址,這個地址是由應用程序指定的。IP 頭部中除了接收方的 IP 地址,還需要填寫發送發的 IP 地址,這里 IP 地址并不是指計算機的 IP 地址,而是網卡的 IP 地址,因為一個計算機中可能存在多張網卡。

    4. 生成 MAC 頭部

    IP 頭部中的接收方 IP 地址表示網絡包的目的地,通過這個地址我們就可以判斷要將包發送到哪里,但在以太網的世界中, TCP/IP 的這個思路是行不通的,以太網在判斷網絡包目的地時和 TCP/IP 的方式不同,因此必須采用 相匹配 的方式才能在以太網中將包發往目的地,而 MAC 頭部就是干這個用的

    MAC 頭部的開頭是接收方和發送方的 MAC 地址,不過 IP 地址是 32 比特,而 MAC 地址是 48 比特。

    發送方的 MAC 地址好知道,但是接收方的 MAC 地址卻比較麻煩,我們需要根據 IP 地址查詢對應的 MAC 地址

    5. ARP 查詢 MAC地址

    以太網中,有一種叫作廣播的方法,可以把包發給連接在同一個以太網中的所有設備。

    ARP 就是利用廣播對所有設備提問:“xx 這個 IP 地址是誰的,請把你的 MAC 地址告訴我”

    同樣 ARP 中存在緩存,在發送的時候會先查詢 ARP 緩存。

    6. 以太網的基本知識

    以太網是一種為多臺計算機能夠彼此自由和廉價相互通信而設計的通信技術。

    這種網路的本質其實就是一根網線,借助一種叫作收發器的小設備,它的功能只是將不同網線之間的信號連接起來。

    當一臺計算機發送信號時,信號就會通過網線流過整個網絡,最終到達所有的設備,而這個時候需要在信號的開頭加上接收者的信息,才能判斷一個信號到底是發給誰的

    隨著后來的發展,之前的原型轉換成了一個中繼集線器,將收發器網線替換成了雙絞線,網絡的結構雖然發生變化,但是信號會發送給所有設備這一基本性質并沒有變

    到了后面采用交換式集線器的時候,信號就不會發送給所有設備了,而是發送給指定 MAC 地址的設備

    總結來說就是三個特性:

    • 將包發送到 MAC 頭部的接收方
    • 用發送方 MAC 地址識別發送方
    • 用以太類型識別包的內容
    7. 向集線器發送網絡包

    我們可以將包通過網線發送出去,發出信號的操作分為兩種

    • 使用集線器的半雙工模式

    為了避免信號碰撞,首先要判斷網線中是否存在其他設備發送的信號,如果有則需要阻塞等待

    • 使用交換機的全雙工模式

    發送和接受可以同時進行,不會發生碰撞

    8. 接受返回包

    在使用集線器的半雙工模式以太網中,一臺設備發送的信號會到達連接在集線器上的 所有設備, 將信號全都接收后,便會進行 FCSMAC 校驗,如果校驗通過,則將包放入緩沖區中,然后網卡會通知計算機收到了一個包。

    通知計算機的操作會使用一個叫做 中斷 的機制,需要打斷計算機正在執行的任務,讓計算機注意到網卡中發生的事情

    6)UDP 協議的收發操作

    1. 控制用的短數據

    像 DNS 查詢等交換控制信息的操作基本上都可以在一個包的大小范圍內解決,這種場景就可以用 UDP 來代替 TCP。

    2. 音頻和視頻數據

    在發送音頻和視頻數據的時候,必須在規定的時間內送達,一旦送達完晚了,就會錯過播放時機,導致聲音和圖像卡頓。因此通常會采用 UDP 來達到更高的傳輸效果,因為就算缺少了某些包并不會產生嚴重問題,知識會產生一些失真或卡頓。

    第三章:從網線到網絡設備

    1)信號在網線和集線器中傳輸

    網絡包從客戶端計算機發出之后,要經過集線器、交換機和路由器最終進入互聯網。實際上我們家用的路由器已經集成了 集線器交換機 的功能

    2)防止網線中的信號衰減很重要

    信號到達集線器的時候斌不是跟剛發出去的是哦戶一模一樣,集線器收到的信號有時會出現衰減,信號在網絡傳輸過程中能量會逐漸損失,網線越長,信號衰減越嚴重

    即便線路條件很好,沒有噪聲,信號在傳輸過程中依然會發生失真,如果再加上噪聲的影響,失真就會更厲害。

    3)雙絞是為了抑制噪聲

    雙絞線中雙絞的意思是以兩根信號線為一組纏繞在一起,這種擰麻花一樣的設計就是為了抑制噪聲的影響。

    產生噪聲的原因

    網線周圍存在電磁波,當電磁波接觸到金屬等導體時,在其中就會產生電流。由于信號本身也是一種帶有電壓變化的電流,其本質和噪聲產生的電流是一樣的,所以信號和噪聲的電流就會混雜在一起,是導致信號的波形發生失真,這就是噪聲的影響

    電磁波的種類

    • 由電機、熒光燈、CRT 顯示器燈設備泄露出來的電磁波,這種電磁波來自網線之外的其他設備

    要抑制這種電磁波,首先信號線是用金屬做的,當電磁波接觸到信號線時,會沿著電磁波傳播傳播的右旋方向產生電流,這種電流會導致波形發生失真,如果將信號線纏繞在一起,信號線就會變成螺旋形,其中兩根信號線中產生的噪聲電流防線就會相反,從而使得噪聲電流相互抵消,噪聲就得到了抑制

    • 從網線中相鄰的信號線泄露出來

    這種噪聲的強度并不大,但是距離比較近。抑制這種噪聲的方式就在于雙絞線的纏繞,在一根網線中,每一對信號線的扭絞節距都有一定的差異,這使得在某些地方正信號線距離近,另一些地方則是負信號線距離近。由于正負信號線產生的噪聲影響是相反的,所以兩者就會相互抵消

    4)集線器將信號發往所有線路

    當信號到達集線器后,會被廣播到整個網絡中。以太網的基本架構[插圖]就是將包發到所有的設備,然后由設備根據接收方MAC地址來判斷應該接收哪些包,而集線器就是這一架構的忠實體現,它就是負責按照以太網的基本架構將信號廣播出去

    2)交換機根據地址表進行轉發

    交換機的設計是將網絡包原樣轉發到目的地。

    當信號到達網線接口,并由 PHY(MAU)模塊進行接收,這一部分和集線器是相同的,PHY(MAU)模塊會將網線中的信號轉換為通用模式,然后傳遞給 MAC 模塊,MAC 模塊會將信號轉換為數字信號,然后通過包末尾的 FCS 校驗錯誤,如果沒有問題則存放到緩沖區中。

    這部分的操作和網卡基本相同,可以認為交換機的每個網線接口后面都是一塊網卡,與網卡不同的是,交換機的端口不具有 MAC 地址

    當包存入緩沖區后,就需要查詢這個包的接收方 MAC 地址是否已經在 MAC 地址表有記錄了,然后通過交換電路將包發送到響應的端口

    當網路包通過交換電路到達發送端口時,端口中的 MAC 模塊和 PHY(MAU)模塊會執行發送操作,將信號發送到網線中,這部分和網卡發送信號的過程是一樣的。

    3)MAC 地址表的維護

    交換機在轉發包的過程中,還需要對 MAC 地址表的內容進行維護,維護分為兩種:

    • 在收到包時,將發送方 MAC 地址以及其輸入端口號寫入 MAC 地址表
    • 刪除地址表中的某條記錄的操作,防止設備移動時產生的問題(比如當我們把計算機從辦公桌移動到會議室時,設備就發生了移動,端口也會發生變化)。為了防止終端設備移動產生的問題,需要將一段時間不使用的過時記錄從地址表中刪除就可以了
    4)全雙工模式

    全雙工模式是交換機特有的工作模式,它可以同時進行發送和接收操作,集線器不具備這樣的特性

    5)自動協商:確定最優的傳輸速率

    自動協商指的是在相互連接的雙方探測對方是否支持全雙工模式,并支持切換成相應的工作模式,并且除了能自動切換工作模式之外,還能探測對方的傳輸速率并進行自動切換。

    3)路由器的包轉發操作

    1. 路由器的基本知識

    網線包經過集線器和交換機之后,便會到達路由器。

    路由器是基于 IP 設計的,交換機是基于以太網設計的。路由器包括 轉發模塊端口模塊

    • 轉發模塊:負責判斷包的轉發目的地(類似 IP 模塊)
    • 端口模塊:負責包的收發操作(類似網卡)

    路由器基本原理

    路由器在轉發包時,首先會通過端口將發過來的包接收進來,這一步的工作過程取決于端口對應的通信技術。對于以太網端口來說,就是按照以太網規范進行工作,而無線局域網端口則按照無線局域網的規范工作,總之就是委托端口的硬件將包接收進來。接下來轉發模塊會根據接收到的包的 IP 頭部中記錄的接收方 IP 地址,在路由表中進行查詢,以此判斷轉發目標,然后轉發模塊將包轉移到轉發目標對應的端口,端口再按照硬件的規則將包發送出去,也就是轉發模塊委托端口模塊將包發送出去。

    第四章:通過接入網進入互聯網內部

    1)ADSL 接入網的結構和工作方式

    1. 互聯網的基本結構和家庭、公司網絡是相同的

    互聯網也是通過路由器來轉發包的,我們可以將互聯網理解為家庭、公司網路的一個放大版。

    而互聯網與家庭、公司網絡之間最主要的兩個不同點在于:距離的不同路由的維護方式不同

    2. 連接用戶與互聯網的接入網

    所謂接入網,就是指連接互聯網與家庭、公司網絡的通信線路。一般家用的接入網包括 ADSL、FTTH、CATV、電話線、ISDM等,公司則還可能使用專線。

    3. ADSL Modem 將包拆分成信元

    在這張圖中網絡包是從右往左傳輸的。用戶端路由器發出的網絡包通過 ASDL Modem 和電話線達到電話局,然后到達 ADSL 的網絡運營商(ISP)。

    客戶端生成的網絡包先經過集線器和交換機到達互聯網接入路由器,并在此從以太網中取出 IP 包并判斷轉發目標。在這里網絡包會加上 MAC 頭部、PPPoE 頭部、PPP 頭部總共3種頭部,然后按照以太網規則轉換成電信號后被發送給 ADSL Modem,然后 ADSL Modem 會把包拆分成很多個小格子,每一個小格子稱為一個信元。

    4. ADSL 將信元調制成信號

    以太網采用的是用方波信號表示 0 和 1 的方式,ADSL 會比較復雜,它是采用一種用 **圓滑波形(正弦波)**對信號進行合成來表示 0 和 1,這種技術稱為 調制。

    調制的方式有很多種,ADSL 采用的調制方式是 振幅調制(ASK)相位調制(PSK) 相結合的正交振幅調制(QAM)方式

    5. ADSL 通過使用多個波來提高速率

    信號不一定要限制在一個評率,不同頻率的波可以合成,因此可以使用多個頻率合成的波來傳輸信號,這樣能表示的比特數就可以成倍提高了,ADSL 就是利用了這一性質,通過多個波增加能表示的比特數來提高速率。

    6. 分離器的作用

    ADSL Modem 將信元轉換為電信號之后,信號會進入一個叫做分離器的設備,然后 ADSL 信號會和電話的語音信號混合在一起從電話線傳輸出去。

    分離器的作用其實在相反的方向,也就是信號從電話線傳入的時候,需要將電話和 ADSL 的信號進行分離。

    分離器的功能是將一定頻率以上的信號過濾掉,也就是過濾掉了ADSL使用的高頻信號,這樣一來,只有電話信號才會傳入電話機,但對于另一頭的ADSL Modem,則是傳輸原本的混合信號給它。

    7. 從用戶到電話局

    從分離器出來就是插電話線的接口,信號從這里出來之后,會通過室內電話線,然后到達大樓的 IDF 和 MDF。由于電話局附近的地下電纜很多,集中埋設電纜的地方就形成了一條地道,這部分稱為電纜隧道。通過電纜隧道進入電話局后,電纜會逐根連接到電話局的MDF上。

    2)光纖接入網

    1. 光纖的基本知識

    接入網技術除了上述說到的 ADSL ,還有一種稱為 FTTH,是一種基于光纖的接入網技術。FTTH 的關鍵在于對光纖的使用。

    光纖是由一種雙層結構的纖維狀透明材質(玻璃和塑料)構成的,通過在里面的纖芯中傳導光信號來傳輸數字信息。亮表示 1,暗表示 0

    2. 單模與多模

    光纖通信的關鍵技術就是能夠傳導光信號的光纖。光纖可以分成幾種類型,大體上包括較細的單模光纖(8~10 um)和較粗的多模光纖(50 um或62.5 um)

    多模光纖: 可以傳導多條光線,意味著通過的光線較多,對光源和興敏元件的性能要求也就較低,從而可以降低光源和光敏元件的性能要求

    單模光纖: 只能傳導一條光線,能通過的光線較少,對光源和興敏元件的性能要求較高

    單模光纖的失真小,可以比多模光纖更長,因此多模光纖主要用于一座建筑物里面的連接,單模光纖則用于距離較遠的建筑物之間的連接

    3)接入網中使用的 PPP 和隧道

    1. 用戶認證和配置下發

    ADSL和FTTH接入網中,都需要先輸入用戶名和密碼,登錄之后才能訪問互聯網,而BAS就是登錄操作的窗口。BAS使用PPPoE方式來實現這個功能。

    PPP 工作方式:

    首先,用戶向運營商的接入點撥打電話,電話接通后輸入用戶名和密碼進行登錄操作。用戶名和密碼通過RADIUS協議從RAS發送到認證服務器,認證服務器校驗這些信息是否正確。當確認無誤后,認證服務器會返回IP地址等配置信息,并將這些信息下發給用戶。

    2. 在以太網上傳輸 PPP 消息

    ADSL 和 FTTH 接入方式也需要為計算機分配公有地址才能上網,這一點和撥號上網是相同的。

    PPP協議中沒有定義以太網中的報頭和FCS等元素,也沒有定義信號的格式,因此無法直接將PPP消息轉換成信號來發送。要傳輸PPP消息,必須有另一個包含報頭、FCS、信號格式等元素的“容器”,然后將PPP消息裝在這個容器里才行。于是,在撥號接入中PPP借用了HDLC協議作為容器,而HDLC協議原本是為在專線中傳輸網絡包而設計的,撥號接入方式對這一規格進行了一些修正。對于 ADSL 和 FTTH ,并不能使用 HDLC ,但可以使用以太網包代替 HDLC 來轉載 PPP 協議,并且為了彌補這些問題就設計了一個新的規格,就是 PPPoE

    3. 通過隧道將網絡包發送給運營商

    BAS除了作為用戶認證的窗口之外,還可以使用隧道方式來傳輸網絡包

    隧道就類似于套接字之間建立的 TCP 連接,將包含頭部在內的整個包從隧道的一頭扔進去,這個包就會原封不動地從隧道的另一頭出來,就好像在網絡中挖了一條滴到,網絡包從這個地道穿過去。

    隧道的實現方式:

    • 類似 TCP 連接,需要在網路上的兩臺隧道路由器之間建立 TCP 連接,然后將連接兩端的套接字當做是路由器的端口,并從這個端口來收發數據。
    • 基于封裝的隧道實現方式。將包含頭部在內的整個包裝入另一個包中傳輸到隧道的另一端。這種方式下,包本身可以原封不動地到達另一端的出口。

    4)網絡運營商的內部

    1. POP 和 NOC

    互聯網是由多個運營商網絡相互連接組成的。ADSL、FTTH等接入網是與用戶簽約的運營商設備相連的,這些設備稱為 POP,也就是互聯網的入口。

    POP 的結構根據接入網類型以及運營商的業務類型不同而不同。

    5)跨越運營商的網絡包

    1. 運營商之間的連接

    當網絡包到達 POP 路由器之后,如果最終目的地 Web 服務器和客戶端連接在同一個運營商中,那么 POP 路由器的路由表中應該有相應的轉發目標。運營商的路由器可以和其他路由器交換路由信息,從而自動更新自己的路由表,實現了自動化管理。

    如果服務器的運營商和客戶端的運營商是不同的,那么需要先發到服務器的運營商,這些信息也可以在路由表找到,因為運營商的路由器也在和其他運營商的路由器交換信息。

    2. 運營商之間的路由信息交換

    只要讓相連的路由器告知路由信息就可以了,只要獲得了對方的路由信息,就可以知道對方路由器連接的所有網絡,將這些信息寫入自己的路由表,也可以向那些網絡發送包了。這個路由信息交換使用的機制成為 BGP

    這種路由交換可分為兩類:

    • 將互聯網中的路由全部告知對方
    • 兩個運營商之間僅將與各自網絡相關的路由信息告知對方,這樣雙方之間的網絡可以互相收發網絡包,這種方式稱為非轉接,也叫對等。

    第五章:服務器端的局域網中有什么玄機

    1)Web 服務器的部署地點

    1. 在公司里部署Web服務器

    傳統的部署方式:服務器直接部署在公司網絡上,并且可以從互聯網直接訪問。這種情況下,網絡包通過最近的 POP 中的路由器、接入網以及服務器端路由器之后,就到達了服務器。

    這種方式存在弊端:

    • IP 地址不足。這種方式需要為公司網絡中的所有設備,包括服務器和客戶端計算機,都分配各自的公有地址。
    • 安全問題。互聯網中的網絡包會無節制進入服務器。
    2. 將Web服務器部署在數據中心

    服務器可以放在網絡運營商管理的數據中心,或直接租用運營商提供的服務器。

    數據中心是與運營商核心部分 NOC 直接連接的,或是與運營商之間的樞紐IX直

    接連接的??梢酝ㄟ^高速線路直接連接到互聯網的核心部分,因此將服務器部署

    在這里可以獲得很高的訪問速度,

    2)防火墻的結構和原理

    1. 主流的包過濾方式

    無論服務器部署在哪里,都會在前面部署一個防火墻。如果包無法通過防火墻,就無法到達服務器。

    2. 如何設置包過濾的規則

    網路包的頭部包含了用于控制通信操作的控制信息,只要檢查這些信息,就可以獲得很多有用的內容。

    在這是包過濾規則時,首先要觀察包是如何流動的。通過接收方 IP 地址和發送方 IP 地址,可以判斷出包的起點和終點,并將IP地址設為判斷條件。

    3. 通過端口號限定應用程序

    當我們要限定某個應用程序時,可以在判斷條件中加上 TCP 頭部或者 UDP 頭部中的端口號作為判斷條件。

    4. 通過控制位判斷連接方向

    通過上述兩個條件,可以限定到某個具體的應用程序,但還是沒辦法阻止 Web 服務器訪問互聯網,Web 使用的 TCP 協議是雙向收發網絡包的,因此如果單純地阻止從 Web 服務器發往互聯網的包,則從互聯網訪問 Web 服務器的操作也會收到影響而而無法進行。因此單判斷包的流向還不夠,還需要根據訪問的方向來進行判斷,這里就需要用到 TCP 頭部的控制位。

    3)內容分發服務

    1. 利用內容分發服務分擔負載

    當緩存服務器部署在服務端并不能減少流量,因此如果將緩存服務器部署在客戶端就可以不受或者少受某些擁塞點的影響,讓網絡流量更穩定。但如果部署在客戶的函,Web服務器的育嬰師并不能控制它,無法擴縮容數量。因此可以將緩存服務器部署在互聯網的邊緣

    三種部署方式:

    作為Web 服務器運營商如果自己部署服務器,在一定程度上還是吃不消的,因此出現了專門提供這種服務(內容分發服務)的廠商稱為 CDSP.

    2. 如何找到最近的緩存服務器

    利用 DNS 服務器來分配訪問,它們可以通過相互接力來處理 DNS 查詢。但 DNS 只能以輪詢的方式按照順序返回 IP 地址,完全不考慮客戶端與緩存服務器的遠近,因此可能會返回離客戶端較遠的緩存服務器IP地址。

    如果要訪問到最近的緩存服務器,不應采用輪詢,而是應該判斷客戶端與緩存服務器的距離,并返回距離客戶端最近的緩存服務器 IP 地址。

    不要空談,不要貪懶,和小菜一起做個吹著牛X做架構的程序猿吧~點個關注做個伴,讓小菜不再孤單。咱們下文見!

    今天的你多努力一點,明天的你就能少說一句求人的話!

    我是小菜,一個和你一起變強的男人。 💋

    微信公眾號已開啟,菜農曰,沒關注的同學們記得關注哦!

    總結

    以上是生活随笔為你收集整理的读书笔记之《网络是怎样连接的》的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。