Ch01 Internetworking and Packet Forwarding
===
* OSI(Open Systems Interconnection)

* ISO (International Organization for Standardization) 提出的開放式系統互聯模型
* User Space
* Layer 7: Application
* Layer 6: Presentation
* Layer 5: Session
* Kernel
* Layer 4: Transport
* Layer 3: Network
* Underlying NWs
* Layer 2: Data Link
* Layer 1: Physical
* Decapsulation
1. Ethernet driver 接收封包
2. Ethernet Frame 的 frame type 決定 Network layer 的 protocol
* ARP
* IP
* RARP
3. IP datagram header 的 Protocol 決定 Transport layer 的 protocol
* ICMP
* IGMP
* TCP
* UDP
4. Transport layer 再根據不同 port 對應不同服務
* switch
* mac address
* 網卡 (Network Interface Card)
* 48 bits
* 由 IEEE 管理,廠商要跟它買 mac address,因為要保證 mac address 唯一
* 在區網可以用來傳送 frame 到其他 interface
* sending host
* 將資料封裝成 frame
* error checking bits, flow control 等等
* receiving host
* 確認封包的正確性
* 解析並把封包往上層傳
* self-learning
* 會自動、動態的建立 switch table
* 在 table entry 更新每筆傳送的 mac address, interface, TTL
* plug-and-play
* frame structure
1. preamble: 7 bytes,同步接收傳送方
2. dest address: 6 bytes,目的地 mac address
3. src address: 6 bytes,來源 mac address
4. type: 2 bytes,決定上層的 protocol
5. CRC: 4 bytes,接收方驗證資料正確性
* router
* 在 network layer 根據 IP 決定 forwarding
* subnet
* 同個 subnet 的 interface 可以不透過 router 溝通
* .0 結尾的 IP 是 network number
* .255 結尾的 IP 是 Broadcast IP
* CIDR(Classless Inter-Domain Routing): a.b.c.d/x
* longest prefix matching
* routing table entries
* Next-hop routing: routing table 只記錄下一個 hop 的位址
* network-specific routing: 只記錄目的地 network,而不是位址
* default routing
:::warning
Q: 不太懂這個在做什麼?
A:
1. 每台機器只會有一個 Default route,以家用設備來說就是 uplink 接的那台機器
[name=Sean]
:::
* Host-Specific Routing: 記錄 host address,只是比較沒效率
* ip datagram forwarding
* direct forwarding: 在同個 physical network 中時,可以直接將 frame 送往 destination host
* indirect forwarding: 在不同 physical network 中,只能將 frame 送往 next-hop router
* hop-by-hop data delivery
* 每到一個 router 都會把封包拆到 netork layer 然後裝回去後傳到下一個 router
* network layer 中的 ip 不變
* link layer 的 mac 每個 hop 都會變
* ARP(Address Resolution Protocol)
* 每個 ip node 都有 arp table
* 用來對應 ip 和 mac
* ethernet frame type = 0x0806
* plug-and-play
* 記錄 arp table entry 流程
1. A broadcast arp request
2. B 把自己的 mac address unicast 給 A
3. A 保存 ip 對應的 mac 到 ARP table
* DHCP(Dynamic Host Configuration Protocol)
* UDP
* server: port 67
* client: port 68
* 申請 ip address 流程
1. host: broadcast dhcp discover
2. dhcp server: dhcp offer
3. host: dhcp request
4. dhcp server: dhcp ack
* ICMP(Internet Control Message Protocol)
* network layer protocol
* 在 ip header 中的 protocol field = 1
* type
* 0: reply
* 3: unreachable
* 8: echo request
* 11: TTL expired
* traceroute 原理
1. 每經過一個 router 收到,TTL\-\-
2. 到達目的地 host 後,檢查正確性
3. demux datagram via port
如果 port 剛好沒被用到,會回傳 ICMP Port unreachable
:::warning
Q: 不確定這邊的 port 指的是什麼 port?
A:
1. UDP 的 port
[name=Sean]
:::