网络篇10 | 网络层 IP

网络篇10 | 网络层 IP

  • 01 简介
  • 02 名称解释
  • 03 IP报文格式(IPv4)
    • 1)4位版本协议(version)
    • 2)4位首部长度(header length)
    • 3)8位服务类型(Type Of Service, TOS)
    • 4)16位总长度
    • 5)16位(分片)标识
    • 6)3位(分片)标志
    • 7)13位片偏移
    • 8)8位TTL
    • 9)8位协议
    • 10)16位校验和
    • 11)32位源地址
    • 12)32位目的地址
    • 13)选项字段(不定长, 最多40字节)
  • 04 网段划分
    • 1)5类IP地址
    • 2)公网IP地址
    • 3)私有IP地址
    • 4)多播(Multicast)通信
    • 5)特殊的保留地址
  • 05 IP地址的数量限制
    • 1)CIDR子网掩码
    • 2)动态分配IP地址
    • 3)NAT技术
    • 4)IPv6
  • 06 路由选择
    • 1)路由表维护
    • 2)路由选择过程

01 简介

对上可载送传输层各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。

IP地址是定位主机的,具有一个将数据报从A主机跨网络可靠的送到B主机的能力。但是有能力就一定能做到吗,只能说有很大的概率。TCP为IP提供策略,IP用于执行行动。

02 名称解释

  • 主机: 配有IP地址, 但是不进行路由控制的设备;
  • 路由器: 即配有IP地址, 又能进行路由控制,一般都带有DHCP功能,可以看做一个DHCP服务器。
  • 节点: 主机和路由器的统称;
  • 网络号: 保证相互连接的两个网段具有不同的标识;
  • 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;
  • 不同的子网其实就是把网络号相同的主机放到一起,;
  • 子网:其实就是把网络号相同的主机放到一起。
  • DHCP技术:能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.

03 IP报文格式(IPv4)

在这里插入图片描述

1)4位版本协议(version)

通信双方的IP协议必须要达到一致, IPv4的版本就是4

2)4位首部长度(header length)

定义了IP协议首部(报头)的长度, 以4字节为单位, IP报头是不定长的, 首部长度范围 [5, 15] 即 [20字节, 60字节]

3)8位服务类型(Type Of Service, TOS)

3 位优先权字段(已经弃用), 4位TOS字段, 和一位保留字段(此位必须置0), 思维TOS分别表示 : 最小延迟, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能有一个置1. 对于ssh/telnet这样的应用程序, 最小延时标胶重要, 对于ftp(文件传输协议)类型的程序, 最大吞吐量比较重要.

4)16位总长度

IP数据报整体占多少个字节(单位是字节), 16位能表示的最大数是 65535, 即65535字节, 即64k, 那么TCP的数据肯定不能大于64k -20-20, 一个20是IP报头最次小长度, 一个20是TCP报头的最小长度; UDP的数据肯定不能大于64K-20-8, 第一个20也是IP报头的最短长度, 8是UDP报头的长度. TCP会在传输层根据MSS(最大分段大小, Maxitum Segment Size)自动进行数据分段; UDP在传输层不会分段; 传输的IP报文还受到下层数据链路层的MTU(最大传输单元, Maximum Transfer Unit)的限制; 而TCP中的MSS就是根据数据链路层的MTU计算的. UDP在在传输层不会分段, 所以当UDP数据大小 大于 MTU 而小于64k 20-8 时, 数据就会在网络层进行分片

5)16位(分片)标识

在进行数据分片重组的时候表示数据分片属于那个完整的UDP报文, 具体来说, IP在存储器中维持一个计数器, 每产生一个 数据报, 计数器就加1, 并将此值赋给标识字段. 但这个标识并不是平常的序号,因为IP是无连接, 不可靠服务, 数据报不存在按序接收的问题. 当数据报由于长度超过链路层的MTU而必须分片时, 这个标识字段的值就被复制到所有的数据报片的标识字段中, 等到对端重组的时候, 相同标识符的值的数据报就会被重新组装成一个数据报.

6)3位(分片)标志

高位未用, 中间位DF置1, 表示不能进行分片,置0才可以进行分片操作. 最低位MF, 置1表示后面还有数据分片,MF=0表示这已经是最后一个数据分片了.

7)13位片偏移

