close

雖然大家都知道udp是stateless的協定
但實作中在sudo netstat -nap裡還是有可能會看到
UDP協定的ESTABLISHED狀態
查了一下,原來是建立udp socket時用了connect() api
執行時會去呼叫對應的 connect() syscall [1]
才會導致這個結果,但是udp connect()並不會有三向式交握.

之前分析了chrome封包發現,chrome偶爾會 TLS(SSL) over udp
尤其實是在連線google自家的server.
e.g.
udp        0      0 192.168.X.X:43870     172.217.163.45:443      ESTABLISHED 
3788/chrome --type=
我想可能是為了效率吧,畢竟網路分層架構,TLS(SSL)也沒有規定一定要over tcp

接著就來實驗看看

編譯&執行後,在 sudo netstat -nap 裡面

udp 0 0 192.168.X.X:53294 8.8.8.8:53 ESTABLISHED 12402/udp_connect

也真的有出現 udp 的 ESTABLISHED State

註[1]: 可用 strace 工具去觀察程式執行時呼叫了哪些 syscall

全站熱搜
創作者介紹
創作者 fvalinux 的頭像
fvalinux

Elegance

fvalinux 發表在 痞客邦 留言(0) 人氣()