無意中發現了一個巨牛的人工智能教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看小說一樣!覺得太牛了,所以分享給大家。點這裏可以跳轉到教程。
項目背景
兩臺UDP SERVER,通過F5實現硬件的UDP負載均衡,發現UDP SERVER上會定期收到F5的UDP探測包,但是UDP SERVER並沒有對這些探測包做過任何響應,所以不明白F5是如何知道UDP SERVER是活的還是死的?
兩臺UDP SERVER
172.28.17.52
172.28.17.54
VIP
172.28.26.13
主備F5
當把兩臺UDP SERVER都停掉之後,F5顯示如下:
紅色代表不可達
當單獨啓動52的UDP SERVER後,F5顯示如下:
52的服務器上日誌顯示一直在收包,ip是F5的
但是就程序而言,本身是並沒有對探測包做出任何響應的,所以抓包看看
52的機器上只發現有F5來的探測包,並沒有發現有52回過去的響應包
54上再抓包,54進程停掉了
54進程不在,F5依然是在持續的發探測包的,UDP,同時可以看出54給F5回了ICMP的包,destination unreachable,搞之F5設備,當前機器不可達,此時F5就知道了54不可達,隨即更自己維護的節點狀態信息
那麼ICMP報文的作用是什麼呢?
ICMP協議主要用來檢測網絡通信故障和實現鏈路追蹤,最典型的應用就是PING和tracerooute。 PING: 通過發送回送請求報文和回送回答報文來檢測源主機到目的主機的鏈路是否有問題,目的地是否可達,以及通信的延遲情況。 traceroute: 通過發送探測報文來獲取鏈路地址信息。第一個探測報文TTL爲1,到達第一個路由器時,TTL減1爲0所以丟掉這個探測包,同時向源主機發回ICMP時間超過報文,這時源主機就獲得了第一個路由器的IP地址;接着源主機發送第二個探測報文,TTL增1爲2,到達第一個路由器TTL減1爲1並轉發探測包到第二個路由器,這時TTL減1爲0,丟掉這個探測包並向源主機發回ICMP時間超過報文,源主機就獲得了第二個路由器的IP地址;以此類推,直到探測報文到達traceroute的目的地,這時源主機就獲得了到目的地的每一跳路由的IP地址。 |
由此不難看出爲什麼F5能知道後端real server的節點狀態了