導航:首頁 > 操作系統 > ttl值linux

ttl值linux

發布時間:2022-07-09 10:02:12

① TTL值是什麼

TTL是 Time To Live的縮寫,該欄位指定IP包被路由器丟棄之前允許通過的最大網段數量。TTL是IPv4包頭的一個8 bit欄位。在IPv4包頭中TTL是一個8 bit欄位,它位於IPv4包的第9個位元組。

TTL的作用是限制IP數據包在計算機網路中的存在的時間。TTL的最大值是255,TTL的一個推薦值是64。

雖然TTL從字面上翻譯,是可以存活的時間,但實際上TTL是IP數據包在計算機網路中可以轉發的最大跳數。TTL欄位由IP數據包的發送者設置,在IP數據包從源到目的的整個轉發路徑上,每經過一個路由器,路由器都會修改這個TTL欄位值,具體的做法是把該TTL的值減1,然後再將IP包轉發出去。

(1)ttl值linux擴展閱讀

TTL 是由發送主機設置的,以防止數據包不斷在IP互聯網路上永不終止地循環。轉發IP數據包時,要求路由器至少將 TTL 減小 1。

TTL值的注冊表位:HKEY_LOCAL_ 其中有個DefaultTTL的DWORD值,其數據就是默認的TTL值了,我們可以修改,但不能大於十進制的255。

② 我的區域網全部都是winxp 可是ping的TTL值全部都是 64 ,但我看64是linux 這是為什麼

呵呵,樓上說的沒錯,你看不明白也沒錯。TTL是限制一個范圍,但這只是一個建議數值,並不是一定要這樣設置,具體還是要參照自己的環境。
它的意義就是::TTL(Time To Live ) 生存時間。TTL64表示這個數據包中經過64跳以後即被丟棄,哪怕目標是在第65跳上。而一跳,一般是指一台路由器,交換機串的再多,也不算跳。所以0隻能在本機。出本機即是1跳,所以是同一子網。而出子網,則可能有公司區域網或社區網,所以建議32跳,一般的話32台路由器是肯定用不到的。
後面依次類推,但我們不能排除大型的網路公司,結構非常復雜。或者人們需要,自己搭建的實驗環境,那這個TTL這個數值就需要根據實際情況來看

③ Linux命令行下改變ping 的TTL值

方法1(重啟後有效):
#sysctl -w net.ipv4.ip_default_ttl=N
(N=0~255),若N>255,則ttl=0
方法2(重啟後無效):
#echo N(N為0~255) > /proc/sys/net/ipv4/ip_default_ttl
參考《Linux就該這么學》這本Linux入門書籍。

④ ping命令中TTL值各代表了什麼操作系統

TTL是IP協議包中的一個值,它告訴網路路由器包在網路中的時間是否太長而應被丟棄。有很多原因使包在一定時間內不能被傳遞到目的地。例如,不正確的路由表可能導致包的無限循環。一個解決方法就是在一段時間後丟棄這個包,然後給發送者一個報文,由發送者決定是否要重發。TTL的初值通常是系統預設值,是包頭中的8位的域。TTL的最初設想是確定一個時間范圍,超過此時間就把包丟棄。由於每個路由器都至少要把TTL域減一,TTL通常表示包在被丟棄前最多能經過的路由器個數。當記數到0時,路由器決定丟棄該包,並發送一個ICMP報文給最初的發送者。

Windows 95/98中TTL的預設值為32。有人建議當到達一個節點比較困難時,把此值設為128。ping和tracerouter都使用TTL值以嘗試到達給定的主機或跟蹤到那個主機的路由。traceroute把包的TTL值設得較小,使它在到達目的的路上被各個路由器連續的丟棄。發出包到受到返回的ICMP報文之間的時間用來計算從一個路由器到另一個路由器的時間。

使用多路復用的IP協議,TTL值表示一個包被轉發的范圍。有以下轉換:0, 限制在同一主機 1, 限制在同一子網 32, 限制在同一節點 64, 限制在同一區域(region)128,限制在同一大陸(continent)255,

由於不同的操作系統的默認TTL值不同,因此有文章說可以通過返回的TTL值判斷目標系統的類型,這是正確的,但不是TTL的功能,只是對TTL理解的一個應用。TTL的值可以修改。有些特殊的、系統(如NIDS)會定義特殊的TTL值,以拒絕非法訪問數據進入。我們在執行PING命令時可以用-i參數指定TTL值,大家可以將TTL設置為0,則該包將被立即丟棄。有時我們執行了一個PING 命令,在繁華時卻繁華了另一個地址,並帶有一個英語的提示(大致意思是TTL無效),則表示該包在到達目標之前(也就是到返回IP位置時),包所帶的TTL已經為0了或小於下一網段許可通過的TTL值了,該包已經被路由丟棄了。