标识一个分片在原始UDP报文中的位置, 以8字节为单位, 例如将一个10001的UDP报文按256字节分片后, 第一片的数据报的片偏移就是0, 第二片数据报的片偏移就是256/8 = 32, 第三片就是512/8=64, 第四片就是768/8=96, 第四片并没有256个字节, 如果分片前的数据不能够被8整除, 那么分片后的最后一个数据大小就是分片前的数据报大小除以8的余数. 可以看到不管分片前的大小能不能被8整除, 片偏移永远是8的整数倍.

8)8位TTL

报文在网络中的生存周期 – 即跳数, 指的是能够经过多少路由器, 每经过一个路由器就称为一跳, 该值就减1, 为0时就被网络丢弃掉, 8位TTL, 最大值为2^8 - 1 = 255.

9)8位协议

标识传输层使用的是什么协议, 用于数据分用

10)16位校验和

二进制反码求和, 用于校验数据的一致性

11)32位源地址

用于标识源端,

12)32位目的地址

用于标识对端主机, 路由器就是根据对端主机IP地址进行路径选择的

13)选项字段(不定长, 最多40字节)

基本很少用到;

04 网段划分

IP地址分为两个部分, 网络号和主机号。192.168.10.20,网络号为192.168.10,主机号为20。

1)5类IP地址

过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示(该图出 自[TCPIP])。
在这里插入图片描述

随着互联网的飞速发展, 这种划分方案的局限性很快就显现出来, 大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址. 这是因为申请一个B类地址, 理论上一个子网内能允许6万5千多个主机. A类地址的子网内的主机数更是达到数千万之多, 然而实际网络架设中, 不会存在一个子网内有这么多主机的情况. 因此大量的A类IP地址都被浪费掉了.

A类 :   0.0.0.0 ~ 127.255.255.255,高1位固定 + 7位网络号  + 24位主机号, 网段的选择就是0 ~ 127, 最多容纳2^24-2台主机, 即16777214台主机, 用于组建超大型的网络B类 : 128.0.0.0 ~ 191.255.255.255,高2位固定 + 14位网络号 + 16位主机号, 网段的选择就是128.0 ~ 191.255, 最多容纳2^16-2台主机, 即65534台主机, 用于组建中型网络C类 : 192.0.0.0 ~ 223.255.255.255,高3位固定 + 21位网络号 + 8位主机号,  网段的选择就是192.0.0 ~ 223.255.255, 最多容纳2^8-2台主机, 即254台主机, 用于组建小型网络D类 : 224.0.0.0 ~ 239.255.255.255,高4位固定 + 28位多播组号。E类 : 240.0.0.0 ~ 247.255.255.255,高5位固定 + 27位留用。

2)公网IP地址

  • A 类:0.0.0.0 到 127.255.255.255(1.0.0.0 到 126.255.255.255 是保留地址,不分配给网络设备)
  • B 类:128.0.0.0 到 191.255.255.255(172.16.0.0 到 172.31.255.255 是保留地址,不分配给网络设备)
  • C 类:192.0.0.0 到 223.255.255.255(192.168.0.0 到 192.168.255.255是保留地址,不分配给网络设备)

3)私有IP地址

RFC 1918 规定了三个私有 IP 地址段,在组织内部构建局域网时,可以使用私有 IP 地址进行内部通信,而无需直接连接到因特网上。

  • 10.0.0.0 到 10.255.255.255(共计 16,777,216 个地址)
  • 172.16.0.0 到 172.31.255.255(共计 1,048,576 个地址)
  • 192.168.0.0 到 192.168.255.255(共计 65,536 个地址)

这些私有 IP 地址段是专门为内部网络通信保留的,不会被路由器转发到因特网上,避免与全局 IP 地址冲突。

4)多播(Multicast)通信

  • D 类和 E 类属于 IPv4 地址空间中的特殊地址范围:
    • D 类:224.0.0.0 到 239.255.255.255,用于多播组通信。D 类地址用于多播(Multicast)通信,一次发送数据到多个目标设备。在多播通信中,数据包被发送到一个预定义的组,而不是单个目标设备。
    • E 类:240.0.0.0 到 247.255.255.255,属于未分配或保留地址空间。E 类地址原本曾被用作实验性地址或为将来使用保留的地址空间。这些地址并没有常规应用,可以说是未指定的保留地址。
      总结起来,D 类用于多播通信,而 E 类则是未分配或保留的地址空间,在现有网络中并没有明确定义的使用方式。

5)特殊的保留地址

