什麼是路由(Routing)?
當資料要從一個網路傳到另一個網路時(例如從你家的私有網路傳到 Internet 上的某台伺服器),中間需要經過好幾個「轉運站」,每個轉運站都要決定:「這份資料接下來該往哪裡送?」——這個決策過程就是路由。
路由表(Routing Table)
每台負責轉送封包的設備(路由器)內部都有一份路由表,大致記錄著:「要送到某個網段的資料,該往哪個方向(介面 / 下一個節點)送出去」。當沒有更精確的規則符合時,就會交給預設路由(Default Route)處理——也就是前面提到的預設閘道。
可以把路由表想像成路標:每個路口的路標只告訴你「往這個方向走,可以到達某個區域」,不需要知道目的地完整的路線細節,一站一站接力下去,最終就能抵達目的地。
封包傳輸的過程(簡化版)
- 你的電腦要連線到某個網站,先查詢該網域對應的 IP(DNS)
- 發現目的 IP 不在自己所在的網段,於是把封包送給預設閘道(路由器)
- 路由器查詢自己的路由表,決定下一步往哪裡送
- 封包經過數個路由器「跳(hop)」之後,抵達目的網路
- 目的網路裡的路由器把封包送到實際的目的主機
Hop 與 TTL
封包每經過一個路由器,就算一個 hop(跳)。每個封包都有一個 TTL(Time To Live) 數值,每經過一個 hop 就會減 1,當 TTL 變成 0 時,封包會被丟棄——這個機制可以避免封包因為路由設定錯誤而在網路中無限循環。
用 traceroute 觀察路徑
traceroute(Windows 上是 tracert)可以顯示封包從你的電腦到目的地,途中經過了哪些路由器:
traceroute example.com
每一行通常代表一個 hop,可以看到沿途各節點的 IP 與延遲時間,是診斷「連線變慢在哪一段」的實用工具。
小結
路由的核心概念其實很單純:每個路由器只需要知道『往哪個方向送,大致能更接近目的地』,不需要知道完整地圖。眾多路由器一站接一站地轉送,就構成了我們所熟悉的、四通八達的網際網路。