review
---
data link layer負責hop的transmission quality
network layer負責路由定址 end-to-end找一條路出來
transport layer負責end-to-end的transmission quaity
1. packet lost
2. out of data
3. duplicate
網路用的3個位址: MAC addr(physical addr),ip addr(logic addr),port num(區分不同application)
transport layer有分 server/client端
http 80
https 443
ssh 22
ip protocol:路由、定址
ipv4 x.x.x.x(0~255之間) 32bit
ipv6 128bit
ipv6也可以稱為ipng(next generation)
ipv6特色:128bit,安全性(ipv4的安全性是補丁patch上去的),ipv6的長度是固定的效能更好(不會一下快一下慢)
位置分配: 網路位元+主機位元->階層式
ip addr分類
class c: 2^8-2 太少
class b: 2^16-2 太多
用classless的方式解決了位置浪費的問題
私有ip
a class: 10.0.0.0/8/8
b class: 172.16.0.0/16 (172.16.x.x ~ 172.31.x.x)
c class: 192.168.0.0/24
255.255.255.255 broadcast addr
NAT(network address translation)
私有網路連到internet需要進行ip轉換


現在的nat技術全文是 NAPT(network address port translation)轉換ip的同時一起轉換port number,還會紀錄port number
* 這種轉換技術也稱 source Nat
destination nat也稱port-forwarding

將192.168.1.1應射到1.2.3.4:80
目的是private server想架server讓外部網路連上私有ip
ping sop:
1. ping 127.0.0.1 正常來講是可以ping的,不行代表TCP/IP protocol有問題
2. ping自己ip 不行代表網路卡壞了
3. ping default router/gateway 從內定router轉送封包到外部,不能ping檢查網路線
4. ping 8.8.8.8
5. ping www.google.com 如果4可以5不行,代表dns壞了
DHCP
---
DHCP(dynamic host conguration protocol)
動態主機設定協定
D discover
O offer
R request
A ack
dhcp在設定時一定要提供:ip,default router,dns,mask


PC client確認要哪個dhcp用哪個dhcp,送出request 廣播封包讓所有dhcp server 知道用哪個dhcp
但dhcp有隱患,dhcp通常是選最快回應的,可能hacker在附近架一個dhcp server, client連上這個dhcp, hacker就可以來監聽
讓多個client連上一台dhcp,用router去幫dhcp的忙,不用一個網路一個dhcp

DNS
---
DNS(domain name system)用UDP傳輸協定 53port
www -> ip 為正向解析
ip -> www 為反向解析
透過ip轉domain name可以了解user的國家,進行統計
nslookup 可以將www的網址轉ip
用nslookup可能會給多個ipv4 addr,為了負載均衡,讓user不會集中在同一台server,這是以前的做法
現在可能給的ip就是一台負載均衡的ip,連上之後再轉到其他ip
用nslookup可能會有未經授權的回答,是因為在client端的區域網路內有人已經查過該網域ip,有快取記錄,所i以不會再經由存取網路ip的dns讀取

dns步驟
1. 先到catch看有沒有暫存記錄
2. 到window裡的host查ip跟domain name的對應
3. 都沒有,再到dns要,並存在catch
fully qualified domain name(FQDN):網域名最後面要加上一點 ex. www.google.com.
FQDN最多有5個層級,每一級最少2字最多63字元,總長度不能超過253字元
FQDN分為3部分
1. host name
2. domain name 網域名
3. 「.」 根網域

top level domain以國家、組織為主
DNS由ICNN負責ip、DNS的管理分配,但會經由國家地區個別設立管理 ex.台灣 TWNIC

Dynamic DNS:用於傳統撥接網路ip不固定,想要架server...需要DDNS
ip是floating的可以到ddns公司註冊domain name,要進行連線就用這告domain name當ip變更時,更新一份新的ip到ddns上就可以實時更新floating ip
IP protocol-ipv4
---

