---
# System prepended metadata

title: 網路通訊協定期末考前抱佛腳共筆

---

# 網路通訊協定期末考前抱佛腳共筆

![wuch](https://www.csie.nuk.edu.tw/elfinder/files/teacherProfile/wuch2.jpg =250x275)
> 想抱佛腳阿 [name=wuch]

![](https://i.imgur.com/tyMqauH.png =250x)
> 全部當掉 [name=wuch]

![](https://i.imgur.com/Cmzjas8.png =250x)
> 明年見 [name=wuch]

![](https://i.imgur.com/n0mKAtL.png =250x)
> 我就爛 [name=全班]

## 留言
> 就等這一刻 [name=Kai-Lun Huang]
> 安安 [name=ifTNT]
> 要錯就一起錯啦幹 [name=Kai-Lun Huang]
> 詠翔上線拉 [name=di_weird]
> yooooo [name=Valorlo]
> 這個筆記好有愛 [name=Valorlo]
> 道爾吞X子說：「我噎到了」 [name=dick]
> 乾到時候會不會大家寫的答案都一樣 [name=RsiWater]
> 一樣方便原進改考卷 [name=KTony]
> 收割仔啦 [name=Arapn]
> 收割仔二號來了 [name=yee]
> 各位我先退ㄌ 這場考試考完我就回老家投票 [name=RsiWater]

[TOC]

## Terms

1. IAB(Internet Architecture Board) : 決定網際網路技術方向&決定技術何時成為標準
2. IANA(Internet Assigned Numbers Authority): 指派網際網路位址之機構
3. NDP : IPv6用來取代原先IPv4 ARP的方法，鄰居發現協定 address autoconfiguration、duplicate address detection、router discovery，NDP包括五種messages:RS, RA, NS, NA, Redirect
4. IETF: 負責開發與推廣網路標準之組織
5. IRTF: 注重在網路長期問題 focused on long term problems in Internet
6. ICANN: 分配domain與網路位址的機構
7. RFC : IETF發布的一系列備忘錄，Internet drafts
8. anycast : 可根據router拓撲決定送到最近或最好的目的地
9. broadcast: one-to-all，同一個broadcast domain的人都收的到
10. multicast:　one-to-any，group裡面的人都會收的到
    - IPv4: IGMP (Internet Group Management Protocol)
    - IPv6: MLD (Multicast Listener Discovery)
11. unicast: 一對一傳輸，現今網路最多的傳輸
12. CIDR(Classless Inter-Domain Routing): 無類別域間路由，用來分類Internet上的IP位址
13. Hub: 集線器，用來傳輸封包至所有連接至集線器的網路(Layer 1裝置)
14. Switch: 交換器，和Hub相同，但會記錄接受方的MAC address和port以至於增加流量效率(Layer 2裝置)
15. Router: 路由器，透過Routing和Forwarding決定封包走向，可用來隔離網路
16. Pseudo-header: 不包含在header裡但是算checksum的時候會一起計算的header，ICMP UDP TCP

## 切子網問題
- IPv4 Classful addressing

| class | Start network ID | End network ID | Length of network ID |
|-|-|-|-|
|Class A|1.0.0.0|127?.0.0.0|8|
|Class B|128.1.0.0|191.255.0.0|16|
|Class C|192.0.1.0|223.255.255.0|24|
|Class D(Multicast)|224.0.0.0|224.0.0.0|4|
|Class E(不重要)|![](https://vignette.wikia.nocookie.net/evchk/images/e/ec/2471912.jpg/revision/latest/top-crop/width/360/height/450?cb=20171012125530 =250x)|![](https://vignette.wikia.nocookie.net/meme-battles/images/c/c5/Ricardo_Milos_transparent.png/revision/latest/scale-to-width-down/340?cb=20190824140733 =250x)|![](https://truth.bahamut.com.tw/s01/201911/d9070fa2ada92aefcee3530e05fdd486.JPG =250x)|
    
- IPv4 CIDR
    - /多少 就是有多少個bit是network ID, 剩下的是 host ID
    - Longest-prefix matching: Router轉送的時候優先match遮罩長度最長的CIDR，可以用 binary trie 達成
    
- IPv6(都是CIDR)
    - Node-local: ::1, 就是127.0.0.1
    - Link-local: fe80::/10, 用在同一個link內
    - Global unicast: 2000::/3, 類似IPv4 public IP，全球爲一
    - /64:
        - ![](https://i.imgur.com/y58Nl2U.png)
        - Interface ID 從 MAC address 以 EUI-64 填充之後得到
        - EUI-64: MAC address拆一半，中間塞0xFFFE
    - Zone-index:
        - 因爲link-local開頭都是fe08，router會矇逼不知道往哪個interface送
        - 所以有多個interface的時候後面會%zone-index
        - Windows: %數字
        - Unix-like: %interface的名字 

> 上課舉例
判斷所屬網路
![](https://i.imgur.com/PsqgObN.png)
合併
![](https://i.imgur.com/qvMr9pj.png)
分割
![](https://i.imgur.com/VoQTqrj.png)
>*分割區段二的 $(63)_2$ = 0011 1111 才對
>

#### 小工具
https://www.calculator.net/ip-subnet-calculator.html



[跨家](https://www.jannet.hk/zh-Hant/post/IP-Address-Version-4-IPv4/)
## ARP(Data Link layer)
- Insecure :
> it's a stateless protocol
> 可以不用request就送ARP reply

- Attack : 
    1. 可以對一台主機一直送假的ARP reply
    2. 送假的ARP request/reply
    3. 用假的資訊更新ARP cache table

- Proxy ARP:
    - 可以讓多個子網共用一個network ID
    - Router代替另一個子網的host回應ARP request



## ICMP
- Required part of IP
- 通常用於返回的錯誤資訊給orginal source或是分析路由
- 只報告錯誤不會修正錯誤
![](https://i.imgur.com/95NT2ok.png =500x )
- 沒有類似TCP/UDP的port number，所以所有送出ICMP_echo_request的proccess都能收到ICMP_echo_reply

## MTU
- 最大傳輸單元Maximum Transmission Unit，縮寫MTU
- IPv6的MTU通常為1500
- IPv6內建Path MTU Discovery，可在封包送出之前就先切割好封包，並附上封包編號header
- IPv4遇到MTU問題時會在Router才做分割
![](https://i.imgur.com/rusBnW7.png =200x)

## Ethernet frame
![](https://i.imgur.com/DTWaRb9.png)
- Minmum lenght of payload: 46 bytes
- Maximum lenght of payload: 1500 bytes
- Frame type:
    - 0x0800: IP
    - 0x0806: ARP
- Preamble, CRC
    * CRC放最後面的原因是放前面也不能算，那就收完資料再一起算
    * Preamble是用於同步乙太網路與host 之 clock cycle
    * Preamble和CRC會被網卡加入/拿掉，cpu不用處理

## IPv4 vs. IPv6

||IPv4|IPv6|
|:-:|:-:|:-:|
|長度|32-bits|128-bits|
|位址種類|unicast, multicast, boardcast|unicast, multicast, anycast|
|Mapping|用ARP map MAC位址|用NDP map MAC位址|
|Checksum|有|沒有|
|特有|HLEN, Fragmentation Support|FlowLabel|
|異名同構體(同素異形體)|ServiceType|TrafficClass|
|異名同構體(同位素?)|TTL|HopLimit|
|異名同構體(同分異構物)|Protocol|NextHeader|

### TCP
1. Congestion control
2. Flow control
3. Reliablility transmission


### UDP
1. Best-effort transmission
2. Connectionless

## DNS


![](https://i.imgur.com/WZhb0YC.png =300x)

### Security
* DDoS
* DNS Flood
* DNS Amplification Attack

## 考古題
### 2019
![1](https://i.imgur.com/RQeg1dT.png)
- 看上面
![2](https://i.imgur.com/F7dFfwc.png)
![2a](https://i.imgur.com/AxjLroi.png)
- destination MAC: ff:ff:ff:ff:ff:ff(這是因為廣播地址是這個)
- source MAC: MAC~E~
- Sender IP: IP~E~
- Sender MAC: MAC~E~
- Target IP: IP~D~
- Target MAC: 0:0:0:0:0:0(這是因為不知道 所以空著)

![2b](https://i.imgur.com/9WVZWhv.png)

- destination MAC: MAC~E~
- source MAC: MAC~P4~
- Sender IP: IP~C~
- Sender MAC: MAC~P4~
- Target IP: IP~E~
- Target MAC: MAC~E~

![2c](https://i.imgur.com/bQtBTI2.png)
- Src MAC: MAC~R2~
- Dst MAC: MAC~C~
- Src IP: IP~A~
- Dst IP: IP~C~

![2d](https://i.imgur.com/MeSD0hS.png)
- Src MAC: MAC~R2N~
- Dst MAC: MAC~R1N~
- Src IP: IP~C~
- Dst IP: IP~A~

![2e](https://i.imgur.com/npfaM8r.png)
- Src MAC: MAC~P3~
- Dst MAC: MAC~C~
- Src IP: IP~E~
- Dst IP: IP~C~


![2f](https://i.imgur.com/z8XFbTd.png)
- C
    - Src MAC: MAC~R2~
    - Dst MAC: MAC~C~
    - Src IP: **IP~R1N~**
    - Dst IP: IP~C~
- D
    - Src MAC: MAC~R2N~
    - Dst MAC: MAC~R1N~
    - Src IP: IP~C~
    - Dst IP: **IP~R1N~**

![3](https://i.imgur.com/HvZBeH6.png)
- a. 30.0.0.6
- b. 30.0.0.6
- c. deliver directly
- d. deliver directly

![4a](https://i.imgur.com/CNqT6NZ.png =600x)

 ![](https://i.imgur.com/2gMw7BJ.png)

 
![4b](https://i.imgur.com/fMJ4LNP.png =600x)
* Loopback -> ::1
* Link-Local -> fe80::/10
* Global -> cooooooooooooooool

![](https://i.imgur.com/IkQgfFl.png =500x)


![5](https://i.imgur.com/zPJTNqO.png)
>(窩不是很確定) 最一開始沒有任何人執行ICMP echo reply的函式，因此最一開始無法藉由echo request得到任何回應


![6](https://i.imgur.com/GVprp2z.png =600x)
>可以隨便送別人尋找Router的ARP Reply，讓其他人以為你是Router，造成別人無法正常連上網路

![7](https://i.imgur.com/4Zu7Tiw.png =600x)
![](https://i.imgur.com/llVCOQB.png)
* Attack : 
    - DNS hijacking
        - 將使用者導向不存在的頁面

### 疑難雜症
- 105   2.(b)
![](https://i.imgur.com/kop3WCW.png)
> 第二題 140.127.208.0/23 
> > 所以140.127.209.0/24是跟140.127.208.0/24 merge成140.127.208.0/23的嗎
> > 是ㄅ
> > 瞭 :100: 


- ![](https://i.imgur.com/khnYnN0.png)
> ( a )
> - ARP: 以廣播發出ARP request，同一個broadcast domain下的host收到之後如果是自己就回傳ARP response
> - ICMP:  
> ![](https://i.imgur.com/IvTK8p8.png)
>
> ( b ) 不行，ARP request無法跨boradcast domain
> ( c ) 可以，destination mac address填FF:FF:FF:FF:FF:FF就好

- ![](https://i.imgur.com/oABvQ95.png)
>(a) 255.255.255.255, FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
>(a) 127.0.0.1, ::1
>(b) IPv4 not fixed , IPv6 64+64







