文章目錄
- 客戶端/服務端,URI與URL的區別,以及TCP/IP核心機制全解析
- 一、客戶端/服務端通信模型概述
- 二、URI 與 URL 的概念與區別
- 1. URL(統一資源定位符)
- 2. URI(統一資源標識符)
- 3. URI 與 URL 的關系
- 三、SYN-Flood 攻擊詳解
- 防護措施:
- 四、為什么客戶端關閉后要等待 2MSL?
- 五、TCP 保活機制
- 六、數字證書詳解
- 1. 定義
- 2. 頒發過程
- 3. 證書內容(基于 X.509 標準)
- 七、GET 與 POST 的區別詳解
客戶端/服務端,URI與URL的區別,以及TCP/IP核心機制全解析
一、客戶端/服務端通信模型概述
在網絡通信中,**客戶端(Client)**發起請求,**服務端(Server)**接收請求并響應。服務端一般會監聽某個端口,等待連接請求。一旦建立連接,客戶端發送請求,服務端返回結果。
例如:
瀏覽器(客戶端)請求訪問www.baidu.com
,服務器接收到請求后將網頁數據返回給瀏覽器展示。
當服務端監聽端口,但還未有客戶端連接時,若采用阻塞IO模型,進程處于阻塞狀態;若使用epoll
或select
等IO多路復用機制,則處于運行狀態,等待事件觸發。
二、URI 與 URL 的概念與區別
1. URL(統一資源定位符)
URL 是我們訪問網頁時輸入的“地址”,例如:
https://www.google.com
URL 的完整結構如下:
協議類型://登錄信息@服務器地址:端口號/路徑?查詢字符串#片段標識符
示例:
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch
2. URI(統一資源標識符)
URI 是對資源的唯一標識,可以是一個 URL,也可以是 URN(統一資源名稱),例如:
https://www.google.com 是一個 URI
urn:isbn:0451450523 也是一個 URI
3. URI 與 URL 的關系
- URI 是一個抽象的概念,URL 是 URI 的一個子集;
- URL 表示“資源的位置”,URI 可以是“名稱、位置或兩者兼有”。
總結:所有 URL 都是 URI,但不是所有 URI 都是 URL。
三、SYN-Flood 攻擊詳解
SYN-Flood 是一種利用 TCP 協議漏洞的拒絕服務攻擊(DDoS),原理如下:
- 攻擊者向服務端發送大量偽造 IP 的 SYN 報文;
- 服務端響應 SYN+ACK,但真實 IP 不會回應;
- 服務端等待 ACK,長時間占用資源,合法連接無法建立;
防護措施:
- 連接監視釋放:定期清除無效連接,不停的監視系統中半開連接和不活動連接,當達到一定閾值時拆除這些連接,釋放系統資源。這種絕對公平的方法往往也會將正常的連接的請求也會被釋放掉,”傷敵一千,自損八百“。
- 延緩 TCB 分配:使用 Syn Cache / Syn Cookie 技術來延遲資源分配;Syn Cache技術,這種技術在收到SYN時不急著去分配TCB,而是先回應一個ACK報文,并在一個專用的HASH表中(Cache)中保存這種半開連接,直到收到正確的ACK報文再去分配TCB。Syn Cookie技術,Syn Cookie技術則完全不使用任何存儲資源,它使用一種特殊的算法生成Sequence Number,這種算法考慮到了對方的IP、端口、己方IP、端口的固定信息,以及對方無法知道而己方比較固定的一些信息,如MSS、時間等,在收到對方 的ACK報文后,重新計算一遍,看其是否與對方回應報文中的(Sequence Number-1)相同,從而決定是否分配TCB資源。
- SYN Proxy 防火墻:攔截并驗證請求,過濾偽造連接。
四、為什么客戶端關閉后要等待 2MSL?
MSL(Maximum Segment Lifetime)是 TCP 報文段在網絡中的最大壽命。
客戶端等待 2MSL 的目的:
- 保證 ACK 報文能被服務器收到;
- 清除失效的連接報文,防止后續連接誤處理舊報文。
保證客戶端發送的最后一個ACK報文能夠到達服務器,因為這個ACK報文可能丟失,站在服務器的角度看來,我已經發送了FIN+ACK報文請求斷開了,客戶端還沒有給我回應,應該是我發送的請求斷開報文它沒有收到,于是服務器又會重新發送一次,而客戶端就能在這個2MSL時間段內收到這個重傳的報文,接著給出回應報文,并且會重啟2MSL計時器。
注意: 關閉連接過程比建立連接多一步,是因為 ACK 和 FIN 分開發送。
五、TCP 保活機制
為了避免資源被長時間占用,TCP 引入保活機制:
- 默認 2 小時內無數據收發,則發送探測報文;
- 若連續 10 次探測無響應,判定連接失效,主動斷開。
六、數字證書詳解
1. 定義
數字證書是由**認證中心(CA)**簽發的,綁定用戶身份與其公鑰的電子文件,提供身份驗證和加密通信。
2. 頒發過程
用戶生成密鑰對 → 提交公鑰與身份信息給認證中心 → CA驗證 → 認證中心簽發證書 → 用戶使用該證書進行通信。
3. 證書內容(基于 X.509 標準)
- 證書版本
- 序列號
- 簽名算法
- 頒發者名稱
- 有效期
- 持有者名稱
- 公鑰
- CA簽名
七、GET 與 POST 的區別詳解
項目 | GET | POST |
---|---|---|
參數位置 | URL 中 | 請求體中 |
長度限制 | 有限制 | 無限制 |
安全性 | 暴露參數,較差 | 參數不暴露,較好 |
編碼方式 | 僅支持 URL 編碼 | 支持多種編碼方式 |
是否緩存 | 瀏覽器可緩存 | 不緩存 |
歷史記錄 | 參數可見 | 不可見 |
TCP連接 | 一次 | 兩次(先建再傳) |
本質上 GET 和 POST 都是 TCP 協議,但在 HTTP 語義上區別明顯。