系統設計基礎知識系列第八章了解IP位址和端口。你可以閱讀我以前的文章
系統設計基礎知識(一) 網絡
系統設計基礎知識(二) 資料庫
系統設計的基礎知識(三)吞吐量和延遲
系統設計基礎知識(四)—系統可用性
系統設計基礎知識(五)—緩存
系統設計基礎知識(六)—緩存區
系統設計基礎知識(七)—代理
IP位址——系統在網絡中的位址
端口——系統内服務的位址
IP位址+端口=特定系統上特定服務的位址
協定套件
- IP 協定 (IP) —它是 TCP/IP 協定套件中的核心協定套件。它定義了用于實作無連接配接服務的網絡層資料包格式,包括主機之間的尋址和路由資料包。不同網絡技術的主要差別在于資料鍊路層和實體層,例如不同的區域網路技術和廣域網技術。網際協定可以在TCP/IP網絡層的網際協定下統一不同的網絡技術。Internet 協定使許多互連的計算機網絡能夠通過統一的 IP 資料包傳輸進行通信。還有其他協定。
- Internet 控制消息協定 (ICMP) — 它是一種無連接配接協定,是 TCP/IP 協定套件的子協定,用于在 IP 主機和路由器之間傳輸控制消息。控制消息是指網絡本身的消息,比如網絡是否可達,主機是否可達,路由是否可用。是以。這些控制消息不傳輸使用者資料,但對使用者資料的傳輸和網絡安全很重要。
- 位址解析協定(ARP) ——用于實作IP位址到MAC位址的映射,即查詢目标IP對應的MAC位址。
- 反向位址解析協定 (RARP) — 它允許 LAN 上的實體機從網關伺服器的 ARP 表或緩存中請求其 IP 位址。網絡管理者在 LAN 的網關路由器中建立一個表來映射實體位址 (MAC) 及其對應的 IP 位址。
- 路由資訊協定 (RIP) — 它是一種相對簡單的内部網關協定。在 RIP 網絡中,RIP 要求網絡中的每個路由器都維護從每個路由器到每個目的網絡的路由資訊。它采用距離向量算法,使用跳數作為度量來衡量到目标網絡的距離。距離是到達目标站點所需的連結數,範圍從0到16,值為16表示路徑無限長。從路由器到其直連網絡的跳數定義為1,從路由器到其非直連網絡的距離定義為每個路由器的距離(n+1)。
- 開放最短路徑優先 (OSPF) — 它是一種鍊路狀态路由協定和内部網關協定,用于在單個自治系統中進行路由決策。每個 OSPF 路由器使用最短路徑優先算法 (SPF) 計算不同的路由并建構路由表。該協定僅涉及網絡中鍊路或接口的狀态(IP 位址的上下波動、掩碼帶寬、使用率和延遲)。每個路由器與該區域中的其他路由器交換其鍊路狀态資訊。這樣,網絡上的每個路由器都會對網絡結構有相同的了解。然後,OSPF 不僅可以計算兩個網絡節點之間的最短路徑,還可以計算通信成本。
- 外部網關協定 (EGP) —它旨在在 Internet 上的外部路由器之間交換路由和可達性資訊。
- 使用者資料報協定 (UDP) — 它是一種無連接配接傳輸層協定,提供簡單的面向事務的不可靠通信服務。它是一種将應用程式發送的資料按原樣發送到網絡的機制。即使網絡擁塞,它也無法進行流量控制。傳輸過程中發生丢包,沒有重傳。
- 傳輸控制協定 (TCP) — 它是一種面向連接配接且可靠的流傳輸服務。流是不間斷的資料。當應用程式使用 TCP 發送消息時,它是按順序發送的,但接收方接收到的資料流是沒有間隔的。此外,TCP 通過為其傳輸的每個字段配置設定一個序列号來獲得可靠性。
在我們的日常生活中,我們用于通路 Internet 的電子裝置都有 IP 位址。IP位址分為IPV4和IPV6。在這裡,我們可以将 IPV4 位址稱為 IP 位址。
IPv4
- 它是 Internet 協定 (IP) 的第四個版本。它是 Internet 上基于标準的互聯互通方法的核心協定之一。
- 然而, 2011年網際網路号碼配置設定機構(IANA) 的IPv4位址池徹底枯竭,嚴重制約了網際網路的發展。
- 當網絡中的 2 台主機想要通信時,它們必須知道各自的 IP 位址。TCP/IP 協定使用 IP 位址來識别網絡中的不同主機。
- 它為 Internet 上的每個網絡和每個主機配置設定一個邏輯位址。IP 位址由一個 32 位二進制數組成。為了友善記憶,将IP位址分成32位十六進制數,每段8位,一共4段,然後将每段8位二進制數轉換為十進制數,中間的點是分開的。該表達式稱為點十進制表示法。事實上,它可以提供 4,294,967,296 (2³²) 個唯一位址,但大塊被保留用于特殊網絡用途。
IPv4 資料報格式
版本— 這 4 位指定資料報的 IP 協定版本
頭長——這 4 位決定了有效載荷在 IP 資料報中的實際開始位置
服務類型 — IPv4 報頭中包含 8 位,以允許區分不同類型的 IP 資料報
資料報長度— IP 資料報的總長度(報頭 + 資料),以位元組為機關
16-bit Identifier, Flags, 13-bit Fragmentation offset — 當一個大的 IP 資料報被分解成幾個較小的 IP 資料報時,這些資料報在被重新組裝時獨立地轉發到目的地,然後它們的有效載荷資料被傳遞到傳輸層的傳輸層。目标主機或 IPv6 不允許分段時
Time-to-Live(TTL) ——這個字段是為了確定資料報不會永遠循環
上層協定— 該字段的值訓示此 IP 資料報的資料部分應傳遞到的特定傳輸層協定,TCP=6,UDP=17。
标頭校驗和— 幫助路由器檢測接收到的 IP 資料報中的位錯誤
源 IP 位址和目标 IP 位址— 當源建立資料報時,它将其 IP 位址插入源 IP 位址字段,并将最終目标的位址插入目标 IP 位址字段。
選項— 選項字段允許擴充 IP 标頭
資料— IP 資料報的資料字段包含要傳送到目的地的傳輸層段(TCP 或 UDP)。
開銷—如果資料報攜帶 TCP 段,則 IP 資料報有 20 個位元組的報頭。
- 每個IP位址在内部分為兩部分,即網絡号和主機号。
- 網絡号(網絡位址) ——用于辨別大型 TCP/IP 網絡中的單個網段(即網絡的網絡)。
- 主機号(主機位址) ——用于識别每個網絡内的 TCP/IP 節點,例如工作站、伺服器、路由器或其他 TCP/IP 裝置。
- IP 位址中的網絡号和主機号共 32 位。
- 由于網絡規模的不同,有A、B、C、D、E 5種,隻有B和C比較常用。
- A、B、C 類位址稱為單點傳播位址,隻能配置設定給唯一的主機。
- E類位址是在IP位址設計之初為科學研究保留的。
- A 類 IP 位址— 它由一個 1 位元組的網絡位址和一個 3 位元組的主機位址組成。它主要是為大型網絡設計的。網絡位址的最高位必須為“0”,位址範圍為 1.0.0.0 到 127.0.0.0。有 127 個 A 類網絡可用,每個網絡可以容納 16,777,214 台主機,其中 127.0.0.1 是代表主機本身的特殊 IP 位址,用于在本地機器上進行測試。0代表任意位址,127是環回測試位址,是以A類IP位址的實際範圍是1-126。預設子網路遮罩為 255.0.0.0。
- B 類 IP 位址— 它由一個 2 位元組的網絡位址和一個 2 位元組的主機位址組成。網絡位址的最高位必須是“10”,位址範圍是128.0.0.0到191.255.255.255,其中128.0.0.0和191.255.0.0是保留IP,是以實際範圍是128.1.0.0-191.254。 0.0。共有 16,382 個網絡,每個網絡可容納 65,534 台主機。
- C類IP位址——由3位元組的網絡位址和1位元組的主機位址組成,網絡位址的最高位必須為“110”。位址範圍為 192.0.0.0 到 233.255.255.255,其中 192.0.0.0 和 223.255.255.0 為保留 IP,是以實際範圍為 192.0.1.0–223.255.254.0。共有 2,097,152 個網絡,每個網絡可容納 254 台主機。
- D 類 IP 位址— 用于多點傳播。D類IP位址的第一個位元組以“1110”開頭,這是一個專門保留的位址。它不指向特定的網絡,并且這種類型的位址目前用于多點傳播,通過識别在 224.0.0.0 到 239.255.255.255 之間共享相同協定的一組計算機,一次尋址一組計算機。
- E 類 IP 位址 —保留供将來使用。位址範圍為 240.0.0.0 到 255.255.255.254,其中 255.255.255.255 為廣播位址。
- 公共位址——IP位址由網絡資訊中心統一管理,配置設定給申請注冊的組織。
- 特殊 IP 位址:
- 廣播位址— 子網内的所有網絡接口都可以接收此廣播消息。有直播和限播之分。直接廣播是目标網絡的網絡位址和二進制全1的主機位址。有限廣播是網絡位址和主機位址都是二進制1的位址(即255.255.255.255)。
- 多點傳播位址— 用于視訊廣播系統。它的位址範圍是從 224.0.0.0 到 239.255.255.255(D 類 IP 位址)。224.0.0.1 指所有主機,224.0.0.2 指所有路由器。
- 環回位址——網絡位址為127的IP位址成為環回位址,主要用于本地環回測試和本地機器程序之間的通信。實際中經常使用的環回位址是127.0.0.1,也叫localhost。
- 私有位址——它是一個未注冊的位址,專門用于組織的内部網絡。
A 類 — 10.0.0.0 ~10.255.255.255
B 類 — 172.16.0.0 ~ 172.31.255.255
C 類 — 192.168.0.0 ~ 192.168.255.255
- 靜态 IP 位址是由網絡管理者永久配置設定給裝置的固定位址
- 動态 IP 位址是由動态主機配置協定 (DHCP)伺服器自動配置設定給裝置的臨時位址,并且經常更改。
- 在微軟電腦中,可以在網絡屬性中選擇“自動擷取IP位址”選項,設定裝置動态擷取IP位址(網絡位址、子網路遮罩、預設網關、DNS伺服器)。
- 每次裝置連接配接到網絡時,動态 IP 位址都會更改。當使用者在 Web 浏覽器上輸入 URL 時,DNS 伺服器會将域名映射到 IP 位址。例如,通過Modem、ISDN、ADSL、有線寬帶 上網的電腦,每次上網都臨時配置設定一次。動态 IP 位址将從位址池中提取,然後配置設定給使用者,并在幾天或幾周後傳回到位址池中。
子網
- 子網路遮罩— 一種“全為”位模式,用于屏蔽 IP 位址的網絡部分
- 對于 A 類 IP 位址,預設子網路遮罩為 255.0.0.0;
- 對于 B 類 IP 位址,預設子網路遮罩為 255.255.0.0;
- 對于 C 類 IP 位址,預設子網路遮罩為 255.255.255.0
- 使用子網路遮罩可以将大型網絡劃分為子網,即Variable Length Subnet Mask (VLSM),将小型網絡合并為大型網絡,即超網。
- 在設計IP位址時,考慮了IP位址配置設定的層次特征,将每個IP位址分為2部分,第一部分代表網絡,第二部分代表主機。比如IP位址172.16.254.1,是一個32位的位址,假設它的網絡部分是前24位(172.16.254),那麼主機部分是後8位(後1位)。同一子網中的計算機的 IP 位址必須具有相同的網絡部分,這意味着 172.16.254.2 應該與 172.16.254.1 在同一子網上。
- 但是,問題是我們不能僅從IP位址來判斷網絡部分。我們以 172.16.254.1 為例。它的網絡部分是前 24 位、前 16 位,還是前 28 位,你無法從 IP 位址中分辨出來。那麼,如何從IP位址判斷兩台電腦是否屬于同一個子網呢?這需要另一個參數“子網路遮罩”(subnet mask)。所謂“子網路遮罩”,就是表示子網特性的參數。相當于形式上的IP位址,也是一個32位的二進制數。它的網絡部分全為1,主機部分全為0。例如IP位址172.16.254.1,如果已知網絡部分是前24位,主機部分是後8位,則子網路遮罩為11111111.11111111.11111111。00000000, 這是十進制的 255.255.255.0。知道了“子網路遮罩”,我們就可以判斷任意兩個 IP 位址是否在同一個子網上。方法是分别對兩個IP位址和子網路遮罩進行AND運算(兩位數為1,運算結果為1,否則為0),然後比較結果是否相同。如果是這樣,則意味着它們在同一個子網中。在網絡中,否則,它不是。
- 比如已知IP位址172.16.254.1和172.16.254.233的子網路遮罩都是255.255.255.0,是不是在同一個子網?兩者和子網路遮罩分别進行AND運算,結果是172.16.254.0,是以它們在同一個子網中。綜上所述,IP協定有兩個主要功能。一種是為每台計算機配置設定一個動态IP位址,另一種是确定哪些位址在同一個子網上。
- 隻有通過子網路遮罩,才能表明主機所在子網與其他子網的關系,進而使網絡能夠正常工作。
- 子網劃分——将單個網絡劃分為多個實體網絡(子網)并使用路由器将它們連接配接起來以充分利用有限的IP位址資源的操作。
- 對于标準的A、B、C位址,主機号有2層網絡号結構。為了劃分子網,它的主機号可以分為兩部分,一部分用于子網号的編譯,剩下的部分用于主機号的編譯。這樣就形成了三層結構,即網絡号、子網号、主機号。
- 網絡号——指定主機所在的網絡
- 子網号 — 指定包含多個主機的子網
- 主機号 - 指定子網内的主機
- 但是,有子網或沒有子網的 IP 位址在外觀上沒有差別。那麼我們如何區分這2個位址呢?子網路遮罩與 IP 位址相同。子網路遮罩由 1 和 0 組成。子網路遮罩的長度也是 32 位。左邊是網絡位,用二進制數“1”表示,1的個數等于網絡位的長度;右邊是主機位,用二進制數“0”表示,0的個數等于主機位長度。主機号使用二進制數“0”的目的是在不改變原來網段号的情況下,掩碼和IP位址做按位與運算時,用0覆寫原來的主機号,便于确定号碼子網中主機的個數為 0 位。
- 主機号全為1時,代表網絡的廣播位址,全為0時,代表網絡的網絡号。
- 網絡字首長度——網絡号和子網号的位數代表子網路遮罩。例如,子網路遮罩為 255.255.0.0 的 B 類網絡位址 156.81.0.0 表示為 156.8.0.0/16。
對 IPv4 網絡進行子網劃分
- A、B 和 C 類網絡的預設子網路遮罩
https://www.tutorialspoint.com/ipv4/ipv4_subnetting.htm
IPv6
- IPv4使用32位位址長度,位址隻有43億個,估計很快就會枯竭。
- IPv6位址以十六進制表示,共128位,分8組表示,每組16位,每組代表4個十六進制數。這些組由冒号 (:) 分隔。
- IPv6 示例——2001 :0db8:85a3:0000:0000:8a2e:0370:7334
- IPv6 包含 IPv4 位址 — 最後 2 組 IPv6 由慣用的 IPv4 位址的十進制表示法表示。
IPv6 資料報格式
- Version ——4位,值為6(二進制值為0110),表示IPv6資料包
- 流量類别— 8 位,相當于 IPv4 協定中的服務類型 (ToS) 字段。
- 流标簽——24位,用于标記特定流的資料包,以便在網絡層區分不同的資料包。轉發路徑上的路由器可以根據流标簽對流進行區分和處理。由于IPv6封包頭中攜帶了流标簽,轉發路由器不需要根據封包的内容來識别不同的流,目的節點也可以根據流标簽來識别流。
- 有效負載長度— 16 位,有效負載的長度(以位元組為機關),或 IPv6 消息基本标頭的後續部分的長度。
- Next Header ——8位,用于辨別目前頭之後的下一個頭的類型。
- 躍點限制— 8 位,類似于 IPv4 中的生存時間 (TTL) 字段。
- Source Address — 128 位,消息的源位址
- Destination Address — 128 位,消息的目标位址
IPv6 IP 位址是 128 位的,由 64 位網絡位址和 64 位主機位址組成。64 位網絡位址進一步分為 48 位全局網絡辨別符和 16 位本地子網辨別符。
有關 IPv6 尋址的更多資訊,請參閱IP 版本 6 工作組 (IPv6)或IPv6。
IPv6 位址是 IPv4 位址的 4 倍。
IPv6 位址空間是 IPv4 位址空間的 1e28 倍。
IPv6的特點
- 擴充的路由和尋址能力——IPv6将IP位址從32位增加到128位,可以支援更大的位址空間,使IP位址在可預見的未來不會被用完。
- 報頭格式的簡化——IPv4報頭格式中的一些備援字段要麼被丢棄,要麼被列為擴充報頭,進而減少了資料包處理和報頭帶寬的開銷。IPv6 将其基本報頭長度固定為最多 40 個位元組,進而減少處理器開銷并節省網絡帶寬。
- 分層位址結構——IPv6根據不同的位址字首劃分IPv6的位址空間,采用分層位址結構,友善骨幹網路由器對資料包的快速轉發。IPv6 中定義了 3 種不同的位址類型。有單點傳播位址、多點傳播位址和任播位址。
- 對可選選項的更大支援——IPv6 選項不放在标頭中,而是放在單獨的擴充标頭中。
- 身份驗證和加密— IP 安全協定 (IPSec)是 IPv4 的可選擴充協定,也是 IPv6 的重要組成部分。其主要功能是在網絡層為資料包提供加密、鑒權等安全服務。IPSec 提供身份驗證和加密機制。認證機制是讓IP通信的資料接收方能夠确認資料發送方的真實身份以及資料在傳輸過程中是否被篡改。加密機制就是對資料進行加密,保證資料的機密性,防止資料在傳輸過程中被他人截獲。
- 支援無狀态自動位址配置——簡化位址配置過程。無需DNS伺服器即可完成位址配置,廣播位址字首可路由。每個主機根據自己的 MAC 位址和接收到的位址字首生成一個聚合的全球單點傳播位址。也友善某個區域的主機同時更改IP位址字首。
端口
- 端口包括實體端口和邏輯端口。
- 實體端口是用于連接配接實體裝置的接口
- 邏輯端口是邏輯上用于區分服務的端口。TCP/IP協定中的端口是邏輯端口,不同的服務通過不同的邏輯端口來區分。具有IP位址的主機可以提供許多服務,例如Web服務、FTP服務、SMTP服務等。
- 在實際通信中,端口号是按照一定的規定來配置設定的。端口的配置設定标準主要包括普通端口和動态端口。
- 多個應用程式可以同時在同一主機上運作。此時,端口号用于識别。端口号代表程式位址。傳輸層協定使用這些端口号來識别機器中正在通信的應用程式并準确地傳輸資料。
- 在 Internet 上通信時,必須知道其他 IP 位址。事實上,IP 位址已經附加到資料包中。将資料包發送到路由器後,路由器會根據IP位址找到對方路由器的位置,完成資料傳輸。MAC位址有獨立的IP,IP位址隻能位于區域網路中,不能位于特定的計算機上。
- 端口号有一個 IP 位址和一個 MAC 位址。一台計算機可以同時提供多種網絡服務,進而使計算機可以相應地接收資料包。
- 計算機将為每個網絡程式配置設定一個唯一的端口号。
- 普通端口——這些端口的端口号範圍從 0 到 1023,它們與某些特定服務緊密綁定。通常,這些端口的通信清楚地表明某些服務的協定。
- 注冊端口——這些端口的端口号範圍從 1025 到 49151。配置設定給使用者程序或應用程式。這些程序主要是使用者選擇安裝的一些應用程式,而不是配置設定了公共端口的常用程式。
- 動态/私有端口——這些端口的端口号範圍從 49152 到 65535。它們通常不是固定配置設定的服務,而是動态配置設定的。
- 49152到65535是動态配置設定的端口,供一些需要配置設定端口的程序使用,動态取自這裡。
如果你發現我的任何文章有幫助或有用,麻煩點贊或者轉發。 謝謝!