1.5 Internet structure and ISPs
- 階層式的結構
- at center: “tier-1” ISPs 第一階的網際網路提供者,通常是國家級的,涵蓋地域範圍比較大,彼此私下會互聯。
- NAP : 公共的交換中心
網網相連,它的周邊有 tier-2
- “Tier-2” ISPs: smaller (often regional) ISPs,會連上周邊的 “tier-1” ISPs。同樣地 tier-2 也會連結,目的是讓通訊可以有更多路徑選擇。
再下去是 “Tier-3”,更小的是 local。透過這樣一階一階下來,連成一個很大的網。
兩台 host 的溝通,事實上就是透過很多個 isp 互相轉接。所經過的路就是他們之間的連線。tier1 從紐約到西雅圖,就有很多路徑可選。所以怎麼選最好路徑 ?
1.6 Delay & loss in packet-switched networks
How do loss and delay occur?
router 本身會接很多 port,一個 port 經過網路線接到另一個 router。通常每一個 port 都會有 buffer (記憶體),也就是我們存封包的地方。如果輸出的速率小於輸入的速率,無法立刻消化,封包就會 queue,一般會 FIFO,比較聰明的 router 可以識別封包的類型,如果比較敏感像是 radio,可以讓你排前面一點、檔案就排後面一點。
到底有幾個 delay ?
- packet being transmitted (delay),封包排到最前面才開始要送,一開始送也要花時間,花的時間取決於傳送的速度、與封包大小 & 網速有關
- packets queueing (delay)
- free (available) buffers: arriving packets dropped (loss) if no free buffers。丟掉本身又有很多種丟法,最簡單是進來沒位置就丟、比較聰明的會在前面挑幾個丟
造成延遲的主要因素:
一、nodal processing - router 處理收到封包的處理時間。不管有線、無線都會受到干擾,傳送過程資料錯掉是收的人才能發現。所以收的人要做檢查。ex 傳送過程將送的資料做運算,得到一個值放在尾吧,你收到時我再做一次運算,比較是否一樣,如果不一樣就代表資料傳送有錯,我就把這個封包丟掉。一個 router 有很多個 port,我要決定我的封包要往哪裡去,通常是查表看 IP address (第三層)
當我知道他要從哪個 port 出去,就把它放到那個 queue 裡面去。
二、queueing - 在 queue 裡面排隊的時間,取決於 router 的擁擠程度
三、Transmission delay - 送一個封包所要花的時間 (長度/速度)
四、Propagation delay - 與網路長度、材質 (距離/速度)
R 是你可以用多快的速度把你的資料送到 LINK,送出去。送出去他可以多快送到對方手中,取決於你的介質。
EX - 封包走法的差異
把封包送到網路上和封包的訊號在傳輸線上跑的差異
整個封包都送完了,但最前頭都還沒有到對方,還在路上慢慢走
封包還沒完全送完,但他的第一個 bit (最前頭)已經到對方了
封包在一個 router 送出去的時候,未必是整個封包都送完慢慢走。有可能封包還未送完,他的第一個 bit 就到對方了。
Node Delay
網路上會經過很多節點,會經過很多 isp。每一台 router 都有這麼多延遲。
(一段 Node Delay)
收到封包 & 處理封包 => queue 排隊 => 傳送完 => 送到對方
Queueing delay L 乘上 a over R
封包長度 * 封包到達速率 / R = bit 總量送完所需要花的時間
封包來的數量越多,就會有排隊現象出現。
(排隊理論)
- = 1 表示進來數量差不多等於出去數量
1 進來數量大於出去速度,代表沒辦法消化。沒辦法消化 queue 就急速長,但因為 queue 有限所以會開始掉封包
Real Internet delays and routes
經過每個 router 會送三個 probes (探測)。我丟一個封包給第一個 router,對方的 router 會回一個封包回來,一問一答的動作,然後我會量時間,每個都問三次
Packet loss
loss 本身是 buffer。
Protocol “Layers”
有無方式可以讓網路在不斷發展下,比較有組織、比較好管理 ? 答案是分層
切成 layer 就有上下關係。每一個 layer 都是用下層所提供的服務,可能加點、加值,變成給上一層的服務。層與層之間都有 interface。
網路簡單分五層:從底層往上看
- physical 表示真的傳輸的線,像是光纖、銅線、無線電(wireless)
- link layer 表示你利用傳輸的線,把資料從一個節點送到另一個節點 (直接相連的兩點間的傳送),ex - Ethernet
- network 表從 source 送到 destination 的傳送 (清大到美國中間會經過數十個路由,兩個路由之間就是一個 link,路徑的好壞是隨時會變化),ip 在這一層
- transport 表 application 對 application 的傳送
優點:
- 如果有更好的服務,可以把其中某一段抽掉。只要介面訂得清楚,這就是分層的威力
router 本身分三層
clinet / server 都是 edge 末端
ex -
FTP application 把封包 (data) 丟給 transport layer,transport layer 就要想辦法送到目的地的 transport layer 再將他送上去
TCP 要求資料量、內容、順序都要對。所以他是如何做到的 ?
- 對方收到封包,要做回覆。若沒有回覆,就當作封包掉了,再重送。用了兩個重要的東西 (1) 計時器 (2) 重送
有無收到分兩種
- 資料完全掉了
- 資料收到,但錯掉了
所以在送資料前會先做 CHECK SUM,也就是把我要送的資料做一個運算,將算好的數字放在封包的尾吧然後一起送過去,對方收到將 data 做相同的計算,將與帶在尾吧的 test sum 檢查碼做比較。若相同,則回 act,若不同就將封包丟掉。
為了跟對方對等的程式溝通,要做加工。這會導致封包變大。這就是打包。一個資料往下送,每一層之間為了能夠溝通,會做加工,導致封包越來越大。
一路往下送,封包會變大,因為每層都要加上溝通的訊息 (包裝 Encapsulation),往上送封包就變瘦(拆裝 Decapsulation)。
router 是 layer3 表示處理這個封包要看到第三層的資訊(IP)。switch 是 layer2 看網卡的位置。每個網卡上面都帶一個 ip address。
transport 會加一些欄位,目的是給 destination 的 transport 看。丟給 network,他的 H 隱含 soure IP & destination IP。同一層的層次,看同一層的 Header 各看各地。當 network 將他的東西丟給 link,link 又加上自己的 Header。
link 丟出去的會加原始的網卡地址 & 收這個封包的網卡位置。網卡是 48 bit,ip 是 32 bit。
不同層傳輸資料單位名稱
- segmemt 是 transport layer 之間所送的 unit (4 層)
- datagram 是 network layer 送的資料,上面帶有兩個 IP 位置 (3 層)
- frame 是 link layer 之間所送的 unit (2 層)
只要上一層交給你的,都是你的 data,然後你再加上自己的 header,有些還會再加上尾吧。一般 transport & network layer 是加頭 + link layer 是加頭加尾。
這兩個 frame 有何差異 ?
經過 switch 出來之後,soure & destination 的網卡地址要換,每經過一個 link 他的地址就會換掉。但 ip 是有唯一性,傳輸過程不會換掉。
network layer 看目的地 ip 決定走向,選擇哪一個 port。
physical layer 沒有變大,他只是把它們變成一個 bit stirng。