网络基础知识:TTL

我们使用ping命令检测连接情况的时候,会看到这样的结果:

64 bytes很好理解,从目标接收到64个字节的数据包(64bytes是最小的数据帧),icmp_seq是序列号,标识第几个接收到的包,time为请求往返的耗时。

那么这个ttl是什么?

TTL:Time To Live

TTL全称Time To Live,这是一个计算机网络的术语,主要是描述数据包在网络中存活的时间或可跳跃的次数。

翻译的话可以翻译成存活时间或者存活次数。主要看使用的场景,如果是DNS TTL(这里指的是域名解析信息在DNS中的存活时间)这类的话,那就是存活时间,如果是上面ping命令(IP协议的中的TTL)的场景的话,那应该是存活次数。

本文主要聊一下IP协议中的TTL。

IP协议的TTL

HOP(跳)

在网络中,两个通信的主机之间可能会存在多个路由器(网段),例如从PC1到PC2,路径可能是

PC1->A->B->C->PC2。我们把两个设备之间看做一个区间,数据包从一个区间传递到下一个区间的行为被称为"HOP",一般翻译成"跳"。

传输的基本流程

数据在网络中传输的大致过程

  • 通信的双方建立连接
  • 发送方将发送的数据会加工成数据包
  • 根据接收方的地址查询路由表选择下一跳地址
  • 数据包传递给下一跳的路由器
  • 重复上面的步骤,直到到达目标主机

TTL的机制

我们都知道在互联网中,一个主机到另一个主机,中间需要经过由多个路由组成的网状的结果。虽然网络层的寻址会选择最优路径,但是在传输过程中会遇到一些问题,例如:路由环路、网络故障、拓扑设计错误等,导致数据包在路由器之间无限的传递。说白了数据包可能会出现传输死循环的情况,为了解决这个问题,IP协议在包的首部添加了TTL标识,标识这个包最多可以跳的次数,在传输过程中,数据包每跳一次,TTL次数就减1,假如TTL为0,设备就会丢弃这个数据包,并发送通知给原始目标。

以IPV4为例,包的IP首部如下:

TTL由发送的主机设置,根据主机的不同会看到不同的TTL,例如windows一般为128,Linux一般为64,通过

修改系统的网络参数配置可以修改这个值(一般不会去修改)。

包流转时TTL变更流程大致如下:

DNS的TTL

顺便说一下DNS的TTL,这个才是真实意义上的存活时间。DNS缓存服务器在请求权威性DNS服务器获取到记录后,会将其保存在本地。信息保留的时间就是TTL,在保留时间内,缓存服务器不会再向权威服务器请求,会直接读取本地缓存。

相关推荐
小徐_23333 小时前
wot-ui-cli 1.1.0 发布:支持 OpenCode、Antigravity,wot-ui 图标迁移不再靠猜
前端
__zRainy__3 小时前
Node.js Web 框架选型指南:从 Express 到 Hono 的全景对比
前端·node.js·express·koa·nestjs·egg·fastify
西瓜有点饿3 小时前
PostCSS 和 UnoCSS 的作用和区别
前端·postcss
伟大的兔神4 小时前
我做了一个本地优先的 AI 图片工作台:Loomora v1.0.0 正式发布
前端·javascript·vue.js
90后的晨仔5 小时前
uni-app项目 Vue3 状态管理 Pinia 完全指南:从概念到实战的深度解析
前端
80s7775 小时前
住宅代理解析:动态住宅IP与静态住宅IP如何选型?
网络·网络协议·tcp/ip
90后的晨仔6 小时前
uni-app 在 iOS 平台跳转页面时移除底部安全区域的完整技术指南
前端
用户938515635076 小时前
React + JWT 登录鉴权底层原理与工程化实践
前端·react.js
zww89491116 小时前
家政派单系统开发实战:架构设计与派单算法指南
前端·系统架构
fangzhanpeng1686 小时前
(前端)2.js变量作用域样例
开发语言·前端·javascript