除了 A 类、B 类和 C 类中的私有 IP 地址段(RFC 1918 规定的保留地址)外,还有一些其他保留地址段。

  • IP地址中的主机号全为0, 就成了网络号, 代表这个局域网
  • 将IP地址中的主机号的二进制全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包(此时目的地址当然就被设为了广播地址)
  • 127.0.0.1. 它代表设备的本地虚拟接口, 所以默认被看作是永远不会宕掉的接口. 所以通常在安装物理网卡前就可以ping通这个本地回环地址. 一般都会用来检查本地网络协议、基本数据接口等是否正常的.
  • 0.0.0.0 标识本机上的所有网卡, 用与TCP服务端程序的绑定地址, 相当于监听本机的所有网卡.
  • Loopback 地址:127.0.0.0 到 127.255.255.255(127.0.0.0/8),用于本地回环测试,通常表示本机自身。
    在这里插入图片描述

05 IP地址的数量限制

IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址. 这意味着, 一共只有43亿台主机能接入网络么?实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址。

1)CIDR子网掩码

对于这种情况, 人们提出了新的划分方案, 称为CIDR(Classless Interdomain Routing) :

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号(和IP地址一样也用点分10进制来表示)
  • 子网掩码也是一个32位的无符号整数. 通常用一串 “0” 来结尾, (所以说子网掩码的二进制从高位到低位的1肯定是连续的)
  • 将IP地址和子网掩码进行 按位与 操作, 得到的结果就是网络号
  • 网络号和主机号的划分与这个IP地址是A类, B类还是C类无关
例子1 : IP : 140.252.20.68 子网掩码 : 255.255.255.0   ==> 网络号 : IP和子网掩码按位与 :140.252.20.0==> 子网地址范围就是主机号的二进制从全0到全1, 140.252.20.0 ~ 140.252.20.255
例子2 : IP : 140.252.20.68 子网掩码 : 255.255.255.240 ==> 网络号 : IP和子网掩码按位与 :140.252.20.64==> 子网地址范围就是主机号的二进制从全0到全1, 140.252.20.53 ~ 140.252.20.79

IP地址和子网掩码还有一种更加简洁的表示方法, 例如 : 140.252.20.68/24, 表示IP地址是140.252.20.68, 子网掩码的高24位全为1, 也就是255.255.255.0

最大的主机号 + 1 就是局域网中主机的个数. 再看一个例子:
某公司网络的网段是192.168.2.0/24, 现在公司想从这个网段中划分出四个子网, 给公司的四个部门, 问, 每个子网的网络号以及子网掩码是多少, 以及每个子网中的IP地址范围是多少?
首先, 这是一个C类网络, 一个C类网络可以有256个主机号, 分为4个子网, 则每个子网的主机号个数就是64, 那每个子网中最大主机号就是64 - 1 = 63, 这个值就是子网掩码取反后的值, 那子网掩码就是63取反的值, 为255.255.255.192
四个子网的子网掩码是一样的, 因为其能分配的主机数都是一样的, 这道题中子网掩码为255.255.255.192
第一个子网IP范围 : 192.168.2.0 ~ 192.168.2.63  -- 网络号 : 192.168.2.0
第一个子网IP范围 : 192.168.2.64 ~ 192.168.2.127  -- 网络号 : 192.168.2.64
第一个子网IP范围 : 192.168.2.128 ~ 192.168.2.191  -- 网络号 : 192.168.2.128
第一个子网IP范围 : 192.168.2.192 ~ 192.168.2.255  -- 网络号 : 192.168.2.192

2)动态分配IP地址

利用DHCP协议, 给接入网络的设备动态分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的

3)NAT技术

一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP)。WAN口IP对外,LAN口IP对内

路由器LAN口连接的主机, 都从属于当前这个路由器的子网中.

不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是子网之间IP地址就可以重复了.

每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级, 最外层的运营商路由器, WAN口IP就是一个公网IP了.

子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地址转换).

4)IPv6

在2019年11月26日15时35分, 位于荷兰阿姆斯特丹的IP地址管理机构正式宣布, 全球43亿(具体是2^32)个 IPV4地址已经全部分配完毕, 但我们还有IPv6协议可以用, IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 目前IPv6已经开始部署, 但还没有完全普及。

06 路由选择

1)路由表维护

路由表可以由网络管理员手动维护(静态路由), 也可以通过一些算法自动生成(动态路由).相关的算法有距离向量算法, LS算法, Dijkstra算法等。

