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

> 想抱佛腳阿 [name=wuch]

> 全部當掉 [name=wuch]

> 明年見 [name=wuch]

> 我就爛 [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(不重要)||||
- 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:
- 
- 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的名字
> 上課舉例
判斷所屬網路

合併

分割

>*分割區段二的 $(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或是分析路由
- 只報告錯誤不會修正錯誤

- 沒有類似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才做分割

## Ethernet frame

- 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

### Security
* DDoS
* DNS Flood
* DNS Amplification Attack
## 考古題
### 2019

- 看上面


- 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(這是因為不知道 所以空著)

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

- Src MAC: MAC~R2~
- Dst MAC: MAC~C~
- Src IP: IP~A~
- Dst IP: IP~C~

- Src MAC: MAC~R2N~
- Dst MAC: MAC~R1N~
- Src IP: IP~C~
- Dst IP: IP~A~

- Src MAC: MAC~P3~
- Dst MAC: MAC~C~
- Src IP: IP~E~
- Dst IP: IP~C~

- 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~**

- a. 30.0.0.6
- b. 30.0.0.6
- c. deliver directly
- d. deliver directly



* Loopback -> ::1
* Link-Local -> fe80::/10
* Global -> cooooooooooooooool


>(窩不是很確定) 最一開始沒有任何人執行ICMP echo reply的函式,因此最一開始無法藉由echo request得到任何回應

>可以隨便送別人尋找Router的ARP Reply,讓其他人以為你是Router,造成別人無法正常連上網路


* Attack :
- DNS hijacking
- 將使用者導向不存在的頁面
### 疑難雜症
- 105 2.(b)

> 第二題 140.127.208.0/23
> > 所以140.127.209.0/24是跟140.127.208.0/24 merge成140.127.208.0/23的嗎
> > 是ㄅ
> > 瞭 :100:
- 
> ( a )
> - ARP: 以廣播發出ARP request,同一個broadcast domain下的host收到之後如果是自己就回傳ARP response
> - ICMP:
> 
>
> ( b ) 不行,ARP request無法跨boradcast domain
> ( c ) 可以,destination mac address填FF:FF:FF:FF:FF:FF就好
- 
>(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