Skip to content

Networking, Part 1: Introduction

kuang0708 edited this page Sep 25, 2021 · 1 revision

警告:很明顯,頁面不是 IP、UDP 或 TCP 的完整描述!相反,它是一個簡短的介紹,足以讓我們在以後的講座中建立這些概念。

什麼是“IP4”“IP6”?

以下是對互聯網協議(IP)的“30秒”介紹——IP是將信息包(“數據報”)從一台機器發送到另一台機器的主要方式。

“IP4”,或者更準確地說,“IPv4”是互聯網協議的第 4 版,它描述瞭如何通過網絡從一台機器向另一台機器發送信息包。現在互聯網上大約95%的數據包都是 IPv4 數據包。 IPv4 的一個重要限制是源地址和目的地址都限制在 32位元(IPv4 在設計的時候,40 億個設備連接到同一個網絡是不可想像的——或者至少不值得增加數據包的大小)

每個 IPv4 數據包包括一個非常小的報頭——通常是 20 字節(更準確地說,“八進制”),它包括源地址和目的地址。

從概念上講,源地址和目的地址可以分為兩部分:網絡號(上位)和下位表示該網絡上的特定主機號。

一個較新的包協議“IPv6”解決了IPv4的許多限制(例如使路由表更簡單和128位地址),然而只有不到5%的網絡流量是基於 IPv6 的。

一台機器可以有一個 IPv6 地址和一個 IPv4 地址。

沒有像 127.0.0.1" 這樣的地方!

一個特殊的 IPv4 地址是127.0.0.1,也稱為 localhost。發送到 127.0.0.1 的數據包永遠不會離開機器;地址被指定為同一台機器。

注意,32 位元地址被分割成 4 個字節,即點表示法中的每個數字可以是 0-255(包括0-255)。但是 IPv4 地址也可以寫成整數。

......和......“沒有像 0:0:0:0:0:0:0:1 這樣的地方嗎?”

IPv6 中 128bit 的 localhost 地址為0:0:0:0:0:0:0:1,可以縮寫為::1

什麼是端口?

要使用 IPv4 (或IPv6)向Internet上的主機發送數據報(包),需要指定主機地址和端口。端口是一個無符號的 16 位數字(即最大端口號是 65535)。

進程可以偵聽特定端口上傳入的包。但是,只有具有超級用戶(root)訪問權限的進程才能偵聽端口 < 1024。任何進程都可以監控 1024 或更高的端口。

一個常用的端口是 80 端口:80 端口用於未加密的 http 請求(即網頁)。例如,如果一個web瀏覽器連接到http://www.bbc.com/,那麼它將連接到端口 80。

什麼是 UDP?什麼時候使用?

UDP 是建立在 IPv4 和 IPv6 之上的無連接協議。它使用起來非常簡單:決定目的地地址和端口,然後發送數據包!然而,網絡並不保證數據包是否會到達。如果網絡擁塞,數據包(即數據報)可能會被丟棄。數據包可能被複製或者到達順序混亂。

在兩個遙遠的數據中心之間,通常會看到3%的包丟失。

UDP 的一個典型用例是,當接收最新的數據比接收所有數據更重要時。例如,遊戲可能會不斷更新玩家的位置。流視頻信號可以使用 UDP 發送圖片更新

什麼是 TCP?什麼時候使用?

TCP 是建立在 IPv4 和 IPv6 之上的基於連接的協議(因此可以描述為“TCP/IP”或“TCP over IP”)。 TCP 在兩台機器之間創建了一條管道,並抽像出了 Internet 的低級包特性:因此,在大多數情況下,從一台機器發送的字節最終將到達另一端,不會出現重複或數據丟失。

TCP 將自動管理重發的數據包,忽略重複的數據包,重新排列無序的數據包,並改變數據包發送的速率。

TCP 的三向握手被稱為SYN、SYN-ACK和 ACK。該頁面的圖表有助於理解 TCP 握手。 TCP握手

今天 Internet 上的大多數服務(例如 web 服務)使用 TCP,因為它隱藏了 Internet 較低的包級性質的複雜性。

Clone this wiki locally