网络层(IP协议)

文章目录

  • 网络层
    • `IP`协议
      • `IP`协议报头
        • 32位源`IP`地址和目的`IP`地址:
          • 为了解决`IP`地址不够用的情况
      • `IP`地址管理
        • 子网掩码
        • 特殊`IP`
      • 路由选择(简介)

网络层

网络层主要负责地址管理和路由选择.代表协议就是IP协议.

IP协议

IP协议报头

IP协议报头

  • 4位版本: 4: 表示IPv4 ; 6: 表示IPv6

  • 4位首部长度: 描述IP报头有多长,4字节为基本单位,剩下都是选项的长度…

  • 8位服务类型: 说是8位其实只有4位有效.这四位只有一位是1,其他都是0.

    4位表示IP协议的四种形态/四种工作类型,IP的四种形态之间互相切换达到最优效果.

    • 最小延时
    • 最大吞吐量
    • 最高可靠性
    • 最小成本
  • 16位总长度: 描述了IP数据包(报头+数据载荷)的长度.

    • 总长度减去前面的IP报头长度,得到的就是由传输层传下来的完整的tcp/udp数据报长度.

    • 16位总长度是否意味着一个IP数据报,最大只能支持64KB?

      确实有这个限制,但是IP自身就支持对包的拆分和组装,分成多次不就可以了嘛.分成多个数据包,然后分别添加报头组装,然后将两个数据都交给数据链路层,由以太网封装为两个数据帧.接收方在数据链路层针对两个数据帧进行分用,得到两个ip数据报,交给网络层,网络层在进行重新拼接.

  • 16位标识: 同一个数据拆分为多个包,标识是一样的.

  • 13位片偏移: 标识了多个包的先后顺序

  • 3位标志位: 结束标志.看是否是所有包的最后一位.

  • 8位生存时间(TTL): 一个数据报在网络上能够传输的最大时间限制.不是秒,而是次数,代表在物理上两个节点上传输,每经过一个路由器转发,TTL -1 .如果一直减少到0,就认为这个包可以丢弃了.

  • 8位协议: 描述了当前载荷部分内容是属于哪个协议的,是TCP的还是UDP的.

  • 16位首部校验和: 只需要针对首部进行校验,载荷部分自身已经有校验和.

32位源IP地址和目的IP地址:

使用三个点把32位,4字节的数字给分隔开,分成四部分,每个部分使用0-255十进制整数表示.就叫做点分十进制.

地址: 期望每个设备都互不相同,但是32位无符号整数表示是有范围的,42亿9千万.但是期望使用这个表示各种联网设备肯定是不够用的.

为了解决IP地址不够用的情况
  1. 动态分配IP的技术(DHCP)

    并没有从根本上增加IP地址,只是提高了IP地址的利用率但是并没有从根本上增加IP地址的数量.

    DHCP的分配方式

    自动分配: 分配一个IP地址后永久使用

    手动分配: 由DHCP服务器管理员专门指定IP地址

    动态分配: 使用完后释放该IP,供其他客户机使用

  2. NAT网络地址转换.

    本质上是使用一个IP代替一批设备,大大提高了IP地址的利用率.比如在学校中网上购物之后,商家发快递的时候无需精确到某一个学生的具体位置,只需要使用学校的位置代称,然后使用学生的某些信息进行区分即可,比如可以使用端口号的方式区分一批局域网设备中的具体哪个设备进行标识区分即可.

    NAT技术把IP地址分为两个大类

    1. 内网IP(私有IP): 10.*; 172.16.*-172.31.*; 192.168.*
    2. 外网IP(共有IP): 剩下的都是公网IP

    NAT设备要求,公网IP必须是唯一的,私网IP可以在不同的局域网中重复出现.

    • 局域网中的IP: win+cmd: 输入ipconfig查看自己主机IP,假设就是192.168.24.1

    • 运营商提供的运营商IP: 可以浏览器搜索IP,获取自己设备运营商安排的公网IP,比如202.43.23.11.

    ​ 如果某个私网中的设备想要访问公网中的设备,就需要对应的NAT设备(路由器)进行映射,比如都替换为局域网入口设备的公网IP,从而完成网络访问.

    ​ 反之,当数据从公网设备发送回来时,入口设备进行接收,然后根据记录的表中<key,val>形式的映射<x设备目标公网IP,port>,找到局域网中的设备然后将数据中的目标IP替换为局域网中x设备的私网IP,然后进行定向发送即可.

    ​ 所以,NAT技术下不知道具体x设备的私有IP,只知道路由器的IP公网的设备是无法直接访问私网的设备的.

    NAT技术图示

  3. IPv6从根本上解决了IP地址不够用的问题.使用16字节128位进行表示.那么得到的IP地址数字就达到了 42亿的4次方,是一个很大的数字.

    地球上的沙子每个安排一个IP地址都是足够的,计算机首先是由好多类似沙子的东西做的,所以现在来看肯定是足够的.

    IPv6太贵了,并且和IPv4并不兼容.

IP地址管理

IP地址分为两部分,划分的目的就是为了组网.

  • 网络号:标识网段,局域网.保证互相相连的两个网段具有不同的标识.
  • 主机号:标识主机.同一个网段内,主机之间具有相同的网络号,但是必须有不通的主机号.

路由器: 都是有两个IP分别属于不通的网段,功能就是将两个局域网连接起来.都有WAN口和LAN口.

局域网场景如下:

image-20231125122546900

子网掩码

通过子网掩码可以区分出网络号和主机号.网络号不一定是前三个字节,是可以变化的,最常见的就是255.255.255.0

IP & 子网掩码 => 网络号

在有子网掩码之前,网段划分是写死的,如下图:

