天天看點

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

目的

本文依據參考文獻中的資料,來利用chromium源碼編譯出quic_server和quic_client, 并依靠它們來發送QUIC協定請求,了解QUIC互動的細節。

前提

必須能夠流暢地翻牆下載下傳chromium等項目代碼

下面是實操記錄

項目目錄存放在

cd ~/program_develop/quic_dev

最後的目錄結構在這裡提前說明一下

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

下載下傳chromium項目源碼

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

在~/.bashrc中添加

export PATH="$PATH:這裡為depot_tools的路徑" 

更新配置

source ~/.bashrc

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

mkdir chromium && cd chromium 

fetch --nohooks chromium

chromium項目源碼大約9.91G,這一步根據網速快慢可能需要花費較長時間,我這裡大約40分鐘左右吧

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo
在Ubuntu 16.04.3 LTS上搭建QUIC互動demo
在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

編譯出quic_server和quic_client

cd src

sudo build/install-build-deps.sh

或者

sudo build/install-build-deps.sh --no-chromeos-fonts 

這兩個指令都下載下傳失敗,但是都沒有啥影響

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

gclient runhooks  

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

gn gen out/Default 

ninja -C out/Default quic_server quic_client 

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

此時我們已經得到quic_server和quic_client

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

準備測試網頁及證書

mkdir -p ~/program_develop/quic_dev/quic-data

cd ~/program_develop/quic_dev/quic-data

wget -p --save-headers https://www.example.org

cd www.example.org

vim index.html

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

在header裡加上X-Original-Url: https://www.example.org/

行末的^M使用Ctrl+V,Ctrl+M實作

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

cd ~/program_develop/quic_dev/chromium/src

cd net/tools/quic/certs  

./generate-certs.sh  

cd - 

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

生成的證書在下面的目錄

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

在浏覽器中添加證書

然後打開chrome浏覽器(我在Ubuntu 16.04上安裝的版本是63),在位址欄裡輸入chrome://settings/search#ssl 然後選擇 授權中心,點選導入 ,将net/tools/quic/certs/out/2048-sha256-root.pem導入 ,最後勾選第一項,确定即可

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo
在Ubuntu 16.04.3 LTS上搭建QUIC互動demo
在Ubuntu 16.04.3 LTS上搭建QUIC互動demo
在Ubuntu 16.04.3 LTS上搭建QUIC互動demo
在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

開啟QUIC的server和client,請求準備好的網址

下一步就是跑server,開啟指定端口監聽

./out/Default/quic_server \

--quic_response_cache_dir=/home/taoyx/program_develop/quic_dev/quic-data/www.example.org \

--certificate_file=net/tools/quic/certs/out/leaf_cert.pem \

--key_file=net/tools/quic/certs/out/leaf_cert.pkcs8 \

--port=6121 \

--v=1  

這裡明确指定端口号6121,使用--v=1開啟更多的調試資訊

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo
在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

然後是啟動Client,采用QUIC協定來發送請求和接收響應

./out/Default/quic_client --host=127.0.0.1 --port=6121 https://www.example.org/  

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

然後,根據互動細節來了解QUIC協定,并閱讀QUIC實作的相關代碼。

參考文獻

[1].http://blog.csdn.net/Claranc/article/details/79062260

[2].http://blog.csdn.net/dxpqxb/article/details/76819992