ipv4可以切割和重組,ipv6不行
ipv6會找MTU
ip的header通常是20bytes,如果有option項大於20bytes,不可能小於20bytes,而且是4的倍數,因為有padding來補齊
ver:第幾版 ex.ipv4:4
IHL:ip header length 正常值是5
TOS or DS:根據不同標籤給於不同處理,但這欄幾乎沒用,現在的路由基本採取FIFO、Droptail的設計,所以這邊是0
FIFO: schedule排程 first in first out會有starvation的問題
Round robin:一個round的schedule way不會有starvation的問題
Droptail:buffer,management buffer滿了就丟最後面的封包,也有dropfront的方式可能跟即時性有關
TOS:precedence優先權,共8種 111最高~000最小
D delay 重要設為1,但路由器不支持
T throughput 吞吐量,重要設為1
R reality 可靠線路,選哲可靠路線
C cost 選擇成本
DS: differentiated service
DSCP
ECN: explioit congestion notificiation
網際網路是 best effort service想要提供QOS(quality of service)
IS:傳送前先跟會經過的路由保留要傳送的大小,傳送時整路通暢無阻,缺點是負擔大,所以演變為DS以劃分等級權重的方式區分
total length:ip header+ip payload的長度,最長65535(2^16-1)還是會超過
identifer: 同個切割封包有相同id
flag: 1是否切割封包 2是否有下一個片段封包
fragment offset: 得知切割玩的封包的偏移位置
ipv6把identifer、flag、fragment offset刪除了
不允許在傳輸途中切割,只能在傳送端切
ipv6在傳輸前會了解傳輸路徑最大的MTU(maximum transmission unit)得知路徑最大傳輸封包單位,這樣子效率提高,路由器不用處理切割封包
TTL:(time to live)在ipv6改名成hop count在傳輸途中最多幾跳,防止長期佔用網路問題
protocol: tcp 6,udp 17,icmp 1, ipv6 41,ESP安全性封包,ipv4的安全性由補丁補上去, AH確認 51
header checksum: 保護標頭內容
source ip addr
destination ip addr
OPT:選擇項
source route 選擇指定下一跳是什麼
Route record 紀錄路徑
Time stamp 記錄時間
security label 安全性
PAD:補丁 把32bit補齊
source addr+Des addr + Type(0800 ip,0806 ARP)
不同的網路MTU不同 ip 1500byte, ethernet 1500byte
MSS maximum segmentsize(payload), MSS = 1460byte
ethernet frame size 64~1518
對使用者來講最重要的是payload,payload越小transmission效率越差
原則上網路環境情況好,payload越大越好,但payload越好風險越大
網路品質好,可用較大的MTU,品質差用較小的MTU,提高成功率
IP protocol-ipv6
---
傳輸分為 unicast,multicast,anycast
broadcast被併為multicast
ipv6也稱ipng,ipv5只存在於實驗室
ipv6有更好的安全性,效能,沒有選擇項,路由器只會讀取存儲大小不會切割
提供QOS
unicast 1-to-1
multicast 1-to-many
anycast 1-to-any
broadcast用multicast取代,廣播在網路中有loop的情況下,會產生 broadcast storm把封包不斷的copy轉送
Anycast傳到附近,但不能事source端,通常用來找路徑
2000(16bit or 2byte):8C6E:00A1:0000:0000:0000:09E3 共128bit
->2000:8C6E:A1:0:0:0:9E3
-->2000:8C6E:A1: :9E3
0用冒號表示,只能用一次,才能識別
ipv6的網址要加上[]才能連接
ipv6 addr format

prefix:指定一個網路範圍, 001(2開頭)可活於internet上
subnet id: 更加區分網路範圍 /8 以mask的方式顯示子網路format
IID:介面識別碼 可以從48bit擴展成64bit
ipv6特殊位置
0:0:0:0:0:0:0:0 -> 任意位置
0:0:0:0:0:0:0:1 -> 迴路位置
使ipv4能與ipv6 node相互通訊
ipv4 compatible address在ipv4後加上96bit的0
ipv4遷移到ipv6
遷移過程有ipv4跟ipv6的轉換 ex.tunning ipv6裝上ipv4的header穿透ipv4