⑤ TTL值各代表什麼操作系統

利用TTL值來鑒別操作系統
TTL:生存時間

指定數據報被路由器丟棄之前允許通過的網段數量。

TTL 是由發送主機設置的,以防止數據包不斷在 IP 互聯網路上永不終止地循環。

轉發 IP 數據包時,要求路由器至少將 TTL 減小 1。

使用PING時涉及到的 ICMP 報文類型

一個為ICMP請求回顯(ICMP Echo Request)

一個為ICMP回顯應答(ICMP Echo Reply)

三、TTL 欄位值可以幫助我們識別操作系統類型。

UNIX 及類 UNIX 操作系統 ICMP 回顯應答的 TTL 欄位值為 255

Compaq Tru64 5.0 ICMP 回顯應答的 TTL 欄位值為 64

微軟 Windows NT/2K操作系統 ICMP 回顯應答的 TTL 欄位值為 128

微軟 Windows 95 操作系統 ICMP 回顯應答的 TTL 欄位值為 32

當然,返回的TTL值是相同的

但有些情況下有所特殊

LINUX Kernel 2.2.x & 2.4.x ICMP 回顯應答的 TTL 欄位值為 64

FreeBSD 4.1, 4.0, 3.4;
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;
OpenBSD 2.6, 2.7,
NetBSD
HP UX 10.20
ICMP 回顯應答的 TTL 欄位值為 255

Windows 95/98/98SE
Windows ME
ICMP 回顯應答的 TTL 欄位值為 32

Windows NT4 WRKS
Windows NT4 Server
Windows 2000
ICMP 回顯應答的 TTL 欄位值為 128

這樣,我們就可以通過這種方法來辨別

操作系統 TTL
LINUX 64
WIN2K/NT 128
WINDOWS 系列 32
UNIX 系列 255

⑥ 如何修改Linux的TTL值

通常情況下,Windows的TTL的基數是128,而早期的Red Hat Linux和Solaris的TTL基數是255,FreeBSD和新版本的Red Hat Linux的TTL基數是64。比如,ping一個Red Hat系統,顯示如下:
[root@ www.linuxidc.com ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.030 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.012 ms
用以下命令修改Red Hat Linux的TTL基數為128(本來為64):
# echo 128 > /proc/sys/net/ipv4/ip_default_ttl

上面的128其實可以是任何數,但是為了偽裝成是WIN系統,所以選擇這個數字
若想使設置永久生效,可以修改/etc/sysctl.conf配置文件,添加如下一行:
net.ipv4.ip_default_ttl = 128
保存退出後需要重啟下,再ping 下,TTL基數就變為128了。
關於更多Linux的學習,請查閱書籍《linux就該這么學》。

⑦ 如何在linux里使用C語言修改ttl值

ttl是每個IP包裡面攜帶的信息,數據結構在/include/netinet/ip.h裡面,注意那個u_int8_t ip_ttl——
struct ip
{
#if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned int ip_hl:4; /* header length */
unsigned int ip_v:4; /* version */
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned int ip_v:4; /* version */
unsigned int ip_hl:4; /* header length */
#endif
u_int8_t ip_tos; /* type of service */
u_short ip_len; /* total length */
u_short ip_id; /* identification */
u_short ip_off; /* fragment offset field */
#define IP_RF 0x8000 /* reserved fragment flag */
#define IP_DF 0x4000 /* dont fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
u_int8_t ip_ttl; /* time to live */
u_int8_t ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src, ip_dst; /* source and dest address */
};
如果你僅僅是想改變某個IP包裡面的ttl值,你需要自己創建這個ip結構。如果你是想在創建socket的時候改ttl值,用setsockopt函數

閱讀全文

與ttl值linux相關的資料

熱點內容
生活解壓游戲機 瀏覽:899
季羨林pdf 瀏覽:716
php支付寶介面下載 瀏覽:814
ipad怎麼把app資源庫關了 瀏覽:301
量柱比前一天多源碼 瀏覽:416
電子書app怎麼上傳 瀏覽:66
國家反詐中心app注冊怎麼開啟 瀏覽:804
全波差分傅里葉演算法窗長 瀏覽:41
程序員如何講自己做過的項目 瀏覽:7
程序員要看的書頸椎 瀏覽:946
php文章cms 瀏覽:553
CSS權威指南第三版PDF 瀏覽:496
android怎麼搭建框架 瀏覽:184
正宗溯源碼大燕條一克一般多少錢 瀏覽:917
電腦感染exe文件夾 瀏覽:916
wpsppt怎麼轉pdf格式 瀏覽:88
騰訊文檔在線編輯怎麼添加密碼 瀏覽:880
本地不能訪問伺服器地址 瀏覽:865
訪問伺服器命令 瀏覽:835
華為雲伺服器分銷商 瀏覽:954