2)路由选择过程

路由就是在复杂的网络结构中, 找出一条通往终点的路线; 路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程.所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间
在这里插入图片描述

过程如下 :
当IP数据包, 到达路由器时, 路由器会先查看目的IP;
路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
重复这个过程, 一直到达目的IP(或者TTL为0时被丢弃)

那么如何判定当前这个数据包该发送到哪里呢? 这个就依靠每个节点内部维护一个路由表。
在这里插入图片描述

  • 路由表可以使用route命令查看;
  • 如果目的IP命中了路由表, 就直接转发即可;
  • 路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。
    在这里插入图片描述
  • Destination : 目的网段 (与我相连的网络的网络号)
  • Gatway : 网关(下一跳路由器入口的ip)
  • Getmask : 子网掩码
  • Metric : 跳数, 该条路由记录的质量, 一般情况下, 如果有多条到达相同目的地的路由记录, 路由器会采用metric值小的那条路由
  • Use Iface : 与这个网络相连的网卡名称

以上图路由表为例, 对于一个到达该节点(主机或路由器)的IP数据包,逐行检查目标IP地址与路由表中的每一行。首先,将目标地址与第一行子网掩码255.255.0.0 进行按位与操作,如果结果与网络号172.17.0.0 相等,则目标主机在本地局域网内,直接转发即可。若不相等,则继续与下一行子网掩码进行比较。重复这个过程,直到找到匹配项为止。如果所有行都不匹配,则将数据包发送给上层网关处理。

转发的过程:遍历路由表,目的IP & 路由表中配置的Genmask,确定该报文要去的目标网络,对比结果和Destination,通过IFace接口发出报文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud 集成 RabbitMQ

目录 前言步骤引入相关maven依赖添加相关配置 使用方法配置消息序列化创建第一个消息队列和交换机使用方法 总结 前言 在当今的微服务架构盛行的时代,消息队列作为一种重要的通信机制,在分布式系统中扮演着不可或缺的角色。RabbitMQ,作为一款…

ASP.NET公交车管理系统的实现与设计

摘 要 随着经济的日益增长,信息化时代已经到来,生活中各种信息趋向数字化、清晰化。公交车作为现代城市生活中一种重要的交通工具,其数量增多,车型也不再单一,雇用的司机增多,这样使得公交车公司的车辆信…

XTTS数据迁移方案

前置条件检查 XTTS使用限制较多,V3版本按照本节逐项检查 目标库操作系统不能是windows 源库:redhut 7.9 目标库:redhut 7.9 检查数据库时区(两边都需要) SQL> select dbtimezone from dual; 检查结果两边都一致…

机器学习和深度学习--李宏毅 (笔记与个人理解)Day 16

Day 16 deep Learning – 鱼与熊掌兼得 最近在减重, 昨天跑了个一公里,然后今天上午又打了个篮球,真是老胳膊老腿了,运动完给我困得不行 Review 见前面的笔记 这里说dl 会提供一个足够大的模型, 来使得Dall loss 足够小…

Unity类银河恶魔城学习记录12-14 p136 Merge Skill Tree with Sword skill源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili CharacterStats.cs using System.Collections; using System.Collections.…

【氮化镓】GaN HEMTs结温和热阻测试方法

文章《Temperature rise detection in GaN high-electron-mobility transistors via gate-drain Schottky junction forward-conduction voltages》,由Xiujuan Huang, Chunsheng Guo, Qian Wen, Shiwei Feng, 和 Yamin Zhang撰写,发表在《Microelectroni…

绿联HDMI延长器40265使用AG7120芯片放大器方案

HDMI延长器和放大器 延长器:主要用于HDMI线的延长,有HDMI对接头方式延长,或HDMI公头加HDMI母头的HDMI线进行延长,或通过网线方式延长,早期为双网线,目前已发展为单网线,需要注意的是&#xff0…

NLP_知识图谱_图谱问答实战

