首页 > 其他分享 >网络技术-IP协议

网络技术-IP协议

时间:2023-09-21 20:57:25浏览次数:27  
标签:环路 协议 IP 分片 网络 TTL 数据包

IP:

Internet Protocol 即因特网协议;

网络层位于数据链路层与传输层之间。网络层中包含了许多协议,其中最为重要的就是IP协议。网络层提供了IP路由功能。理解IP路由除了要熟悉IP协议的工作机制之外,还必须理解IP编制以及如何合理地使用IP地址来设计网络。

 

IP的包结构:

IP包头固定20Bytes(字节)  其中重点掌握以下结构:

  • 版本
    • 版本有4也有6(目前主要学习4)
  • 头部长度
    • 头部长度固定为20字节
  • 总长度
    • 总长度=头部长度(固定20字节)+上层应用层的长度
  • 标识
    • 若数据包分片了,则会使用标识方便确认哪个包属于同一个分片
  • 分段标志
    • 更多分段标志若为1 则代表这个包是分段的其中之一,若标志为0 则代表没有更多分段
  • 生存时间(TTL)
    • 为了防止数据永无止境的在链路里,则设定了TTL值,每经过一个三层设备,减一,减到0后 这个包就废了
  • 协议号(Protocol)
    • 用于识别上层协议

 

我们可以随意抓个包 即可看到IPv4的详细包结构信息

 

分片:

当数据包比链路MTU(MTU默认1500字节)大的时候,就可以被分解为更多的足够小片段的过程,叫做分片

也就是说,一个包大于1500字节时,会被切成小于1500字节的数据包

 我们在用whireshark进行抓包时,能够明确看到分片

尤其要注意:whireshark抓取分片时,只会抓取最后一个片段,因此在 Flags中会发现显示 "More fragments:Not set"

 

 TTL:

为了防止IP数据包在网络内永无止境的传输从而引起了环路,就设置了TTL这个概念,每次经过一次三层设备的时候 TTL值会-1 当TTL=0时,数据包将直接被丢弃

TTL的意义不仅仅防止环路问题,它也可以被当成一种故障排除的工具;Linux的 "traceroute" 命令以及Windows的 "tracert" 命令就是利用了TTL功能

 

环路测试:

通过环路测试更加能够理解TTL的作用,以及TTL的重要性

这里使用eNSP复现环路故障,通过抓包分析可得知为什么会出现环路的现象:

在eNSP中拖入两个路由器,配置信息如下:

复现环境部署完毕后,在任意路由器上ping 8.8.8.8并且进行抓包,即可看到环路现象

 请注意观察每个包的TTL

第一个包:

第二个包:

最后一个包:

由于TTL为0 路由器R2最终将ICMP回应发送给了R1:

 从上述的实验可以得出以下结论:

  • 当路由器的路由配置不当,就会发生环路
  • 由于IP包头存在TTL,因此每经过一次三层设备,TTL都会减1
  • TTL的作用即是:防止永无止境的环路现象

协议号:

协议号即Protocol 它用于识别上层的协议

可以通过识别编号来识别上层协议:

  • 1:ICMP
  • 2:IGMP
  • 6:TCP
  • 9:IGRP
  • 17:UDP
  • 47:GRE
  • 50:ESP
  • 51:AH
  • 57:SKIP
  • 88:EIGRP
  • 89:OSPF
  • 115:L2TP

我们可以随意抓一个包进行查看:

 

标签:环路,协议,IP,分片,网络,TTL,数据包
From: https://www.cnblogs.com/kakureru/p/17718294.html

相关文章

  • DesignWare Building Block IP学习
    DesignWareBuildingBlock1.基本介绍DesignWareBuildingBlockIP(以下简称DWBB),也叫做FoundationLibrary,是一个紧密集成在Synopsys综合环境中的可重用智能功能块集合。使用DWBB可以在综合时实现透明且高水平的性能优化。DWBB中含有大量组件,可以实现设计重用并显著地提升生......
  • golang 有没有 类似 typescript 的 联合类型?
    Go语言(Golang)不像TypeScript那样直接支持联合类型(UnionTypes)。在TypeScript中,联合类型允许一个变量具有多个不同的数据类型,而在Go中,通常使用接口(interfaces)和具体类型来处理类似的情况。以下是在Go中处理联合类型的一些方法:使用接口:Go中的接口可以用于定义一组方法的契约,而不是特......
  • 无涯教程-JavaScript - F.INV函数
    描述F.INV函数返回F概率分布的倒数。如果p=F.DIST(x...),则F.INV(p...)=x。F分布可用于比较两个数据集变异程度的F检验。语法F.INV(probability,deg_freedom1,deg_freedom2)争论Argument描述Required/OptionalProbabilityAprobabilityassociatedwiththeF......
  • pipelines file
    1.自定义实现文件存储:(1).spidertest/pipelines.py:importcodecsimportjsonclassJsonPipeline(object):#自定义json文件的导出def__init__(self):#打开json文件self.file=codecs.open('test.json','w',encoding="utf-8")d......
  • 无涯教程-JavaScript - FISHER函数
    描述FISHER函数返回x处的Fisher变换。这种转换产生的功能通常呈正态分布而不是倾斜。使用此功能对相关系数执行假设检验。语法FISHER(x)争论Argument描述Required/OptionalXAnumericvalueforwhichyouwantthetransformation.RequiredNotesFisher变换的等......
  • [NOIP2012 普及组] 摆花
    [NOIP2012普及组]摆花[NOIP2012普及组]摆花题意有\(n\)个数,每种可以选\(0\lex_i\lea_i\)个,问有多少种方法可以使得\(\sum_{i=1}^nx_i=m\)。Solution1.深搜\(dfs\)显然可以先暴力深搜。#include"bits/stdc++.h"usingnamespacestd;constintmaxn=......
  • Ubuntu Server 14.04 LTS 设置静态IP地址
    IP地址以及网关修改、修改文件/etc/network/interfacessudovim/etc/network/interfaces对应作如下修改:autoeth0ifaceeth0inetstatic##原来的内容为ifaceeth0inetdhcpaddress192.168.0.117gateway192.168.0.1#这个地址你要确认下网关是不是这个地址net......
  • JavaScript Library – Svelte
    前言上一回我介绍了 Alpine.js。作为我开发企业网站draft版本的renderengine。用了一阵子后,我觉得它真的非常不好用。所以打算换一个。前端有好几个framework/library/compiler都可以用来做MVVMrenderengine。比如Angular、React、Vue、LIt、Solid、Qwik、Svelt......
  • 两个异地私有网络通过各自的静态公网地址配置GRE,实现两个跨区域内网互通
                                       网络拓扑图 解释:pc1和pc2分别属于一个公司的两个地区的不同私网,pc1所属的区域出口为静态公网地址1.1.1.1,pc2所属的区域出口为静态公网地址2.2.2.2。 需求:1.实现......
  • 应该选择住宅ip代理还是数据中心代理?
    随着科技的进步和互联网的发展,http代理ip也逐渐兴起,结果就是市面上有很多http代理ip的代理商,为了满足自身的实际业务,应该选择一些品质好的http代理,更划算更高效更物超所值。但是,代理ip类型也分数据中心代理与住宅代理,那我们应该怎么选择呢?接下来小编就跟大家介绍一下:首先先了解一下......