網路相關知識整理(施工中)

這篇應該滿零散的(?)
參考資料: 1 2

History of the Internet

Link

OSI model

  • IETF:開發和推廣自願網際網路標準 (RFC) → 很多都是不認真訂出來的

實體層

  • Example: Network Interface 網路卡

IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ ip a
$ ifconfig # deprecated
# 網卡命名:https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
#
# 2: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
# link/ether 18:1d:ea:a0:b8:7e brd ff:ff:ff:ff:ff:ff
# inet 192.168.43.229/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp2s0
# valid_lft 5562sec preferred_lft 5562sec
# inet6 2001:b400:e2ac:729f:41d3:52b4:994a:935/64 scope global temporary dynamic
# valid_lft 3247sec preferred_lft 3247sec
# inet6 2001:b400:e2ac:729f:605d:53b0:3103:29ef/64 scope global dynamic mngtmpaddr noprefixroute
# valid_lft 3247sec preferred_lft 3247sec
# inet6 fe80::87d2:cf4b:b71c:523a/64 scope link noprefixroute
# valid_lft forever preferred_lft forever
#
# inet 即是 Private IP 位置
# What does “inet” stand for in the ip utility?: https://unix.stackexchange.com/questions/545462/what-does-inet-stand-for-in-the-ip-utility

Route

http://www.tsnien.idv.tw/Manager_WebBook/chap7/7-1%20IP%20Routing%20%E7%B0%A1%E4%BB%8B.html
一般採用 Dynamic Routing 技術

1
2
3
4
5
6
7
8
9
10
$ route
# Kernel IP routing table
# Destination Gateway Genmask Flags Metric Ref Use Iface
# default _gateway 0.0.0.0 UG 600 0 0 wlp2s0
# link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wlp2s0
# 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
# 192.168.43.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0

$ mtr # or traceroute
# 封包傳遞路徑

arp: http://www.tsnien.idv.tw/Manager_WebBook/chap4/4-2%20ARP%20%E5%8D%94%E5%AE%9A%E8%88%87%E5%88%86%E6%9E%90.html
gateway
netmask

TCP/UDP

port

每個 IP 的開放通道
如何看現在有開的 Port

  • 通常要連去的 port 是固定的,發起連線的 port 通常是亂數
  • <1024 是給定的 (System Port),102449151 是 User Port,4915265535 是 Dynamic Port
1
2
$ cat /etc/services # 看一系列對應 port
$ netstat -lntu # 現在有開的 port

TCP: nc -lvp [port] / nc -v [hostname/ip] [port]
UDP: nc -lvup [port] / nc -vu [hostname/ip] [port]

  • l: 開 port; v: verbose; u: UDP (預設為 TCP); p: 開指定 port
  • Note: 可能要 -n (Do not do any DNS or service lookups on any specified addresses, hostnames or ports.)

TCP: 三次握手 (Three way handshake)

WireShark

ip.addr == 213.248.110.126:過濾封包方法

待補:抓手機網路包

DNS

1
2
ping codeforces.com #送封包
dig www.codeforces.com #看背後的 IP

只能知道哪台主機來的

DHCP

nc 開網頁

1
2
3
nc
curl #相當於 nc 送 http
python3 -m http.server #自己開 http server

cookie & session

https://medium.com/tsungs-blog/day14-session%E8%88%87cookie%E5%B7%AE%E5%88%A5-eb7b4035a382

更多參考資料

待整理區

jq