文章目录 图谱问答NERac自动机实体链接实体消歧 多跳问答neo4j_graph执行流程结构图![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1577c1d9c9e342b3acbf79824aae980f.png)company_data![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/20f567d877c743b…

【core analyzer】core analyzer的介绍和安装详情

目录 🌞1. core和core analyzer的基本概念 🌼1.1 coredump文件 🌼1.2 core analyzer 🌞2. core analyzer的安装详细过程 🌼2.1 方式一 简单但不推荐 🌼2.2 方式二 推荐 🌻2.2.1 安装遇到…

TCP/IP 协议栈在 Linux 内核中的 运行时序分析

1、Linux内核概述 1.1 Linux内核结构 一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、bai虚拟文件系统和网络接口。 1、内存管理 内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子…

数据可视化基础与应用-04-seaborn库人口普查分析--如何做人口年龄层结构金字塔

总结 本系列是数据可视化基础与应用的第04篇seaborn,是seaborn从入门到精通系列第3篇。本系列主要介绍基于seaborn实现数据可视化。 参考 参考:我分享了一个项目给你《seaborn篇人口普查分析–如何做人口年龄层结构金字塔》,快来看看吧 数据集地址 h…

7 种实现 CSS 三角形的原理与方法 以及 三角形在网页设计中的作用

三角形在网页设计中不仅是图形设计的基本元素,更是实现视觉引导、空间构建、情绪传达、品牌塑造、性能优化以及创新表达的重要工具。其广泛应用和多功能性使其成为设计师手中不可或缺的设计语言组成部分。本文介绍了7种CSS实现三角形的方法。 CSS实现三角形主要有以…

MYSQL执行过程和顺序详解

一、前言 1.1、说明 就MySQL在执行过程、sql执行顺序,以及一些相关关键字的注意点方面的学习分享内容。 在参考文章的基础上,会增加自己的理解、看法,希望本文章能够在您的学习中提供帮助。 如有错误的地方,欢迎指出纠错&…

Project Euler_Problem 159_Digital Root Sums of Factorisations

原题目&#xff1a; 解题思路&#xff1a; 代码&#xff1a; void solve() {ll i, j,k,x,y,z,p,q,u,v;N 1000000, NN 1024;//N 20;double a, b, c,d;M.NT.get_prime_Euler(2000000);for (i 2; i < N; i) {x (i-1)%91;for (j 2; j<sqrt(i); j) {if (i % j 0) {x …

宝妈如何在家创造收入?五种兼职工作让你轻松赚钱!

许多宝妈为了陪伴孩子成长&#xff0c;毅然选择了全职妈妈的角色&#xff0c;然而&#xff0c;她们内心仍希望能有一份收入&#xff0c;实现经济独立。于是&#xff0c;寻找既能照顾家庭又能赚钱的工作成了她们的迫切需求。 然而&#xff0c;这样的需求也往往让宝妈们成为一些…

Linux三剑客-sed、awk、egrep(上)

一、知识梗概 二、正则表达式 定义&#xff1a;正则表达式是一种强大的文本处理工具&#xff0c;用于在文本中搜索符合特定模式的字符串。它由一系列特殊字符和普通字符组成&#xff0c;可以定义复杂的搜索模式。正则表达式被广泛应用于各种编程语言和文本处理工具中。 简单来…

antDesignVue 使用-持续更新

背景 vue3viteantdesignvuevue-router 1,全局完整注册 1.1下载antdesignvue npm i --save ant-design-vue 或者 npm install ant-design-vuenext --save 1.2在mian.ts中引入 import { createApp } from vue import { createPinia } from piniaimport App from ./App.vue …

微信跳转页面时发生报错

报错如下图所示&#xff1a; 解决方法&#xff1a;&#xff08;从下面四种跳转方式中任选一种&#xff0c;哪种能实现效果就用哪个&#xff09; 带历史回退 wx.navigateTo() //不能跳转到tabbar页面 不带历史回退 wx.redirectTo() //跳转到另一个页面wx.switchTab() //只能…

读书笔记:高效能人士的七个习惯

前言 恐惧感和不安全感 现代社会&#xff0c;太多的人饱受恐惧感的折磨。他们恐惧将来&#xff0c;恐惧失业&#xff0c;恐惧无力养家。这种弱点&#xff0c;常常助长了一种倾向&#xff1a;无论在工作时&#xff0c;还是回到家中&#xff0c;都倾向于零风险的生活&#xff0…

MathType2024中文网站7.9最新版本数学公式编辑器下载

MathType是一款专业的数学公式编辑器&#xff0c;由Design Science公司开发。它为用户提供了一个便捷的方式来创建和编辑复杂的数学公式&#xff0c;适用于各种文档和出版物。MathType与常见的文字处理软件和演示程序配合使用&#xff0c;能够在各种文档中加入复杂的数学公式&a…