網際網路怎麼傳送資料?封包與路由器的運作
網際網路會把資料分成稱為「封包」的小塊來傳送。每個封包都寫著目的地的號碼(IP位址),途中稱為「路由器」的設備看了號碼,就一站一站轉送下去。封包抵達後,接收端會依正確順序重新排列,還原成原本的資料。
這篇文章可以了解
- 打開網頁時,背後依序發生了哪些事
- 封包、IP位址、路由器各自在做什麼
- 把通訊的工作分成4個「層」來思考的理由
- 經過好幾台設備卻還是很快的原因,以及等待時間從哪裡產生
先備知識:不需要。只要用手機看過網頁就夠了。
生活中的例子
用手機點一下新聞的連結,多半不到幾秒,頁面就會顯示出來。這些資料,是從遠方某台電腦送來的。像這樣依要求提供資料的電腦,稱為「伺服器」。
這篇文章會依序說明,打開1個網頁時背後發生的事。大致的流程如下。
- 從網站的名稱(例:www.example.com),查出伺服器的號碼
- 和伺服器之間,做好開始交換資料的準備
- 送出「請給我這個頁面」的請求
- 頁面的資料分成許多小塊送過來
- 在手機端重新組合,顯示在畫面上
資料要分成「封包」來傳送
在網際網路上,照片和網頁的文字,都是當作0和1的排列來傳送。大的資料,不會整塊直接傳送。而是切成小塊,一塊一塊地送。這些小塊稱為封包。
封包的開頭,會加上寫著目的地和來源號碼等資訊的部分。這稱為「標頭」。接收端以標頭為線索收集片段,再組合回原本的資料。
1個封包的大小有上限。家用的有線網路和Wi-Fi,通常最多1,500位元組(1位元組是8個0或1排在一起的量)。1 MB(100萬位元組)的照片,算起來大約會分成700個封包。
特地切開的理由,主要有2個。第1個是1條線路能由許多人共用。封包很小,就能把不同人的通訊一點一點輪流傳送。第2個是途中即使遺失一部分,也只要重送那個片段就好。
以前的市內電話,是相反的想法。通話期間,會整條占住通往對方的線路。即使沒有在說話,其他人也不能使用那條線路。把資料分開、共用線路的方式,是在1960年代想出來的,成為網際網路的基礎。
IP位址:封包目的地的號碼
封包的目的地,要寫上代表對方設備的號碼。這個號碼稱為IP位址。手機、電腦和伺服器,只要是連上網際網路的設備,都會分配到IP位址。
在廣泛使用的格式裡,IP位址寫成「192.0.2.10」這樣。這是用點隔開4個0~255的數字。用0和1表示是32位,所以能做出的號碼只有約43億個。這不夠全世界的設備使用,所以正逐步改用位數大幅增加的新格式(IPv6)。兩者的差異整理在「IPv4與IPv6的差異」的表格中。
用IP位址把封包送到對方的規則,稱為IP。IP專心把封包朝目的地送出去。確認有沒有送到,不是IP的工作。
路由器只選「下一站」來轉送
網際網路是由許多小網路連接起來的。有家裡的網路、公司的網路、電信業者的網路等。位在網路交界處、把封包交給隔壁網路的設備,稱為路由器。
路由器會從收到的封包標頭,讀出目的地的IP位址。再對照自己手上的表,決定交給隔壁哪一台路由器。這個表稱為路由表。路由表裡寫著「這個範圍的號碼,交給那邊的鄰居」這樣的對應。
重要的是,每台路由器都不知道通往對方的完整路線。它只知道「下一步該交給誰」。並不是在傳送前就先決定好整條路線。封包是從路由器到路由器,像接力傳水桶一樣送過去。
路由表會由路由器之間交換資訊,自動重新建立。某處線路故障時,路由表會改寫成避開那條路。送往同一個對象的封包,平常大多走幾乎相同的路。不過,通訊途中路徑也可能改變,之後封包仍會繼續送達。
把工作分成4個「層」來思考
到目前為止的說明裡,混著好幾種工作。把訊號送到隔壁設備的工作、尋找通往遠方對象路徑的工作、防止遺漏的工作等。網際網路把這些工作分成「層」,每一層訂出通訊的規則。這些規則稱為「協定」。
層一般用下面4個來說明(稱為TCP/IP的4層模型)。表中越上面的層越接近App,越下面的層越接近電波和纜線。
| 層 | 主要的協定 | 負責的工作 |
|---|---|---|
| 應用層 | HTTP、HTTPS、DNS | 瀏覽器和伺服器之間對話的內容 |
| 傳輸層 | TCP、UDP | 修正遺漏和順序錯亂(TCP) |
| 網際網路層 | IP | 跨越網路,送到對方 |
| 連結層 | Wi-Fi、乙太網路 | 用電波、電或光的訊號,送到隔壁的設備 |
最下面的連結層,只負責送到相連的隔壁設備。如果是手機的Wi-Fi,負責的範圍到家用路由器為止。再往前,則由乙太網路(有線網路的規格)或光纖線路,再送到下一台設備。
在最上層決定網頁交換方式的,是HTTP。它規定了「請給我這個頁面」「好,給你」這樣的對話形式。這段對話由下面的層依序接手,送到對方。
分成層之後,即使替換某一層,其他層也能照樣使用。例如,把Wi-Fi換成有線網路,也不必重做瀏覽器或IP。
準備證照考試時,也常會看到把同樣的想法分成7層整理的OSI參考模型。它只是分得比較細,「依工作分層」的想法是一樣的。大致來說,連結層(也稱為網路介面層)對應OSI的第1~2層,網際網路層對應第3層。傳輸層是第4層,應用層是第5~7層。
DNS:從名稱查出號碼
人是用「www.example.com」這樣的名稱來記網站。但是,封包的目的地能寫的是號碼(IP位址)。所以,要用把名稱轉成號碼的機制。這稱為DNS(網域名稱系統)。
瀏覽器會先問DNS伺服器:「這個名稱的號碼是多少?」拿到答案後,才能把封包送到網頁的伺服器。開頭流程的第1步就是這個。答案會記住一段時間,所以不是每次都重新詢問。
TCP與UDP:要確實,還是要輕快
IP的工作,只到把封包送出去為止。途中太擁擠的路由器可能丟掉封包,抵達的順序也可能對調。即使如此,網頁還是能完整顯示,靠的是TCP這個規則。
在TCP中,傳送端會替資料加上流水號。接收端會回覆「已收到這裡為止」。沒收到回覆的部分,傳送端會再送一次。接收端看號碼,把資料排回正確的順序。
另外,TCP在開始傳送資料前,會和對方簡短打個招呼做準備。開頭流程的第2步就是這個。這個招呼要花1次來回的時間。
另一方面,UDP不管理號碼、也不重送,封包送出去就不管了。步驟比較少,所以能縮短等待時間。它用在視訊通話和對戰遊戲這類「現在」的資料比晚到的資料更重要的用途。DNS的查詢,也主要使用UDP。
新的HTTP/3,在UDP之上再加上QUIC這個規則,由QUIC負責重送等工作。差異整理在「TCP與UDP的差異」和「HTTP/1.1、HTTP/2、HTTP/3的差異」的表格中。
家用路由器與號碼改寫(NAT)
家裡的Wi-Fi設備,多半是把Wi-Fi基地台和路由器合成1台。家裡的手機和電腦,會分配到只在家裡通用的號碼。常用的是以「192.168.」開頭的號碼。用這個號碼,網際網路另一端無法把回覆送回來。
所以,家用路由器會把送出去的封包的來源號碼,改寫成網際網路用的號碼。路由器會記下哪個通訊屬於哪台設備,再把回來的封包改回原本的號碼送達。這種改寫稱為NAT。這是讓只有約43億個的號碼,能由許多設備共用的方法。
HTTPS與鎖頭圖示
途中的設備,只要想讀,就讀得到封包的內容。所以,要先把資料轉成只有持有鑰匙的對方才能還原的形式,再傳送。這稱為「加密」。
把網頁的交換加密後傳送的方式,就是HTTPS。HTTPS也會確認通訊對象是不是真正的伺服器。
為此,伺服器會出示稱為「憑證」的電子身分證。憑證是受信任的發行機構,確認網站名稱的擁有者後所做的保證。瀏覽器會先確認這個保證,再開始通訊。
網址列的鎖頭圖示,一直用來表示已完成這種確認和加密。不過,鎖頭圖示並不代表「經營者值得信任的網站」。因為詐騙網站也能取得憑證。Chrome從2023年的117版起,為了避免這種誤解,把鎖頭圖示換成了別的圖示。
經過好幾台設備,為什麼還是很快
長距離的通訊,主要使用光纖。光纖是讓光通過像頭髮一樣細的玻璃線,來傳送訊號的纜線。光在裡面每秒約前進20萬km。大約是真空中光速(約30萬km)的3分之2。
換算成每1 km,大約是5微秒(1微秒是100萬分之1秒)。從送出資料到回覆回來的時間,稱為RTT。東京和大阪直線距離約400 km,所以RTT最短也要約4毫秒(1毫秒是1000分之1秒)。實際的纜線不是直線,所以路程更長。
東京和洛杉磯,沿地球表面的最短距離約8,800 km。用光纖來回一趟,光是距離就要約88毫秒。根據美國電信業者Verizon公布的數值,兩個城市據點之間的來回,2026年初的月平均約110毫秒。差距約20毫秒,來自纜線繞遠路,以及途中設備的處理和排隊等待。
路由器的處理,如果不擁擠,很短的時間就能完成。和遠方對象通訊時,等待時間大部分是訊號跑完距離的時間。跨海的通訊,大部分會經過鋪設在海底的光纖纜線。調查公司TeleGeography在2023年的驗證中指出,洲際資料有99%以上是如此。
常見的誤解
誤解:自己和伺服器之間,有1條專用的線連著
實際上,線路由許多人共用,自己的封包會和其他人的封包混在一起傳送。路線也不是事先決定好的。路由器隨時選擇下一個去向,途中路徑也可能改變。這個誤解,容易來自電話「線路接通」的印象。
誤解:Wi-Fi和網際網路是同一件事
實際上,Wi-Fi只是用電波連接手機和家用路由器(基地台)的機制。再往前,是用光纖等線路連到電信業者的網路。所以才會發生「Wi-Fi有連上,卻不能上網」的情況。
誤解:網路速度的數字越大,反應也越快
實際上,「1 Gbps」這類數字,是1秒能傳送的資料量(頻寬)。這和回覆回來的時間(RTT)是不同的東西。例如100 KB的小資料,100 Mbps約8毫秒、1 Gbps約0.8毫秒就能送完。但如果對方在美國,光是來回就要100毫秒以上。
所以,小量的交換即使把頻寬提高10倍,等待時間也不太會縮短。頻寬的差距最有效的,是下載大檔案(這裡省略TCP的細部運作,做了簡化)。可以用「資料傳輸時間計算工具」試算看看。
從數字來看
| 項目 | 數字 | 比較 |
|---|---|---|
| 1個封包的大小(有線網路、Wi-Fi) | 通常最大1,500位元組 | 1 MB的照片約700個 |
| IPv4的位址數量 | 約43億(2乘32次的數) | 比全世界人口少 |
| 光纖中的光速 | 約20萬km/秒 | 每1 km約5微秒 |
| 東京-大阪(直線約400 km)的來回 | 約4毫秒 | 只由距離決定的下限 |
| 東京-洛杉磯(最短約8,800 km)的來回 | 約88毫秒(下限) | 實測約110毫秒(Verizon,2026年初的月平均) |
| 洲際資料經過海底電纜的比例 | 99%以上 | TeleGeography的驗證(2023年) |
「下限」是以光纖中的速度,來回最短距離所需的時間。實際的來回時間,不會比這更短。
進一步學習
- 用表格看差異:集線器、交換器、路由器的差異(家裡和公司網路的設備)
- 用計算試試看:IP位址與子網路計算(把IP位址分成「網路部分」和「設備部分」的計算)
- 下一步的名詞:MAC位址、預設閘道、DHCP(家用網路的運作方式)
- 進一步認識HTTPS:憑證機構(發行憑證的機構)、TLS(HTTPS加密的規則)
- 自己看看路徑:traceroute(列出封包經過的路由器的指令)
- 從基礎讀起:伺服器和手機裡面,都是由CPU執行指令。「CPU是什麼?」