網路 協議 相關知識雜記

2021-09-11 05:05:53 字數 1401 閱讀 1521

如果乙個tcp連線長期沒有資料傳輸,tcp可以通過keep alive機制來控制和斷開連線。

在設定之前我們先來看看keepalive都支援哪些設定項

keepalive預設情況下是關閉的,可以被上層應用開啟和關閉

tcp_keepalive_time: keepalive的空閒時長,或者說每次正常傳送心跳的週期,預設值為7200s(2小時)

tcp_keepalive_intvl: keepalive探測包的傳送間隔,預設值為75s

tcp_keepalive_probes: 在tcp_keepalive_time之後,沒有接收到對方確認,繼續傳送保活探測包次數,預設值為9(次)

開啟tcp keepalive需要通過應用層序開啟socket的keepalive功能。而keepalive的三個引數既可以通過系統命令sysctl進行設定,也可以通過設定socket屬性進行設定。

# 'keep': 

# set tcp keep-alive options

cnt = self._plugin.config["keep"]["cnt"]

intvl = self._plugin.config["keep"]["intvl"]

idle = self._plugin.config["keep"]["idle"]

self._client.set_keep_alive(cnt, intvl, idle)

在linux核心設定

keepalive預設不是開啟的,如果想使用keepalive,需要在你的應用中設定so_keepalive才可以生效。

檢視當前的配置:

cat /proc/sys/net/ipv4/tcp_keepalive_time

cat /proc/sys/net/ipv4/tcp_keepalive_intvl

cat /proc/sys/net/ipv4/tcp_keepalive_probes

在linux中我們可以通過修改 /etc/sysctl.conf 的全域性配置:

net.ipv4.tcp_keepalive_time=7200

net.ipv4.tcp_keepalive_intvl=75

net.ipv4.tcp_keepalive_probes=9

新增上面的配置後輸入sysctl -p使其生效,你可以使用sysctl -a | grep keepalive命令來檢視當前的預設配置

如果應用中已經設定so_keepalive,程式不用重啟,核心直接生效

ps:這篇博文有乙個簡單的例子來說明 tcp keep-alive 的機理

網路設定的一些說明

Vlan相關知識雜記

劃分vlan的目的 很多人還真就以為劃分vlan的目的就是為了隔離不同vlan不讓他們互訪 其實這是非常多人的誤區,當然這可以通過acl做到,但並不是劃分vlan的目的,這個最多可以理解成這是劃分vlan之後的一種應用並不是最終目的 其實劃分vlan的目的就兩個 1.提高安全性 舉個例子 沒有劃分v...

spark相關知識雜記

工作中經常用到hadoop和spark的相關操作,大資料的知識點很多,想要全部掌握爛熟於心很困難,將一些比較重要或經常忘記的點記錄一下 1.saprk與hadoop的關係 hadoop是乙個完善的大資料生態系統,包含了底層的檔案系統hdfs,計算引擎mapreduce,大資料查詢引擎hive,實時流...

網路協議相關

應用層 telnet pop 郵件 http 表示層會話層 傳輸層 tcp udp 網路層 ip icmp 鏈路診斷 arp 為鏈路層獲得目標位址的mac位址 dhcp 動態位址配置協議,不用管理員配位址 nat translator,位址轉換,私有位址對外的轉換,節約位址和網路安全考慮ipv6也有...