当前位置: 首页 > article >正文

IP协议及相关特性

   IP协议负责地址管理和路由选择。它的组成为:

    接下来我们将对其中较重要的部分进行介绍。

     4位版本:这里的四位版本只有两个取值 分别为IPv4和IPv6,这两个额分别为不同的IP协议,但是现在主流的还是IPv4但是近年来IPv6在中国的普及率已经非常高了。

    4位首部长度:同TCP协议IP协议的报头也是可以变长的,报头长度是0~15实际上报头的上的是乘4的当为15时报头长度就是60。

    8位服务类型(TOS): 表示IP以哪种模式进行工作,其中3位优先字段已经被弃用,4位TOS字段和1位保留字段(必须置为0),4位TOS字段分贝表示:最小按时,最高可靠性,最小成本,最大吞吐量,这4者相互冲突,只能选择一个。

    16位总长度(字节数):IP数据报的长度,UDP也是16个字节但是只能传输64KB,但是IP则不同如果IP传输的数据超过了64KB,那么这个数据将会被拆分成许多很小的包,后续再进行组包。

    16位标识,3位版本,14位片偏移:这三个放在一起,主要是因为他们都是为了拆包组包做准备,16位标志就是将同一个包进行标记,是的进行组包的时候,,就可以判断哪一部分是不是同一份如果是同一份那么就可以进行组包,就是判断是否属于同一个包。3位标志中1位是查看当前是否需要组包,1位标识当前包是否是组包中的最后一个,还有一位就是没有什么作用,如果后续需要添加新的功能才会用到。13位位偏移,决定组包时候的先后顺序。

    8位生存空间(TTL):一个数据包在网络中最多生存多长时间,如果一个IP数据报的目的IP写错了,写成了不存在的IP就会消耗很多的网络资源,TTL(值32,64,128.....)约定了传送达到的次数(指的是经过路由器转发的次数),如果发送一个IP数据报TTL就会-1(经过交换机,不减)一旦TTL减到了0,此时这个数据包就会被当前路由器直接丢弃~~。

    8位协议:表示IP数据报中携带的是哪一种传输层网络协议,通过不同的数值感知接下来把数据交给TCP或UDP解析,还是其他协议。

    16位首部校验和:验证数据传输过程中是否出错(只针对首部IP报头)。

    32位源IP地址,32位目的IP地址:这两个是IP数据报中的最关键的信息,表示数据从哪里来到哪里去。IP地址也会出现不够用途的情况,自然也有解决方法:分别是动态分配IP地址,NAT网络地址转换,IPv6,接下来我们进行逐个介绍。

    动态分配IP地址:一个设备上网就分配不上网就不分配,但这只是权宜之计,不能很好的解决实际问题。

    NAT网络地址转换:使用一个IP代表一大波设备,IP地址分为两大类1,内网IP/私网IP 2,外网IP/公网IP。私网IP是由10.   172.16-172.31.*   和192.168.*开头的,要求公网IP必须是唯一的,但是私网IP允许是重复的(在不同的局域网中是允许重复的)。

    NAT网络地址转换发生情况,如果同一个局域网主机A访问主机B和公网上的设备A访问设备B都不会涉及到NAT,一个局域网中的主机A访问另一个局域网中主机B,NAT机制是不允许的,只有在局域网内部的设备访问公网上的设备BNAT机制主要就是针对这种情况进行生效的。

     IPv6:这个方案就简单粗暴了,直接更换IP协议,IPv4使用32位4个字节表示IP地址,IPv6使用128位16个字节表示IP地址,相当于IPv6的地址数比IPv4多了2^32*2^ 32*2^32个简单来说就是可以个地球上的每一粒沙子都分配上地址,IPv6的地址总数在地球上完全够用,根本不需要考虑用尽的情况。

    路由选择:路由选择是一个非常大的话题,我们只浅显的了解一下。网络是一个复杂的网状结构,因此从一个点到另一个点可能有很多条路,有花费时间长的,也有花费时间短的,这里的路由选择没办法找出最优解,只能找出较优解,这是因为,路由器都不知道我们整个网状结构的全貌,只能通过"问路"的方式,查找我们要去的节点路径,路由器的每一次问路都是比它自身大一级的路由器(认识的设备更广)进行问路,在通过路由控制表判断接下来该往哪里走,如果没有查到路由器有一个“默认的表项”进行下一跳(更高级的路由器),直到到达自己的目的地。


http://www.kler.cn/news/310887.html

相关文章:

  • 理解AAC和Opus的编码与解码流程
  • 企业导师面对面,产教融合实训基地搭建人才成长快车道
  • 掌握RESTful API设计:构建高效、可扩展的Web服务
  • Android Studio报错: Could not find pub.devrel:easypermissions:0.3.0, 改用linux编译
  • 在线考试|基于java的模拟考试系统小程序(源码+数据库+文档)
  • Modbus_RTU和Modbus库
  • 1.Seata 1.5.2 seata-server搭建
  • 线程池的类型和状态
  • sqli-labs靶场自动化利用工具——第11关
  • 【深度学习】(2)--PyTorch框架认识
  • 设计模式(Design Patterns)
  • springBoot整合mybatisplus
  • 学习风格的类型
  • 内核是如何接收网络包的
  • FLUX屠榜了小红书,平台这会也真假难辨
  • PMP 报考条件是有哪些?
  • 【mysql】mysql中窗口函数lag()用法
  • HarmonyOS开发实战( Beta5.0)蓝牙实现服务端和客户端通讯详解
  • 面向对象设计的五大原则(SOLID 原则)
  • Jsp学习笔记(详解)
  • 【2025】儿童疫苗接种预约小程序(源码+文档+解答)
  • python 实现collatz sequence考拉兹序列算法
  • 如何使用下拉字段创建WordPress表单(简单方法)
  • 1.熟悉接口测试(Postman工具)
  • JavaWeb笔记整理——Redis
  • 程序员装新机
  • 【架构设计】多级缓存:应用案例与问题解决策略
  • Linux入门学习:Linux权限理解
  • PyQGIS开发 1 环境配置
  • web渗透—RCE