项目作者: QueenieCplusplus

项目描述 :
Deep Packet Inspection
高级语言:
项目地址: git://github.com/QueenieCplusplus/CDN_DPI.git
创建时间: 2020-10-04T04:46:33Z
项目社区:https://github.com/QueenieCplusplus/CDN_DPI

开源协议:

下载


CDN_DPI

Deep Packet Inspection

DPI, Deep Packet Inspection

深度封包檢測技術
一種以應用層為基礎的網路流量控管技術,可以對經過的封包進行重建,進而改變原有流量模型。在封包的分析上,比傳統的路由器、交換機、防火牆來的更加深入,不僅僅只是檢查標頭檔和中繼續資料。

除了 Header 和 Metadata,尚能改變其 HTTP 方法中攜帶的 URL、Timestamp 欄位。此技術可以改變使用者造訪請求資料中的 URL 和 主機位址,將源網站的存取請求 redirect 指向 CDN。

視訊請求示意圖

  1. 源網址 119.147.157.135 video.google.com/
  2. \
  3. \
  4. \
  5. (Cache Max Age Expires)
  6. \
  7. \
  8. \
  9. DPI --(3)--+--- (4) CDN Node f.google.com/
  10. | /
  11. | /
  12. (2) /
  13. | /
  14. | /
  15. User <-----(1)-----> DNS 解析源網址網域的 IP 位址
  16. DPI 監聽到 http 請求有某特定 MP4 檔案檔案,並且將擷取來的封包資訊發送給 CDN 體系。
  17. CDN 節點在快取中確定是否存在該檔案,如果使用者第一次發出此類檔案之請求,則 CDN 並未快取過該檔案,
  18. 並將未快取的結果回傳 DPIDPI 方才通知源網站。

視訊存取流程

(1) 使用者開啟網頁網址,取得網頁內容。

Http Request

  1. +-----------------+-----------------------------------------+
  2. | Accept | text/html, application/xhtml+xml, */* | 可接受的格式
  3. +-----------------+-----------------------------------------+
  4. | Ref | http://video.google.com/id_123.html?f=0 | 發出請求的載體參考位址
  5. +-----------------+-----------------------------------------+
  6. | Accept-Encoding | gzip, deflate | 編碼格式
  7. +-----------------+-----------------------------------------+
  8. | Host | video.google.com/ | 提供服務的伺服器名稱
  9. +-----------------+-----------------------------------------+
  10. | Cookie | vsuid=1234567890123 |
  11. +-----------------+-----------------------------------------+

(2) google 網頁 embeded 的 flash 播放器 向 f.google.com 發出 http 請求,
取得視訊內容的真實 URL 位址。

  1. +-----------------+-----------------------------------------+
  2. | Accept | */* | 可接受的格式
  3. +-----------------+-----------------------------------------+
  4. | Ref | http://static.google.com/v1/player.swf | 發出請求的載體參考位址
  5. +-----------------+-----------------------------------------+
  6. | Accept-Encoding | gzip, deflate | 編碼格式
  7. +-----------------+-----------------------------------------+
  8. | Host | f.google.com/ | 提供服務的伺服器名稱
  9. +-----------------+-----------------------------------------+
  10. | Cookie | vsuid=1234567890123 |
  11. +-----------------+-----------------------------------------+
  12. | Connection | Keep-Alive | 連線狀態:保持連線
  13. +-----------------+-----------------------------------------+

(3) 從 f.google.com/ 回應內容可以看到視訊內容的真實 URL 及其 MP4 檔案。

  1. +-----------------+-----------------------------------------+
  2. | Expires | -1 |
  3. +-----------------+-----------------------------------------+
  4. | Cache-Control | max-age = 0 | 快取控制
  5. +-----------------+-----------------------------------------+
  6. | Location | http://119.147.157.135/....... | 視訊內容的真實 URL 及其 MP4 檔案編碼格式
  7. +-----------------+-----------------------------------------+
  8. | Date | Sun, 4th Sep 2020 14.00.00 GMT | 時間戳記
  9. +-----------------+-----------------------------------------+
  10. | Connection | close | 連線狀態:關閉
  11. +-----------------+-----------------------------------------+
  12. | Server | F_012345 |
  13. +-----------------+-----------------------------------------+

(4) 播放器再次向 119.147.157.135 伺服器發起 http 請求視訊內容。

  1. +-----------------+-----------------------------------------+
  2. | Accept | */* | 可接受的格式
  3. +-----------------+-----------------------------------------+
  4. | Ref | 11, 4, 402, 265 | 發出請求的載體參考位址
  5. +-----------------+-----------------------------------------+
  6. | Accept-Encoding | gzip, deflate | 編碼格式
  7. +-----------------+-----------------------------------------+
  8. | Host | 119.147.157.135 | 提供服務的伺服器名稱
  9. +-----------------+-----------------------------------------+
  10. | Cookie | vsuid=1234567890123 |
  11. +-----------------+-----------------------------------------+
  12. | Connection | Keep-Alive | 連線狀態:保持連線
  13. +-----------------+-----------------------------------------+

(5) 收到伺服器回傳訊息後,開始視訊傳輸。

  1. +-----------------+-----------------------------------------+
  2. | Content-Type | video/mp4 |
  3. +-----------------+-----------------------------------------+
  4. | Accept-Ranges | bytes |
  5. +-----------------+-----------------------------------------+
  6. | ETag | |
  7. +-----------------+-----------------------------------------+
  8. | Last-Modified | Sat, 18th March 2020 10:00:00 GMT |
  9. +-----------------+-----------------------------------------+
  10. | Date | Sun, 4th Sep 2020 14.00.00 GMT | 時間戳記
  11. +-----------------+-----------------------------------------+
  12. | Connection | close | 連線狀態:關閉
  13. +-----------------+-----------------------------------------+
  14. | Server | GOOGLE.DG |
  15. +-----------------+-----------------------------------------+