QUIC實踐
環境Ubuntu14.x86_64 gcc4.8 python2.7
編譯QUIC服務器和客戶端
下載
git clone https://github.com/google/proto-quic.git
修改hosts
因為要從google官網下載一些包,需要通過修改hosts來翻牆
將下面網站中的內容添加到本地hosts文件中(/etc/hosts)
https://github.com/racaljk/hosts/blob/master/hosts
依賴安裝
argparse安裝(未安裝的話)
apt-get install python-argparse
安裝binutils
cd proto-quic
export PROTO_QUIC_ROOT=`pwd`/src
export PATH=$PATH:`pwd`/depot_tools
./proto_quic_tools/sync.sh
安裝其它依賴庫
./src/build/install-build-deps.sh --no-syms --no-arm --no-chromeos-fonts
編譯生成服務器和客戶端程序
cd src
gn gen out/Default && ninja -C out/Default quic_client quic_server net_unittests
編譯完成后輸出的文件在proto-quic/src/out/Default下
運行服務器
准備測試數據
cd /tmp
wget -p --save-headers https://www.example.org
下載完測試數據后記得修改index.html文件中的內容,這塊可以參考本文最后的第一個連接
生成證書
cd proto-quic/src/net/tools/quic/certs/
./generate-certs.sh
運行服務器
在src目錄下執行下面的命令,如果服務器無法啟動,嘗試用root用戶啟動,或者加入sudo命令來啟動
./out/Default/quic_server \
--quic_response_cache_dir=/tmp/www.example.org \
--certificate_file=net/tools/quic/certs/out/leaf_cert.pem \
--key_file=net/tools/quic/certs/out/leaf_cert.pkcs8 \
--v=1
服務器啟動的成功后會查看6121端口
運行客戶端
使用chromium導入CA證書,具體操作詳見參考連接1。這里需要注意,Ubuntu只允許普通用戶登陸,所以chromium導入證書時是以普通用戶導入的。在運行客戶端時也需要以普通用戶來運行,否則會報證書無效的錯誤
sudo ./out/Default/quic_client --host=127.0.0.1 --port=6121 https://www.example.org/
客戶端運行成功后將會看到前面准備的數據內容
編譯時遇到的問題
問題1
/usr/bin/ld.gold: warning: ignoring --threads: /usr/bin/ld was compiled without thread support
/usr/bin/ld.gold: warning: ignoring --thread-count: /usr/bin/ld was compiled without thread support
出現上面的警告時說明不支持多線程,但是編譯器會將warning直接視為error從而終止編譯
修改 src/build/config/compiler/BUILD.gn,將fatal_linker_warnings的值修改為false
fatal_linker_warnings = false
參考
http://www.jianshu.com/p/f17b4a015e27
https://www.chromium.org/quic/playing-with-quic