理解IP及DNS中的TTL

1. TTL


1.1 IP协议中的TTL


  • 定义

TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量。(IP数据包在计算机网络中可以转发的最大跳数)

在很多情况下数据包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。

TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,每经过一个路由器,路由器会修改TTL值, 即将改值减小1。当记数到0时,路由器决定丢弃该包,并发送一个ICMP Type 11 and Code 0 message(Time to live exceeded) 报文给最初的发送者,由发送者决定是否要重发。

1.1.1 常见操作系统的TTL值

UNIX 及类 UNIX 操作系统       ICMP 回显应答的 TTL 字段值为 255
Compaq Tru64 5.0             ICMP 回显应答的 TTL 字段值为 64
微软 Windows NT/2K操作系统    ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统      ICMP 回显应答的 TTL 字段值为 32
LINUX Kernel 2.2.x & 2.4.x   ICMP 回显应答的 TTL 字段值为 64

1.1.2 linux系统TTL值修改

TTL值在文件/proc/sys/net/ipv4/ip_default_ttl中定义,可通过执行echo 128 > /proc/sys/net/ipv4/ip_default_ttl命令修改
(这是短暂性的)若要永久生效可修改/etc/sysctl.conf配置文件,添加net.ipv4.ip_default_ttl=128,接着执行sysctl -p即可。

1.1.3 理解发送主机

在本机(windows 10)ping本地的VMware虚拟主机(操作系统为CentOS release 6.8),其IP为192.168.10.128,可见TTL为64:

在CentOS上执行echo 168 > /proc/sys/net/ipv4/ip_default_ttl修改TTL值为168,接着再次在本机(windows 10)ping 192.168.10.128,发现TTL由64变为168

综上可知,这里的发送主机指的是ping后面IP对应的主机


1.2 DNS中的TTL


  • 定义

  • 定义1

TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上的缓存时间。

  • 定义2

TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间,数值越小,修改记录各地生效时间越快。

当各地的DNS(LDNS)服务器接受到解析请求时,就会向域名指定的授权DNS服务器发出解析请求从而获得解析记录;该解析记录会在DNS(LDNS)服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向授权DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

1.2.1 合理设置域名TTL值

1.2.1.1 增大TTL值,以节约域名解析时间

通常情况下域名解析记录是很少更改的。我们可以通过增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的时间段内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从本地缓存中返回域名解析记录,从而提高解析效率。
TTL值是以秒为单位的,通常的默认值都是3600,也就是默认缓存1小时。我们可以根据实际需要把TTL值扩大,例如要缓存一天就设置成86400。

1.2.1.2 减小TTL值,减少更新域名记录时的不可访问时间

因为DNS记录缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效(部分省份运营商调大了TTL值),这样就会就导致部分用户在一段时间内无法访问网站。

为了尽可能的减小各地的解析时间差,可参考以下步骤执行:

1.先查看当前域名的TTL值。

2.修改TTL值为可设定的最小值,建议为60秒。

3.等待一天,保证各地的DNS服务器缓存都过期并更新了记录,可使用cloudxns全国DNS查询

4.设置并修改DNS解析到新的记录,这样各地的DNS就能以最快的速度更新到新的记录。

5.确认各地的DNS已经更新完成后,再将TTL值设置成常用的值(如: TTL=86400,一般解析商提供的默认值为600秒)。

2.参考链接

https://www.cnblogs.com/tian4837/p/4178662.html
https://osqa-ask.wireshark.org/questions/22337/ttl-time-to-live
https://blog.csdn.net/ysdaniel/article/details/6922097

原文地址:http://blog.51cto.com/xoyabc/2112913

时间: 2024-08-28 20:37:13

理解IP及DNS中的TTL的相关文章

在实践中深入理解IP协议

