精华内容
下载资源
问答
  • TTL是什么意思?搞网站的朋友都知道ping命令是非常有用的。在网上有一些网友小白问到这个TTL网络词语的含义。其实这个网络词语在网上说的tt恋。但是我们今天和大家讲述的是关于ip协议中ping的TTL的含义,下面就一...
  • TTl是什么

    2021-04-07 21:58:17
    首先,PING命令属于ICMP协议规定的,而ICMP内嵌于IP层的,因此,可以说,PING网络层的命令。 PING的实现过程很简单,命令将引发IP层发送一个简单的IP包,而目的方收到这个包之后,将源和目的地址做一下交换,...

    TTl=time to live

    这应当从网络的层次讲起:
    首先,PING命令是属于ICMP协议规定的,而ICMP是内嵌于IP层的,因此,可以说,PING是网络层的命令。

    PING的实现过程很简单,命令将引发IP层发送一个简单的IP包,而目的方收到这个包之后,将源和目的地址做一下交换,重新发出这个包即可,当然还要加一些超时的机制。

    简单来说,为了避免数据包在网路上的传送路径造成死循环或者无休止的投递下去,每个ip数据包都包含乐一个寿命计数器,这个就是数据包的的生存时间TTL,也叫hop count,只要一个路由器处理过这个数据包,它就递减这个数据包的寿命计数,当寿命计数递减到0的时候,路由器就丢弃该包.
    TTL在一定程度上反应了一个IP数据包经过的路由器的多少,但是也不完全是这样,因为数据包在网络上传播的时候,其传播时间和带宽有一定关系,有时候协议会把传播时间的长短折合在TTL里,能比较客观的反应网络的状况。
    简单来说,TTL全程Time to Live,意思就是生存周期。首先要说明ping命令是使用的网络层协议ICMP,所以TTL指的是一个网络层的网络数据包(package)的生存周期,这句话不懂的先回去复习OSI7层协议去。

    通过TTL可以简单判断机器系统
    traceroute就是通过设置不同的ttl来查找我们的路由路线。

    展开全文
  • 总结有福利需要C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,...资料的关注+私信免费领取tcp/ip协议具体有几层协议TCP(Transport Control Protocol)传输控制协议 IP(Internetworking ...

    总结有福利

    需要C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。。。资料的关注+私信免费领取

    tcp/ip协议具体有几层协议

    TCP(Transport Control Protocol)传输控制协议

    IP(Internetworking Protocol)网间网协议

    UDP(User Datagram Protocol)用户数据报协议

    ICMP(Internet Control Message Protocol)互联网控制信息协议

    SMTP(Simple Mail Transfer Protocol)简单邮件传输协议

    SNMP(Simple Network manage Protocol)简单网络管理协议

    FTP(File Transfer Protocol)文件传输协议

    ARP(Address Resolation Protocol)地址解析协议

    各有什么功能?

    传输控制协议

    一、传输控制协议TCP:

    面向连接的、可靠的、基于字节流的传输层通信协议

    将应用层的数据流分割成报文段并发送给目标节点的TCP层

    数据包都有序号,即Seq Number,对方收到则发送ACK确认,未收到则重传

    使用校验和来校验数据在传输过程中是否有误

    二、TCP报文段详解:

    TCP报文是TCP层传输的数据单元,也叫报文段。

    b399819e003e1ccca881aef4fece80ff.png

    1、端口号:用来标识同一台计算机的不同的应用进程。

    1)源端口:源端口和IP地址的作用是标识报文的返回地址。

    2)目的端口:端口指明接收方计算机上的应用程序接口。

    TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。

    2、序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。

    3、数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。

    4、保留:为将来定义新的用途保留,现在一般置0。

    5、控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。

    1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

    2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

    3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

    4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

    5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

    6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

    6、窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535。

    7、校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。

    8、紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

    9、选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

    10、数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

    IP(Internetworking Protocol)网间网协议

    IP协议是TCP/IP协议族的核心协议,其主要包含两个方面:

    IP头部信息。IP头部信息出现在每个IP数据报中,用于指定IP通信的源端IP地址、目的端IP地址,指导IP分片和重组,以及指定部分通信行为。

    IP数据报的路由和转发。IP数据报的路由和转发发生在除目标机器之外的所有主机和路由器上。它们决定数据报是否应该转发以及如何转发。

    一、IP服务的特点

    IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。

    无状态是指IP通信双方不同步传输数据的状态信息,因此所有IP数据报的发送、传输和接收都是相互独立、没有上下文关系的。这种服务最大的缺点就是无法处理乱序和重复的IP数据报。面向连接的协议,比如TCP协议,能够自己处理乱序的、重复的报文段,它递交给上层协议的内容绝对是有序的、正确的。无状态服务的优点也很明显:简单、高效。我们无需为保持通信的状态而分配一些内核资源,也无需每次传输数据时都携带状态信息。

    无连接是指IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。

    不可靠是指IP协议不能保证IP数据报准确地到达接收端,它只是承诺尽最大努力。很多情况都可以导致IP数据报发送失败。比如,某个中转路由器发现IP数据报在网络上存活地时间太长,那么它将丢弃该报文,并返回一个ICMP错误消息给发送端。因此,使用IP服务地上层协议需要自己实现数据确认、超时重传等机制以达到可靠传输的目的。

    二、IPv4头部结构

    IPv4的头部结构如下所示,其长度通常为20个字节,除非含有可变长的选项部分。

    417f8d671782804243637ddd7ee67010.png

    4位版本号指定IP协议的版本。对于IPv4来说,其值是4.其他IPv4的扩展版本(如SIP协议和PIP协议),则具有不同的版本号。

    4位头部长度标识该IP头部有多少个32bit字(4字节)。因为4位最大能表示15,所以IP头部最长是60字节。

    8位服务类型包括一个3位的优先权字段,4位的TOS字段和1位的保留字段(必须置0)。4位的TOS字段分别表示:最小延时,最大吞吐量,最高可靠性和最小费用。其中最多有一个能置位1,应用程序应该根据实际需要来设置它。比如像ssh和telnet这样的登陆程序需要的是最小延时服务,而文件传输程序ftp则需要最大吞吐量的服务。

    16位总长度是指整个IP数据报的长度,以字节为单位,因此IP数据报的最大长度为65535字节。但由于MTU的限制,长度超过MTU的数据报都将被分片传输,所以实际传输的IP数据报的长度都远远没有达到最大值。

    16位标识唯一地标识主机发送地每一个数据报。其初始值由系统随机生成,没发送一个数据报,其值就加1.该值在数据报分片时被复制到每个分片中,因此同一个数据报地所有分片都具有相同地标识。

    3位标志字段地第一位保留。第二位表示"禁止分片"。如果设置了这个位,IP模块将不对数据报进行分片。在这种情况下,如果IP数据报长度超过MTU的话,IP模块将丢弃该数据报并返回一个ICMP差错报文。第三位表示“更多分片”。除了数据报的最后一个分片外,其他分片都要把它置1。

    13位分片偏移是分片相对原始IP数据报开始处(仅指数据部分)的偏移。实际的偏移值是该值左移3位(乘8)后得到的。由于这个原因,除了最后一个IP分片外,每个IP分片的数据部分的长度必须是8的整数倍(这样才能保证后面的IP分片拥有一个合适的偏移量)。

    8位生存时间(TTL)是数据报到达目的地之前允许经过的路由器跳数。TTL值被发送端设置(常见值位64)。数据报在转发过程中每经过一个路由,该值就被路由器减1。当TTL值减为0时,路由器将丢弃数据报,并向源端发送一个ICMP差错报文。TTL值可以防止数据报陷入路由循环。

    8位协议用来区分上层协议,/etc/protocols文件定义了所有上层协议对应的protocol字段的数值。其中ICMP是1,TCP是6,UDP是17。

    16位头部校验和由发送端填充,接收端对其使用CRC算法以检验IP数据报头部在传输过程中是否损坏。

    32位的源端IP地址和目的端IP地址用来标识数据报的发送端和接收端。一般情况下,这两个地址在整个数据报的传递过程中保持不变,而不论它中间经过多少个中转路由器。

    IPv4最后一个选项字段是可变长的可选信息。这部分最多包含40个字节,因为IP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。可用的IP选项包括:

    1、记录路由,告诉数据报途径的所有路由器都将自己的IP地址填入IP头部的选项部分,这样就可以跟踪数据报的传递路径。

    2、时间戳,告诉每个路由器都将数据报被转发的时间填入IP头部的选项部分,这样就可以测量途径路由之间数据报传输时间。

    3、松散源路由选择,指定一个路由器IP地址列表,数据报发送过程必须经过其中所有的路由器。

    4、严格源路由选择,和松散源路由选择类似,不过数据报只能经过被指定的路由器。

    三、IP分片

    前文提到过,当IP数据报的长度超过帧的MTU时,它将被分片传输。分片可能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。

    IP头部中的如下三个字段给IP的分片和重组提供了足够的信息:数据报标识、标志和片偏移。一个IP数据报的每个分片都具有自己的IP头部,它们具有相同的标识值,但具有不同的片偏移。并且除了最后一个分片外,其他分片都将设置MF标志。此外,每个分片的IP头部的总长度字段将被设置位该分片的长度。

    以太网帧的MTU时1500字节,因此它携带的IP数据报的数据部分最多是1480字节(IP头部占用20字节)。考虑用IP数据报封装一个长度为1481字节的ICMP报文(包括8字节的ICMP头部,所以其数据部分长度为1473字节),则该数据报在使用以太网帧传输时必须被分片,如下:

    011e145c39d5dbda2a2f2c7e3c012482.png

    上图中,长度为1501字节的IP数据被拆分成两个IP分片,第一个IP分片长度为1500字节,第二个IP分片的长度为21个字节。每个IP分片都包含自己的IP头部(20字节),且第一个IP分片的IP头部设置了MF标志,而第二个IP分片的IP头部则没有设置该标志,因为它已经是最后一个分片了。原始IP数据报中的ICMP头部内容被完整地复制到了第一个IP分片中。第二个IP分片不包含ICMP头部信息,因为IP模块重组该ICMP报文地时候只需要一份ICMP头部信息,重复传送这个信息没有任何益处。1473字节地ICMP报文数据的前1472字节被IP模块复制到第一个IP分片中,使其总长度为1500字节,从而满足MTU的要求;而多出最后1字节则被复制到第二个IP分片中。

    需要指出的是,ICMP报文的头部长度取决于报文的类型,其变化范围很大,上图以8字节为例。

    四、IP路由

    IP协议的一个核心任务是数据报的路由,即决定发送数据报到目标机器的路径。

    1、IP模块工作流程

    a55b38d63c9f321cea8e9905c436ea7f.png

    从右往左分析上图,当IP模块接收到来自数据链路层的IP数据报是,它首先对该数据报的头部做CRC校验,确认无误之后就分析其头部的具体信息。

    如果该IP数据报的头部设置了源站选路选项(松散源路由选择或严格源路由选择),则IP模块调用数据报转发子模块来处理该数据报。如果该IP数据报的头部中目标IP地址是本机的某个IP地址,或者是广播地址,即该数据是发送给本机的,则IP模块就根据数据报头部中的协议字段来决定将它派发给哪个上层应用。如果IP模块发现这个数据报不是发送给本机的,则也调用数据报转发子模块来处理该数据报。

    数据报转发子模块将首先检测系统是否允许转发,如果不允许,IP模块就将数据报丢弃。如果允许,数据报转发子模块将对该数据报执行一些操作,然后将它交给IP数据报输出子模块。

    IP数据报应该发送至哪个下一跳路由(或者目标主机),以及经过哪个网卡来发送,就是IP路由过程,即图中“计算下一跳路由”子模块。IP模块实现数据报路由的核心数据结构是路由表。这个表按照数据报的目标IP地址分类,同一类型的IP数据报将被发往相同的下一跳路由器(或者目标主机)。

    IP输出队列中存放的是所有等待发送的IP数据报,其中除了需要转发的IP数据报外,还包括封装了本机上层数据(ICMP报文、TCP报文和UDP数据报)的IP数据报。

    图中的虚线箭头显示了路由表更新的过程。这一过程是指通过路由协议 或者route命令调整路由表,使之更适应最新的网络拓扑结构,成为IP路由策略。

    2、路由机制

    首先,我们熟悉以下路由表的内容:

    ecaa82f0b0f55252548fa534b01c3f7e.png

    路由器是如何按照IP地址分类的呢?或者说给定数据报的目标IP地址,它将匹配路由表中的哪一项呢?这就是IP的路由机制,分为3个步骤:

    查找路由表中的数据报的目标IP地址完全匹配的主机IP地址。如果找到,就是用该路由项,没找到则转步骤2.

    查找路由表中的数据报目标IP地址具有相同网络ID的网络IP地址。如果找到,就使用该路由项;没找到则转步骤3.

    选择默认路由项,这通常意味着数据报的下一跳路由是网关。

    五、IP转发

    前文提到,不是发送给本机的IP数据报将由数据报转发子模块来处理。路由器都能执行数据报的转发操作,而主机一般只能发送和接受数据报,这是因为主机上/proc/sys/net/ipv4/ip_forward内核参数默认被设置为0.我们可以通过修改它来实现主机的数据报转发功能。

    对于允许IP数据报转发的系统,数据报转发子模块将对期望转发的数据报执行如下操作:

    检查数据报头部的TTL值。如果TTL值已是0,则丢弃该数据报。

    查看数据报头部的严格源路由选择选项。如果该选项被设置,则检查数据报的目标IP地址是否是本机的某个IP地址。如果不是,则发送一个ICMP源站选路失败报文给发送端。

    如果有必要,则给源端发送一个ICMP重定向报文,以告诉它一个更合理的下一跳路由器。

    将TTL值减1

    处理IP头部选项。

    如果有必要,则执行IP分片操作。

    六、ICMP重定向报文

    ICMP重定向报文也能用于更新路由表。

    1、ICMP重定向报文

    314cf46549e55fb36f96fe92a7373743.png

    前边讨论过ICMP报文头部的3个固定字段:8位类型、8位代码和16位校验和。ICMP重定向报文的类型值是5,代码字段有4个可选值,用来区分不同的重定向类型。以下介绍主机重定向,其代码值是1.

    ICMP重定向报文的数据部分含义很明确,它给接收方提供了如下两个信息:

    引起重定向的IP数据报的源端IP地址。

    应该使用的路由器的IP地址。

    接受主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表(通常是更新路由表缓冲,而不是直接更改路由表)。

    /proc/sys/net/ipv4/conf/all/send_redirects内核参数指定是否允许发送ICMP重定向报文,而/proc/sys/net/ipv4/conf/all/accept_redirects内核参数则指定是否允许接收ICMP重定向报文。一般来说,主机只能接收ICMP重定向报文,而路由器只能发送ICMP重定向报文。

    七、IPv6头部结构

    IPv6协议是网络层技术发展的必然趋势。它不仅解决了IPv4地址不够用的问题,还做了很大的改进。比如,增加了多播和流的功能,为网络上多媒体内容的质量提供精细的控制;引入自动配置功能,使得局域网管理更方便;增加了专门的网络安全功能等。

    1、IPv6固定头部结构

    IPv6头部由40字节的固定头部和可变长的扩展头部组成。如下:

    79065d206b832d1c7194dd024f6a7622.png

    4位版本号指定IP协议的版本。对IPv6来说,其值是6

    8位通信类型指示数据流通信类型或优先级,和IPv4中的TOS类似

    20位流标签是IPv6新增加的字段,用于某些对连接的服务质量有特殊要求的通信,比如音频或视频等实时传输的数据传输

    16位净荷长度指的是IPv6扩展头部和应用程序长度之和,不包括固定头部长度。

    8位下一个包头指出紧跟IPv6固定头部后的包头类型,如扩展头或某个上层协议头。它类似于IPv4头部中的协议字段,且相同的取值有相同的含义。

    8位跳数限制和IPv4中的TTL含义相同

    IPv6用128来表示IP地址,使得IP地址的总量达到了2的128次方,足够使用。

    32位表示的IPv4地址一般用点分十进制来表示,而IPv6地址则使用十六进制字符串表示,比如“FE80:0000:0000:0000:1234:5678:0000:0012”可见,IPv6地址用“:”分割成8组,每组包含2字节。但这种方法过于麻烦,通常可以使用所谓的零压缩法来将其简写,也就是省略连续的、全零的组,比如“FE80::1234:5678:0000:0012”。不过零压缩法对一个IPv6地址只能使用一次,比如上面的例子中,字节组“5678”后面的全零组就不能再省略,否则我们就无法计算每个“::”之间省略了多少个全零组。

    2、IPv6扩展头部

    可变长的扩展头部使得IPv6能支持更多的选项,并且很便于将来的扩展需要。它的长度可以是0,表示数据报没有使用任何扩展头部。一个数据报可以包含多个扩展头部,每个扩展头部的类型由前一个头部中的下一个报头字段指定。目前可以使用的扩展头部如下:

    12d07d1d3dea630c7bb17171c525cf0e.png

    UDP用户数据报协议

    特点:1.无连接 2.尽最大努力交付(不保证可靠传输) 3.面向报文 4.无拥塞控制 5.支持一对一,一对多,多对多的交互通信 6.首部开销小

    封包格式及各字段分析

    封包格式

    28d1a3d14ccfd20215be8c88b438249f.png

    字段分析

    (1)源端口: 占16位、源端口号。在需要对方回信时选用。不需要时可用全0。

    (2)目的端口: 占16位、目的端口号。这在终点交付报文时必须使用。

    (3)长度: 占16位、UDP用户数据报的长度,其最小值是8(仅有首部)。

    (4)检验和: 占16位、检测UDP用户数据报在传输中是否有错。有错就丢弃。

    数据包分析

    385840bb19d28aab5e2ab035b9077e71.png

    其他相关

    端口:

    服务器端使用的端口号:这里分为两类,最重要的一类叫做熟知端口号或系统端口号,数值为0~1023。这些数值可在网址 www .lana.org查到。IANA把这些端口号指派给了 TCP /P最重要的一些应用程序,让所有的用户都知道。当种新的应用程序出现后,IANA必须为它指派一个熟知端口,否则互联网上的其他应用进程就无法和它进行通信。另一类叫做登记端口号,数值为1024~49151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。

    客户端使用的端口号:数值为49152-65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。这类端口号留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用。

    校验方式和伪首部:

    UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传 送也不向上递交,而仅仅是为了计算检验和。上图也给出了伪首部各字段的内容。

    2ddc98101a17441d45e9b5003b1dd362.png
    73ae78e7a3f00674e1622fcac6f2ed92.png

    起TCP协议,UDP协议当中的东西就少很多了,一般情况下,运输层中TCP和UDP是占主导地位的,将TCP和UDP类比学习,将会比较透彻。

    总结:需要C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。。。资料的关注+私信免费领取

    展开全文
  • TTL是IP协议包中的一个值,它告诉网络,数据包(例如ICMP包)在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如,不正确的路由表可能导致包的无限循环。一个解决方法就是在一段...
  • TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量。 在很多情况下数据包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要...

    TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量。

    在很多情况下数据包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小1。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。

     

     

     

     

     

    ping新睿云xinruiyun.cn的IP对应ttl值

    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

    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

    Windows XP

    ICMP 回显应答的 TTL 字段值为 128

    什么是域名的TTL值?

    TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

    合理设置域名TTL值:

    一.增大TTL值,以节约域名解析时间。

    通常情况下域名解析记录是很少更改的。我们可以通过增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的时间段内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从本地缓存中返回域名解析记录。

    TTL值是以秒为单位的,通常的默认值都是3600,也就是默认缓存1小时。我们可以根据实际需要把TTL值扩大,例如要缓存一天就设置成86400。

    二.减小TTL值,减少更换空间时的不可访问时间。

    更换域名空间时会对DNS记录进行修改,因为DNS记录缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效,只就导致有部分用户在一段时间内无法不可访问网站了。

    为了尽可能的减小这个各地的解析时间差,合理的做法是:

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

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

    3.等待一天,保证各地的DNS服务器缓存都过期并更新了记录。

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

    5.确认各地的DNS已经更新完成后,再TTL值设置成常用的值(如: TTL=86400)。

    展开全文
  • 什么是TTL

    千次阅读 2017-02-22 07:15:48
    首先,PING命令属于ICMP协议规定的,而ICMP内嵌于IP层的,因此,可以说,PING网络层的命令。 PING的实现过程很简单,命令将引发IP层发送一个简单的IP包,而目的方收到这个包之后,将源和目的地址做一下交换,...

    TTl=time to live

    这应当从网络的层次讲起: 
    首先,PING命令是属于ICMP协议规定的,而ICMP是内嵌于IP层的,因此,可以说,PING是网络层的命令。

    PING的实现过程很简单,命令将引发IP层发送一个简单的IP包,而目的方收到这个包之后,将源和目的地址做一下交换,重新发出这个包即可,当然还要加一些超时的机制。

    简单来说,为了避免数据包在网路上的传送路径造成死循环或者无休止的投递下去,每个ip数据包都包含乐一个寿命计数器,这个就是数据包的的生存时间TTL,也叫hop count,只要一个路由器处理过这个数据包,它就递减这个数据包的寿命计数,当寿命计数递减到0的时候,路由器就丢弃该包.
    TTL在一定程度上反应了一个IP数据包经过的路由器的多少,但是也不完全是这样,因为数据包在网络上传播的时候,其传播时间和带宽有一定关系,有时候协议会把传播时间的长短折合在TTL里,能比较客观的反应网络的状况。  
    简单来说,TTL全程Time to Live,意思就是生存周期。首先要说明ping命令是使用的网络层协议ICMP,所以TTL指的是一个网络层的网络数据包(package)的生存周期,这句话不懂的先回去复习OSI7层协议去。

    第一个问题,为什么要有生存周期这个概念。

    很显然,一个package从一台机器到另一台机器中间需要经过很长的路径,显然这个路径不是单一的,是很复杂的,并且很可能存在环路。如果一个数据包在传输过程中进入了环路,如果不终止它的话,它会一直循环下去,如果很多个数据包都这样循环的话,那对于网络来说这就是灾难了。所以需要在包中设置这样一个值,包在每经过一个节点,将这个值减1,反复这样操作,最终可能造成2个结果:包在这个值还为正数的时候到达了目的地,或者是在经过一定数量的节点后,这个值减为了0。前者代表完成了一次正常的传输,后者代表包可能选择了一条非常长的路径甚至是进入了环路,这显然不是我们期望的,所以在这个值为0的时候,网络设备将不会再传递这个包而是直接将他抛弃,并发送一个通知给包的源地址,说这个包已死。

    第二个问题,通过TTL值我们能得到什么

    其实TTL值这个东西本身并代表不了什么,对于使用者来说,关心的问题应该是包是否到达了目的地而不是经过了几个节点后到达。但是TTL值
    还是可以得到有意思的信息的。每个操作系统对TTL值得定义都不同,这个值甚至可以通过修改某些系统的网络参数来修改,例如Win2000默认为128,通过注册表也可以修改。而Linux大多定义为64。不过一般来说,很少有人会去修改自己机器的这个值的,这就给了我们机会可以通过ping的回显TTL来大体判断一台机器是什么操作系统。
    以我公司2台机器为例 
    看如下命令 
    D:/Documents and Settings/hx>ping 61.152.93.131

    Pinging 61.152.93.131 with 32 bytes of data:

    Reply from 61.152.93.131: bytes=32 time=21ms TTL=118 
    Reply from 61.152.93.131: bytes=32 time=19ms TTL=118 
    Reply from 61.152.93.131: bytes=32 time=18ms TTL=118 
    Reply from 61.152.93.131: bytes=32 time=22ms TTL=118

    Ping statistics for 61.152.93.131: 
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss 
    Approximate round trip times in milli-seconds: 
    Minimum = 18ms, Maximum = 22ms, Average = 20ms

    D:/Documents and Settings/hx>ping 61.152.104.40

    Pinging 61.152.104.40 with 32 bytes of data:

    Reply from 61.152.104.40: bytes=32 time=28ms TTL=54 
    Reply from 61.152.104.40: bytes=32 time=18ms TTL=54 
    Reply from 61.152.104.40: bytes=32 time=18ms TTL=54 
    Reply from 61.152.104.40: bytes=32 time=13ms TTL=54

    Ping statistics for 61.152.104.40: 
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss 
    Approximate round trip times in milli-seconds: 
    Minimum = 13ms, Maximum = 28ms, Average = 19ms 
    第一台TTL为118,则基本可以判断这是一台Windows机器,从我的机器到这台机器经过了10个节点,因为128-118=10。而第二台应该是台Linux
    ,理由一样64-54=10。

    了解了上面的东西,可能有人会有一些疑问,例如以下:
    1,不是说包可能走很多路径吗,为什么我看到的4个包TTL都是一样的,没有出现不同?
    这是由于包经过的路径是经过了一些最优选择算法来定下来的,在网络拓扑稳定一段时间后,包的路由路径也会相对稳定在一个最短路径上
    具体怎么算出来的要去研究路由算法了,不在讨论之列。

    2,对于上面例子第二台机器,为什么不认为它是经过了74个节点的Windows机器?因为128-74=54。
    对于这个问题,我们要引入另外一个很好的ICMP协议工具。不过首先要声明的是,一个包经过74个节点这个有些恐怖,这样的路径还是不用为
    好。

    要介绍的这个工具是tracert(*nix下为traceroute),让我们来看对上面的第二台机器用这个命令的结果 
    D:/Documents and Settings/hx>tracert 61.152.104.40

    Tracing route to 61.152.104.40 over a maximum of 30 hops

    1 13 ms 16 ms 9 ms 10.120.32.1 
    2 9 ms 9 ms 11 ms 219.233.244.105 
    3 12 ms 10 ms 10 ms 219.233.238.173 
    4 15 ms 15 ms 17 ms 219.233.238.13 
    5 14 ms 19 ms 19 ms 202.96.222.73 
    6 14 ms 17 ms 13 ms 202.96.222.121 
    7 14 ms 15 ms 14 ms 61.152.81.86 
    8 15 ms 14 ms 13 ms 61.152.87.162 
    9 16 ms 16 ms 28 ms 61.152.99.26 
    10 12 ms 13 ms 18 ms 61.152.99.94 
    11 14 ms 18 ms 16 ms 61.152.104.40

    Trace complete.

    从这个命令的结果能够看到从我的机器到服务器所走的路由,确实是11个节点(上面说10个好像是我犯了忘了算0的错误了,应该是64-54+1,
    嘿嘿),而不是128的TTL经过了70多个节点。

    既然已经说到这里了,不妨顺便说说关于这两个ICMP命令的高级一点的东西。
    首先是ping命令,其实ping有这样一个参数,可以无视操作系统默认TTL值而使用自己定义的值来发送ICMP Request包。 
    例如还是用那台Linux机器,用以下命令: 
    D:/Documents and Settings/hx>ping 61.152.104.40 -i 11

    Pinging 61.152.104.40 with 32 bytes of data:

    Reply from 61.152.104.40: bytes=32 time=10ms TTL=54 
    Reply from 61.152.104.40: bytes=32 time=13ms TTL=54 
    Reply from 61.152.104.40: bytes=32 time=10ms TTL=54 
    Reply from 61.152.104.40: bytes=32 time=13ms TTL=54

    Ping statistics for 61.152.104.40: 
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
    Approximate round trip times in milli-seconds: 
    Minimum = 10ms, Maximum = 13ms, Average = 11ms

    D:/Documents and Settings/hx> 
    这个命令我们定义了发包的TTL为11,而前面我们知道,我到这台服务器是要经过11个节点的,所以这个输出和以前没什么不同。现在再用这个

    试试看: 
    D:/Documents and Settings/hx>ping 61.152.104.40 -i 10

    Pinging 61.152.104.40 with 32 bytes of data:

    Reply from 61.152.99.94: TTL expired in transit. 
    Reply from 61.152.99.94: TTL expired in transit. 
    Reply from 61.152.99.94: TTL expired in transit. 
    Reply from 61.152.99.94: TTL expired in transit.

    Ping statistics for 61.152.104.40: 
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
    Approximate round trip times in milli-seconds: 
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

    D:/Documents and Settings/hx>

    可以看到,结果不一样了,我定义了TTL为10来发包,结果是TTL expired in transit.就是说在到达服务器之前这个包的生命周期就结束了。
    注意看这句话前面的ip,这个ip恰好是我们前面tracert结果到服务器之前的最后1个ip,包的TTL就是在这里减少到0了,根据我们前面的讨论
    ,当TTL减为0时设备会丢弃包并发送一个TTL过期的ICMP反馈给源地址,这里的结果就是最好的证明。
    通过这里再次又证明了从我机器到服务器是经过了11个节点而不是70多个,呵呵。 
    最后再巩固一下知识,有人可能觉得tracer这个命令很神奇,可以发现一个包所经过的路由路径。其实这个命令的原理就在我们上面的讨论中

    想象一下,如果我给目的服务器发送一个TTL为1的包,结果会怎样? 
    根据前面的讨论,在包港出发的第一个节点,TTL就会减少为0,这时这个节点就会回应TTL失效的反馈,这个回应包含了设备本身的ip地址,这样我们就得到了路由路径的第一个节点的地址。因此,我们继续发送TTL=2的包,也就受到第二个节点的TTL失效回应.依次类推,我们一个一个的发现,当最终返回的结果不是TTL失效而是ICMP Response的时候,我们的tracert也就结束了,就是这么简单。

    顺便补一句ping命令还有个-n的参数指定要发包的数量,指定了这个数字就会按照你的要求来发包了而不是默认的4个包。如果使用-t参数的话,命令会一直发包直到你强行中止它。

    展开全文
  • TTL是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如,不正确的路由表可能导致包的无限循环。一个解决方法就是在一段时间后丢弃这...
  • 首先来说串口通讯协议,串口通讯协议包括物理部分与协议部分嘛,物理部分既硬件...TTL一般从单片机或者芯片中发出的电平,高电平为5V(51单片机)或者3.3V(stm32) 由上图可以看出RS232电平与TTL电平逻辑刚.
  • 根据TTL判断对方是什么操作系统 TTL(Time To Live,生存时间),是IP协议包中的一个值,指定数据包被路由器丢弃之前允许通过的网段数量,数据包每经过路由器转发一次都至少要把TTL减一,TTL通常表示包在被丢弃前...
  • ping过后显示ttl=59 什么意思?

    千次阅读 2016-03-21 10:59:47
    IP(中文全称:网络协议协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。TTL值的注册表位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有个...
  • 首先要说明ping命令使用的网络层协议ICMP,所以TTL指的一个网络层的网络数据包(package)的生存周期,这句话不懂的先回去复习OSI7层协议去。 第一个问题,为什么要有生存周期这个概念。 很显然,一个...
  • ttl详解

    万次阅读 2017-03-28 07:06:04
    这样的问题,其实所知道的TTL更多的是关于网络方面的,比如我们在ping ip或ping 网站的时候都可以看到有TTL数值,如下图,相信网友所问的问题应该是ping中的TTL什么意思吧,下面我们来详细介绍下TTL是什么意思。...
  • ICMP协议主要用来检测网络通信故障和实现链路追踪。 PING:通过发送回送请求报文和回送回答报文来检测源主机到目的主机的链路是否有问题,目的地是否可达,以及通信的延迟情况。 traceroute:通过发送探测报文来获取...
  • 网络上的报文并不总是能顺利地传送并被接收,有时可能由于网关MTU太小而报文不允许分片造成报文不能被网关转发,有时可能由于TTL值减小到0而不能继续发送或接收,也有可能由于报文头参数有问题而不能被接收者接收,...
  • 什么数据帧不设计TTL机制防止“广播风暴”? 读了TCP/IP协议,发现IP协议的数据包中包含一个 TTL 8字节,代表数据包的存活时间。由这个TTL 可以控制数据包在网络传递的次数,进而防止数据包无限在网络传递,产生...
  • TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量。 在很多情况下数据包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要...
  • ICMP协议主要用来检测网络通信故障和实现链路追踪,最典型的应用就是PING和tracerooute。 PING:  通过发送回送请求报文和回送回答报文来检测源主机到目的主机的链路是否有问题,目的地是否可达,以及通信的延迟...
  • TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量。 在很多情况下数据包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否...
  • 标签的结构是什么? 标签是一个由四个字节组成,且只在本地有意义的固定长度短标识符,用于标识转发等效类 (FEC)。 放置在特定数据包上的标签表示该数据包将要分配到的FEC。 Label - 标签值(无结构),20 位 Exp ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 147
精华内容 58
关键字:

ttl是什么协议