网段划分

特殊IP
  • IP地址中的主机地址全部设置为1,就成为了广播地址.比如192.168.1.255
  • 127.*IP地址用于本机环回,通常是127.0.0.1
  • 主机号为1的,比如192.168.0.1通常是网关IP,局域网入口出口的位置.
  • IP 地址的主机地址全部设置为0,就成为了网络号,代表这个局域网.

路由选择(简介)

​ 用处就是规划路径,相当于地图中的导航功能,应该怎么走.由于网络环境很复杂,任何一个节点都是无法感知到网络环境的全貌的,只认识邻居这一小部分网络的情况.如果要进行长路径转发,需要一边走,一边问路的方式规划.

​ 路由选择核心就是问路,每个路由器中都有一个记录周边信息的路由表,每次有一个IP数据经过路由器的时候就会看看表中是否有匹配信息,看看接下来怎么走,如果有就走,如果没有,就会有一个默认路径,大致方向是对的,沿着这个方向到达下一个路由器再问问…

​ 每次问一个路由器,TTL--,到0的时候这个IP数据包就会被丢弃.正常情况下TTL足以到达. 通过六个人就能找到世界上的任何人.

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

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

相关文章

今年的校招薪资真的让人咋舌!

秋招接近尾声&#xff0c;各大公司基本也陆续开奖了。这里整理了部分公司的薪资情况&#xff0c;数据来源于 OfferShow 和牛客网。 ps&#xff1a;爆料薪资的几乎都是 211 和 985 的&#xff0c;并不是刻意只选取学校好的。另外&#xff0c;无法保证数据的严格准确性。 淘天 …

[每周一更]-(第74期):Docker-compose 部署Jenkins容器-英文版及错误纠错

1、前文概要 通过物理机部署Jenkins前文已经讲过&#xff08;地址&#xff1a;[Jenkins] 物理机 安装 Jenkins&#xff09;&#xff0c;也已经公司内部平稳运行若干年&#xff0c;考虑到容器化的使用场景&#xff0c;部分项目都采用容器运行&#xff0c;开始考虑部署容器化的J…

tinyViT论文笔记

论文&#xff1a;https://arxiv.org/abs/2207.10666 GitHub&#xff1a;https://github.com/microsoft/Cream/tree/main/TinyViT 摘要 在计算机视觉任务中&#xff0c;视觉ViT由于其优秀的模型能力已经引起了极大关注。但是&#xff0c;由于大多数ViT模型的参数量巨大&#x…

zlmediakit实现rtsp流服务器

本次实现是将内存中的H264数据经过zlmediakit实现为rtsp流。 我是用的是CAPI的方式&#xff0c;将zlmediakit作为一个sdk嵌入到自己的程序中而不是作为一个独立的进进程服务。 1.编译完成zkmedialit后会得到bin include lib三个文件夹如图 其中bin中的MediaServer是作为独立的…

在新疆乌鲁木齐的汽车托运

在新疆乌鲁木齐要托运的宝! 看过来了 找汽车托运公司了 连夜吐血给你们整理了攻略!! ⬇️以下&#xff1a; 1 网上搜索 可以在搜索引擎或专业的货运平台上搜索相关的汽车托运公司信息。在网站上可以了解到公司的服务范围、托运价格、运输时效等信息&#xff0c;也可以参考其他车…

Hive内置表生成函数

Hive内置UDTF 1、UDF、UDAF、UDTF简介2、Hive内置UDTF 1、UDF、UDAF、UDTF简介 在Hive中&#xff0c;所有的运算符和用户定义函数&#xff0c;包括用户定义的和内置的&#xff0c;统称为UDF&#xff08;User-Defined Functions&#xff09;。如下图所示&#xff1a; UDF官方文档…

Proto3语法详解01

1.字段规则 消息的字段可以用下面几种规则来修饰: ●singular: 消息中可以包含该字段零次或一次(不超过一次)。proto3语法中&#xff0c;字段默认使用该 规则。 ●repeated :消息中可以包含该字段任意多次(包括零次)&#xff0c;其中重复值的顺序会被保留。可以理 解为定义了一…

MYSQL基础知识之【数据类型】

文章目录 前言标题一数值类型日期和时间类型字符串类型后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Mysql &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错…

基于51单片机的FM数字收音机系统电路设计

**单片机设计介绍&#xff0c;基于51单片机的FM数字收音机系统电路设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的FM数字收音机系统是一种用于接收和播放FM广播信号的设备&#xff0c;以下是一个基本的电路设…

LeetCode OJ循环队列(C语言)

1.题目的初步分析 我们分析上述题目的时候会发现题目非常的长&#xff0c;不好整理思路&#xff0c;我这里可以大致的将本题的几个核心点说出来&#xff1a; 1.队列的思路 循环队列说来说去不还是队列嘛&#xff0c;那么队列的基本操作增删查改、以及队列的基本结构肯定都是不能…

sql查询优化实际案例

1、第一步&#xff1a;sql优化 正对于海量数据的查询优化&#xff0c;且外键关联比较多的情况&#xff0c;通常情况是下sql层面的优化&#xff0c;有些时候是由于sql不合理的编写导致&#xff0c;如尽量少使用sql内查询等 如&#xff1a;避免使用 left join (select * form …

排序算法-----基数排序

目录 前言 基数排序 算法思想 ​编辑 算法示例 代码实现 1.队列queue.h 头文件 2.队列queue.c 源文件 3.主函数&#xff08;radix_sort实现&#xff09; 算法分析 前言 今天我想把前面未更新完的排序算法补充一下&#xff0c;也就是基数排序的一种&#xff0c;这是跟…