0.说明 TCP/IP协议栈其实当然不止有TCP和IP两个协议,但以这两个协议作为这个协议栈的统称,足以体现出其在TCP/IP协议栈中的重要性,下面就来结合搭建的网络环境,通过一些手段来深入理解IP协议中各字段的具体含义,相信这会比纯看理论的书籍要容易理解得多. 本次使用的环境如下: 操作系统:Ubuntu 15.10 网络设备模拟器:GNS3 抓包软件:Wireshark 1.网络环境搭建 对于IP协议的分析,并不需要太复杂的网络环境,我们只需要建立下面一个拥有两个节点的网络环境即可:

Python学习之——Tcp/ip基础/IP地址/DNS/端口简介

一.为什么需要tcp/ip,什么是tcp/ip? TCP/IP协议,即Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成.TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准.协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求.通俗

DHCP获取IP地址过程中捕获的报文—三级网络总结(二)

上一篇文章主要说了一下知识点中的IP地址的考点,这一篇我打算说说DHCP获取IP地址过程中捕获的报文的这个考点,都是自己的理解,有错误欢迎指正. DHCP是应用层协议,UDP是传输层协议,IP是网络层协议,以太网是链路层协议.数据在网络上传输的时候要自顶向下逐层封装的,典型的DHCP过程是这样的: 1:客户机向服务器发送DHCP_DISCOVER报文,申请IP. 2:服务器向客户机返会DHCP_OFFER报文,指定一个将要分配的IP. 3:客户机向服务器发送DHCP_REQUEST报文,请求这个

命题作文:在一棵IPv4地址树中彻底理解IP路由表的各种查找过程

这是一篇命题作文.近期一直想写点东西,但一直找不到题目.正好收到一封邮件,有人问我Linux路由表的布局问题以及路由缓存的问题,加之前些日子又帮人做了一个片上路由表,所以认为这是个好题目,索性花了多半个周末的时间,奋笔疾书. 前面的套话 不写命题作文已经11年了.最后一次是在高考的考场上. 收到邮件时,被人要求写这样的命题作文,其实我是拒绝的,由于你不能叫我写我就立即去写,首先我自己得懂这个.我又不能说到了写完了的时候贴了非常多baidu出来的图片,说了非常多套话,人家一看就知道我这是转载或者翻

Centos6.2设置静态ip和dns

参考了如下文章:https://gist.github.com/fernandoaleman/2172388http://www.lifelinux.com/how-to-configure-static-ip-address-on-centos/http://www.ehowstuff.com/how-to-configure-static-ip-address-on-centos-6-2-linux-server/http://www.liurongxing.com/centos-dns-i

浅谈TCP/IP网络编程中socket的行为

我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: . TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) . Socket I/O系统调用(重点如read/write),这是TCP/IP协议在应用层表现出来的行为. . 编写Performant, Scalable的服务器程序.包括多线程.IO Multiplexing.非阻塞.异步等各种技术. 关于TCP/IP协议,建议参考Richard Stevens的<TCP/IP Illust

Centos 7 安装 设置 IP地址,DNS,主机名,防火墙,端口 (实测+笔记)

环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.虚拟系统安装 1.1 使用VMware 虚拟机,读入ISO进行安装.启动后进行安装界面 1.2 选择 Install CentOS7,进行语言选择 1.3 选择简体中文,进入信息摘要 1.4 点击"安装位置",选择系统需要安装到的硬盘,点击“完成”. 1.5 点击"网络和主机名",进行网络设置

[Ubuntu] 如何设置静态 IP 和 DNS

要设置 IP 和 DNS 解析服务器,编辑 /etc/network/interfaces: # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.6 gateway 192.168.1.1 netmask 255.255.255.0 dns-nameservers 192.168.1.

ububuntu配置ip和dns

装完ubuntu 第一件事情就是连上网,换个源,进行更新操作,但前提条件是要配好ip和dns. 下面把自己配置的过程记录下来,权且当作一份备份,以便不时之需. 一.配置ip ubuntu的网络配置信息放在 /etc/network/interfaces 中, 操作: sudo vim /etc/network/interfaces vim是一个类似DOS下edit的文本编辑软件.和前面介绍过的软件vi用法类似 如果配置动态获取ip,则在上述文件中加入以下内容:(注:服务器通常不用动态IP) au