---
# System prepended metadata

title: 網管上課

---

# 網管上課

## 0. FileSystem / 路徑表示法

### 0.1 相對路徑
- `./hi.txt`

### 0.2 絕對路徑
- `/home/snmg/hi.txt`

## 1. Port / TCP / UDP

### 1.1 Port

- 16 bit number
- communication endpoint
- MUX
- 1~1024 System port

### 1.2 TCP / UDP

- OSI L4

#### 1.2.1 TCP

- 可靠

- Three-way Handshake

- 使用序號

- 報文段排序

- 重複性檢測

- 校驗與錯誤檢測

- 丟包 / 延時控制

- 擁塞控制

- 遺失重傳

#### 1.2.2 UDP

- Connectionless

- 無錯誤檢查 / 糾正

- 容錯應該在應用程式層實作

- 適用於有延時需求的應用 (遊戲、VoIP)

- DNS、DHCP、NTP

- OpenVPN

## 2. HTTP / Web

- 80 Port

### 2.1 HTTP Verbs

- GET

- POST

- PUT

- PATCH

- DELETE

- HEAD

- OPTIONS

#### 2.1.1 GET

- 一般請求

- application/x-www-form-urlencoded

- 安全、Cache

#### 2.1.2 POST

- 上傳資料 / 安全性需求

- multipart/form-data

- 非安全、不可 Cache

### 2.2 HTTP Status Code

- 1XX: 訊息，伺服器繼續處理
    - 101 Switching Protocols

- 2XX: Success

    - 200 OK

    - 206 Partial Content

- 3XX Redirect
    - 301 Moved Permanently
    - 302 Found
        - 只允許 GET / HEAD 的 Redirect
        - 後續會改用 GET / HEAD
    
    - 303 See Other
        - POST -> GET

    - 307 Temporary Redirect
    - 308 Permanent Redirect
        - 不允許更改請求方法

- 4XX Client-side Error

    - 400 Bad Request

    - 401 Unauthorized
        - Authorization Header

    - 403 Forbidden
        - Authorization Header does not help fixing this error

    - 404 Not Found
        - 伺服器不願揭示錯誤時

    - 405 Method Not Allowed

    - 408 Request Timeout

    - 413 Request Entity Too Large

    - 418 I'm a teapot

        - Hyper Text Coffee Pot Control Protocol, HTCPCP

        - BREW / POST

        - The resulting entity body MAY be short and stout.

    - 426 Upgrade Required
        - TLS / WebSocket

    - 429 Too Many Requests

### 2.3 HTTPS

- TLS

- 443 Port

- Everything is encrypted

- SNI

## 3. Linux 指令 / SSH

### 3.1 基本檔案操作指令

- ls

- cp

- mv

- rm

- nano

- chmod

### 3.2 SSH

- Port 22

- 會被亂踹


## 4. DNS / IP / Domain

### 4.1 Domain

- [blah].tld

### 4.2 DNS

- Domain -> IP

- Port 53 (not encrypted)

#### 4.2.1 DNS Records

- A

- AAAA

- CNAME
    - 不能有其他記錄

- DNAME (CNAME for domain)
    - Subdomain 也會一起映射

- ANAME
    - 等同 A 記錄
    - 速度比 CNAME 快

- MX

- TXT