動機

那就來寫寫看說明文吧

第一個問題也是最重要的問題是

為什麼分那麼多層?

接下去就是要說明這件事

假設

基本上網路就是模擬人的溝通

為了解釋需要大家的小小角色扮演

新人

我們什麼都不知道,都要去問人


再來在任何一個情境下都有一個共通的任務

把手上的食物(其他東西也可以啦)給Jane(其實是誰都Ok)


假設Jane在任何情境下都存在

情境:都在同一個房間大家都在做自己的事

在什麼都沒有與什麼都不知道的情況下

我們要先找人,但要怎麼找?

喊聲 => Jane在不在

之後就會有人舉手,我們再過去給他食物,補充血糖


這與電腦關聯在哪?

如果說另一台電腦網路線也接在同一台機器下(家中的接網路的機器的後面那一排網路孔),只要廣播(broadcast)就會有人回答(reply)

在同一台機器下就是Layer2,最常見的protocol是ethernet

情境:大家都在做自己的事,但在不同房間

同樣什麼都不知道,但對方在不同房間 要怎麼知道Jane在哪?

問人

問誰?

可能知道的人,像班導、主管、人源最好的人

這樣我們就會知道Jane在哪個房間,就可以去那個房間 用剛剛提過的喊聲來找人,在把東西交出去


這與電腦關聯在哪?

當要溝通的電腦不在同一台機器上,就要去問某個人看有沒有可能得到答案

現在電腦在不一樣的機器下,所以要去問人了

這個人就是default gateway 因為房間與人名寫在一起,所以要有個分界,就叫subnet mask

在不一樣的機器下就是Layer3,最常見的protocol是IP

剛剛為了好想像,都是自己送東西過去 但實際上電腦都是把東西丟出去,交給可以轉送的人 而這樣就要在東西上寫下目的地與收件人,資料+轉送需要的資訊就是封包

中場休息: 整個大概的流程是?

如果在同一台機器下就喊聲 如果不在同一台機器下就問人 (有注意到嗎? 問人也是要找同一房間的人,所以要先喊聲,再去問)

這很好理解,但

  1. 如果不同房間都有Jane的話….
  2. 每次都要喊聲嗎? 是沒有筆可以記下來嗎?
  3. 要問的人是麼決定的? 要麼判斷是不是同一個房間?

第一個問題的回答

所以知道Jane這個名字是不夠的,要知道他在哪一個房間 所以有了新的識別方式,部門加名字,這就是IP IP分成網域與主機地址,都在IP address中

這樣我們還要用Jane來識別嗎? 不是用部門+Jane來看就好?

Jane是給同個房間的人看的 部門+Jane是給來自不同房間的人看的

而且如果在房間內Jane是用綽號(像吃貨)稱呼但對外的名字還是可以用Jane阿

所以會分層,會有Layer2的地址(MAC address)與Layer3(IP address)的地址

第二個問題的回答

為什麼要喊聲? 因為我們不確定人在哪,他們沒有固定的位置

要固定大家的位置,就是L2 switch 藉由背後的那些孔來對應到MAC address

第三個問題的回答

所以自己要先知道這些資訊

而這些資訊就叫routing table

那怎麼會有L3 router(通常就叫router)

因為他知道不同的房間要怎麼走,他會有很多洞,分別到不同的房間

所以通常router就是default gateway

總結: 整個送的過程

從送的人開始

  1. 包ip: 目標的ip
  2. 包mac: default gateway或是同房間的mac
  3. 丟出去

switch

  1. 看mac決定要往那個孔丟

router

  1. 看mac: 確定是要我收的
  2. 看ip比對routing table決定要往那個孔丟

目的地

  1. 看mac: 確定是要我收的
  2. 看ip: 確定是要我收的
  3. 收下

TCP在哪?

把東西送到對方那邊是Layer2與Layer3的工作, 管理資料有沒有完整的送到就是TCP的其中一個工作

TCP會要求對方收到封包時回送一個 說明我有收到的封包 確保對方有收到

TCP還有另外兩個功能

  1. 確保不要打爆對方 (你送太多了,我收不完) (Flow control)
  2. 確保不要打爆整個網路 (都給你送就好了啊) (Congestion control)

TCP的三個功能又被稱為是 連線導向

TCP為什麼要三段握手? 為什麼是3

要送資料前要先確保對方活著, 不論是server或是client都一樣要確認對方活著

所以

  1. client先送 <= client要確認server活著
  2. server回 <= client知道server活著
  3. server送 <= server要確認client活著
  4. client回 <= server知道client活著

等等,這是4段阿!!

仔細看,2與3 是不是都是server到client 把他們和在一起就是3段了

TCP要關時為什麼是4段?

重點是對面要先斷,client才能關

所以

  1. client先送
  2. server回 <= server開始準備關
  3. server送 <= 通知client要關了
  4. client回 <= 可以完全關掉了

等等,為什麼不能把2與3合起來? server要把tcp的資源釋放掉,所以要等不能馬上關

UDP又是什麼

就是什麼保證或是管理都沒有,就是送就對了