建立一個ssh的tunnel到雲端,就可以穿越firewall
外面是一個ssh的封包,內部是真正的封包
ipv6的主標頭兔定8個+延伸標頭 40bytes

ver: 0110
QOS:
Traffic class:服務的類型,來提供對應的type,如同於ipv4的TOS/DS
Flow label:20bit
Payload length:ipv6得標頭固定40bit,不用加上去,只考慮後面長度
Next header: 表protocol
Hop limit: 表TTL
source ipv6 addr
destination ipv6 addr
ipv6延伸標頭:處理ipv4的選擇項
50安全性加密header
51 authentication header
ICMP(internet control message protocol):當hop limit=0丟棄了,透過icmp告訴source addr封包丟了
Transport layer protocol
---
負責點對點的連線品質
TCP provide realiable service,connection-oriented解決packet lost、duplicated packet、out of order
UDP provide fast service,connectionless-oriented
Port number最大65534,對於client的port number是隨機不固定的,server是固定的
HTTP 80
HTTPS 443
FTP 21
SSH 22有加密
telnet 23 無加密
dns 53
TCP connection setup: three way handshake

TCP connection teardown: half-close

Port number: 16bit由ICMA的IANA 1024以下為公認的port number,49152~65535式client端 dynamic port number
FTP在剛開始只用21 port(控制),在傳輸資料用port 20 -out of band
SSH用的是 in band
UDP protocol:封包可能遺失,error,採用快速傳送,用於多媒體

沒接收到ACK而重送,因為影像、音樂有即時性,重送的封包早已沒幫助

檢查後再加上pseudo header實際上不存在,+source ip addr+Dst ip addr+ protocol + UDP以16byte為單位
TCP protocol高可靠度的data transmission,比 UDP header複雜
sequence number:送出之前,把資料加上編號 1.避免out of order 2.解決packet lost

sliding window:流量控制使用,不超出網路流量
最基本的流量控制方法: stop-and-wait

送出就停止等ACK,太保守
之後採取送多個data,回傳一個ACK (Sliding window)

seq num最早已封包數為單位,現在是已位元數為單位

ACK:與seqNum一起運作,回傳SeqNum+1,希望對方傳SeqNum+1,表示SeqNum+1以前皆已接收

傳送發生錯誤 1,傳送時遺失 2.回傳ACK遺失
用delay ACK:傳segment不會馬上回傳ACK,而是過一段時間才一次傳
Sliding window protocol: segment裡面有Window的欄位

透過access link不會有802.11Q的header

FLAG:
F: finish
S: syn
R: reset 兩端如果發生問題,中斷連線,然後重新建立連線
P: push 收到push,馬上把buffer的data送到application layer
A: ACK
ex.
C: congestion window reduced 把傳輸速度降低,並通知
E: ECN echo 通知網路已壅塞(explicit congestion notification)
U: urgent 有緊急data,設為1會立即處理
TCP的checksum是一定要做的,原來的資料+payload去算
發送TCP segment前,計算出checksum值,接收方也會計算checksum,結果一樣保留,不一樣丟棄
TCP本身沒有位址的訊息,可能造成錯誤,所以提供Pseudo-header虛擬標頭(僅提供checksum計算使用,不實際傳送)
ARP,RARP,ICMP
---
0806 ARP header
ARP(address resolution protocol)知道對方位置,但不知道對方MAC addr,用ARP拿對方ip去對MAC addr
1. 先廣播問Dst ip addr的MAC add是多少 (ARP request)
layer2 broadcast: FF-FF-FF-FF-FF-FF
2. Dst回覆MAC addr (ARP reply)
unicast
RARP(reversed address resolution protocol) 拿自己MAC add去接自己ip
ICMP:屬於layer3需在前加上ip header 查詢or錯誤回報

依附在ip
Gratuitous ARP:在沒有ARP request的情況下發送ARP request,但有心人可能借由此設計擾亂LAN上的機台ip跟MAC的table
讓Router錯將要給PC1的資料包通過錯誤的MAC地址發給PC2,而PC1要發給Router的資料包也通過錯誤的MAC地址發給了PC2。所以PC2也就利用Gratuitous ARP成為了PC1與Router之間的 Man-in-the-Middle。

window的option項: abc...uvwabc...hi
linux的option項: !!...012....


routing protocol
---
static routing 手動設定manual setting方式,不需維護成本
dynamic routing 維護成本高,假如線路斷了,會在找一條
1. 距離向量法(distance vector) 訊息交換的方式
2. 連線狀態法(link stat) 了解網路架構的方式
3. 混合(hybrid) 兩種混合
4.
RIP: v1,v2...,ipv6
OSPF: ipv4,ipv6
routing table: 用目的端ip跟network mask進行&運算,最後把符合最多1的為結果
ex. metwork mask 0.0.0.0 default router 192.168.10.254,如果沒有其他符合的就用default router
distance vector:不是單純已距離作為考量
* Propagation delay, bandwidth, loading, reliability, hop count, Tic count, cost通常是越低越好
hop count->RIP指考慮距離,現在只用於小型網路,中大型可能用link state protocol
在window查routing table: ``print route``
在linux查routing table: ``route -n`` or ``ip route show``
distance vector(RIP),link state(OSPF),hybrid(EIGRP)
EIGRP <- CISCO proprietary 由CISCO提供的標準,只能用CISCO設備
1.distance vector:週期性的與相鄰router交換route information,路徑隨時更新,佔用較多的bandwith
2.link state:透過broadcast了解網路的topology,除了路徑更新,維護成本低
3.Hybrid:結合上述兩著優點
distance vector

link state透過flooding 傳旁邊有哪些網路

hybrid: (distance)建立目的最佳路徑的路徑表,(link)路徑狀況改變時才更新
routing問題
迴圈問題

B不知E掛了,以為會有替代路徑
會一直loop,distance一直加1
solution:
1. 定義hop limit
2. split line分離界線
3. timer
4. tragger
autonomous system
---
每個網路都有自治system編號
在自治system內部的網路用相同的通訊protocol :Interior routing protocol
在自治system外部的網路用routing protocol :Exterior routing protocol

security
---
對稱式encryption、decryption實作簡單,維護難,每有一個對象要有一把key
非對稱式:實作難
IDS:事後檢討
IPS:被攻擊時
都透過監督式學習
* 資安的目標:機密性、完整性、不可否認性
防火牆:
封包過濾式(packet filter) L3/L4
應用閘道器(application gateway) L7又稱Proxy
明文: 加密前的text
密文: 加密後的text
對稱式加密系統->祕密金鑰系統
非稱式加密系統->公開金鑰系統

secret key處理速度快
public key速度較慢
兩者可以混合
1. 一開始用pub_key建立secret tunnel,不是用來en/decryption,而是交換priv_key
2. sec_key來en/decryption
secret key n個使用者需$C^n_2$
演算法:DES,FEAL,IDEA,SKIP JACK

public key: n個使用者需2n個key
演算法:RSA,DSA,SHA

同樣的架構,變為電子簽章 密文變為你的簽章,密文還看得懂
Hash function:
演算法:MD4,MD5,SHA

authentication:達到傳輸的不可否認性
MFA(multi factor authentication)
1. key system
2. digital signature
3. digital certificate
key system:

(a)確保傳輸的隱密性,但不知道是誰傳的
任何人都可以有B的公鑰
(b)無隱密性,但知道是誰的

digital signature:使用hash+public key
把原本的data用hash->128byte 再用pri_key去加密

digital certificate確認網站的reclity like網路身分證
certification authority:需公正認證機構

virus 附加在檔案程式中
worm 自我複製的程式碼,不需附加在其他檔案中