【网络】网络层协议——IP

news2024/10/4 23:28:36

目录

  • 网络层
  • IP协议
  • IP基础知识
    • IP地址
    • IP报头格式
    • 网段划分
      • CIDR
    • 特殊的IP地址
      • IP地址的数量限制
      • 私有IP地址和公有IP地址
  • 路由
  • IP总结

网络层

在复杂的网络环境中确定一个合法的路径。
在这里插入图片描述

IP协议

IP协议作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给最终的目标计算机。因此,IP能够让世界上任何两天计算机之间进行通信。

网络层IP:让主机具备一种能力,将数据从A主机送到B主机的能力!"实现终端节点之前的通信"这种终端节点之间的通信也叫 “点对点(end-to-end)通信”。

在这里插入图片描述

网络层提供的是:将数据从A主机跨网络送到B主机。TCP用来保证可靠传输。

IP基础知识

IP大致分为三大作用模块,分别是IP寻址,路由(最终节点为止的转发)以及IP分包与组包。

IP地址

在计算机通信中,IP地址是用于在"连接到网络中的所有主机中识别出进行通信的目标地址"。因此,在TCP/IP通信中所有主机或路由器必须设定自己的IP地址。

在这里插入图片描述

IP报头格式

在这里插入图片描述

  • 4位版本号:指定IP协议的版本。IPV4来说就是4
  • 4为头部长度:IP头部的长度是多少个32bit.也就是我们报头的长度。也就是length*4的长度。4bit表示最大的数字是15,因此IP的头部最长是60字节
  • 8位服务类型:3位优先权字段(已经弃用),4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要.
  • 16位总长度:IP数据报整体站多少个字节。
  • 16位标识:唯一表示主机发送的报文。如果IP报文在数据链路层被分片了,那么每一片里面的这个id都是相同的。
  • 3位标志字段:第一位保留,第二位位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片位置为0,其他是1(否则报文就不连续了)
  • 13为分片偏移:是分配相对于原始IP报文开始处的偏移,其实就是在表示当前分片在原报文中处在那个位置。实际偏移的字节数是这个值*8得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
  • 8位协议:表示上层协议的类型。
  • 8位生存时间(TTL):数据报到达目的地的最大报文跳数。一般是64.每次经过一个路由。TTL -=1,一直减到0还没到达,那么久丢弃了,这个字段主要是用来方式出现路由循环。由于网络的Bug或者对端主机不可达等不可控因素的存在,导致IP报文在网络中长时间游离而不消失。
  • 32位源IP地址和32位目的IP地址:表示发送端和接受端
  • 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。

网段划分

IP是如何找到对方的主机呢?

  • IP的构成:ip = 目的网络 + 目的主机 (FF:FF:FF:FF)
  • 网络号:保证相互连接的两个网段具有不同的标识
  • 主机号:在同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。

在这里插入图片描述

因此IP在路由的时候,先根据目的网络进行路由,找到目标网络之后,然后再根据目的主机的主机号,找到目的主机。

  • 不同的子网其实就是把网络号相同的主机放在一起
  • 如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网中的其他主机重复。

通过合理设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的IP地址都不相同

因此发送数据的本质:就是先要找到目标机器(目标网络+目标主机)找的本质就是排除的过程!而子网划分可以一次排除一大批的子网。便于查找–查找目标主机的效率提高

CIDR

为了解决IP不够的问题,引入一个额外的子网掩码来区分网络号和主机号。

  • 子网掩码也是一个32位的正整数,通常用一串"0"来结尾
  • 将IP地址和子网掩码进行"按位与"操作,得到的结果就是网络号

举例:
在这里插入图片描述

因此,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。

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

特殊的IP地址

  • 将IP地址中的主机地址全部设为0,就成为了网络号,代码这个局域网
  • 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
  • 127.*的IP地址用于本地环回(loop back)测试,通常是127.0.0.1

在这里插入图片描述

IP地址的数量限制

我们知道,IP地址(IPV4)是一个4字节32位的正整数,那么一共只有2的32次方个IP地址,大概是43亿左右。而TCP/IP协议规定,每个主机都需要有一个IP地址。

这意味着,一共只要43亿台主机能接入网络么?

实际上,由于一个特殊的IP地址的存在,数量远不足43亿,另外IP地址并非是按照主机台数来配置的。而是每一个网卡都需要配置一个或多个IP地址

CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率,减少了浪费,但是IP地址的绝对上限并没有增加),仍然不是很够用,这时候有三种方式来解决:

  • 动态分配IP地址:只给接入网络的设备分配IP地址。因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的
  • NAT技术
  • IPV6:IPV6并不是IPV4的简单升级版。这是互不相干的两个协议。彼此并不兼容;IPV6用16字节128位来表示一个IP地址。但是目前IPV6还没有普及。

私有IP地址和公有IP地址

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址。

那么私有IP是如何解决IP不足这件事情呢?

  • 10.* 前8位是网络号,共16,777,216个地址
  • 172.16.到172.31.前12位是网络号,共1048576个地址
  • 192.168.* 前16位是网络号,共65536个地址

包含在这个范围中的,都成为私有IP,其余的则称为全局IP(或公网IP)

在这里插入图片描述

  • 一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)
  • 路由器LAN口连接的主机,都从属于当前这个路由的子网中
  • 不同的路由器,子网IP其实都是一样的(通常都是192.168.1.1)子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了
  • 每一个家用 路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会有很多级,最外层的运营商路由器,WAN口IP就是一个公网IP了
  • 子网内的主机需要和外网进行通信时,路由器将IP首部中的 IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包中的IP地址称为一个公网IP,这种技术称为NAT(网络地址转换)局域网中的数据,发送到公网,是需要不断替换原IP来完成的 – NAT技术
  • 如果希望我们自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在一台具有外网IP的服务器上,这样的服务器可以在阿里云/腾讯云进行购买。

路由

在复杂的网络结构中,找出一条通往终点的路线

路由的过程,就是一跳一跳(Hop by Hop) “问路” 的过程

所谓 “一跳” 就是数据链路层中的一个区间,具体在以太网中指给源MAC地址到目的MAC地址之间的帧传输区间

IP数据包的传输过程也和问路一样

  • 当IP数据包,到达路由器时,路由器会先查看目的IP
  • 路由器决定这个数据包是能直接发给目的主机还是需要发送给下一个路由器
  • 依次反复,一直到达目的IP地址

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

在这里插入图片描述

  • 路由表可以使用route命令查看

  • 如果目的IP命令中了路由表,可以直接转发即可

  • 路由表中的最后一行主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其他行都不匹配时,就按缺省路由条目规定的接口发送到一跳地址

在这里插入图片描述
在这里插入图片描述

  • 路由表的Destination是目的网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是发送接

    口,Flags中的U标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发;

IP总结

  1. 熟悉IP的报头,理解IP的作用和分片和组装
  2. 理解网段划分。构建网络宏观图 网段划分是干什么,谁做的,怎么做

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

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

相关文章

对USB协议的通俗理解

目录简介背景特点版本USB数据流模型总线拓扑结构USB通信流端点管道电气标准USB接口类型USB Type-AUSB Type-BUSB Type-CPIN脚定义4PIN9PIN5PIN24PIN16PIN6PINUSB数据传输相关概念通讯方式通讯方向同步方式帧和微帧USB数据格式域包令牌包数据包握手包特殊包事务IN事务OUT事务SET…

BM37-二叉搜索树的最近公共祖先

题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己…

CSC国家公派项目网上申报今天启动/附应提交材料及说明

今天(4月10日)是2023年国家公派高级研究学者、访问学者、博士后项目开始申报的日期,知识人网小编提醒申请者关注,同时附上该项目的应提交材料及说明。 根据国家留学基金委(CSC)通知精神,2023年国…

typora和C51开发环境

经过查阅,可以用wiz和typora联动的方式记录笔记,这样一个文件夹里既可以用typora也可以用内置编辑器(一种富文本编辑器),注意同一个文件不能用不同的编辑器,否则会错乱。以下,我列举了用typora的…

extern 关键字

参考https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html 1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定…

k8s调度器扩展(Scheduler Framework)、源码编译及部署

因为研究的需要,需要对K8S的调度器进行扩展,本文主要讲解了k8s调度器扩展的一个流程,其中包含源码修改、源码编译、调度器配置以及部署和本人所踩的一些坑,使用的k8s的版本为1.23.1 1.下载源码,在此选择v1.23.1版本&a…

大数据之Spark部署模式

文章目录前言一、Spark的部署模式(一)Client模式1. Standalone集群下的Client模式2. Spark On Yarn集群下的Client模式(二)Cluster模式1. Standalone集群下的Cluster模式2. Spark On Yarn集群下的Cluster模式总结前言 #博学谷IT学…

c++头文件、namespace 的理解、#include、 编译模式

namespace C 命名空间 | 菜鸟教程 C命名空间(名字空间)详解 作用:多写在头文件中,用于多个头文件的变量函数出现重命名。 namespace中可以定义变量,函数,类等等,也可以写声明,来…

牛客网 HJ28 素数伴侣【二分图匹配,匈牙利算法】困难

描述 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的 N ( N 为偶数)个正整数中挑选出若干对组成“素数伴侣”&am…

一种用于水位量测的浮子水位计

简介 浮子式水位传感器(带水位显示)是集机、电技术于一体的数字化传感器。通过输出轴的角度位移量转换成相应的数字量,可以高精度测量被测液位高度,能确认准确位置。具有断电记忆功能。 其工作原理就是:水位传感器测轮…

二叉搜索树(BSTree)

目录 一、二叉搜索树 二、二叉搜索树的接口及实现 1、二叉搜索树的查找 2、二叉搜索树的插入 3、二叉搜索树的删除 三、二叉搜索树的递归版本 本期博客主要分享二叉搜索树的底层实现。(主要是笔记,供自己复习使用😂) 一、二叉搜索树 二叉搜索树(B…

Github创建组织(organization)

目录 前言 Github上创建组织的详细步骤 前言 创建 Github 组织(Organization)可以让你和你的团队共享代码,更好地管理和协作开发项目。Github 组织(Organization)是一个非常有用的工具,可以让开发者协同…

stm32cubemx IAP升级(一)

stm32cubemx IAP升级- Bootloader的制作 板卡:Nucleo-L412 平台:macbook pro 工具:vscode stm32cubemx stm32cubeProgramer cmake toolchain 分区 L412 自带128K的flash,所以我们可以这样分区, printf(“| flash pr…

crypto-js AES-CTR 实现密文前缀式局部解密细节 踩坑点

项目有需求,长明文经过AES-CTR模式加密后,在解密的时候,密文不能直接得到,每次通过某些方法尝试后,只能得到一块密文(按顺序),所以只能一块一块的拼接解密。在使用crypto-js这个库的…

WooCommerce可扩展性:如何扩大您的WooCommerce商店

有了合适的人和技术,WooCommerce可扩展性绝对是很大的! 事实上,使用WooCommerce作为您的电子商务平台,您的在线商店的规模可以与您的目标和愿望一样大! 根据自定义模板开发高性能品牌电子商务网站 全球超500万个电商…

高效办公——Excel表格-02篇(if函数常见用法 + 条件格式的使用)

高效办公——Excel表格-02篇(if函数常见用法 条件格式的使用)1. if单条件简单用法1.1 简单需求1.2 实现方法2. if多条件使用(if-else的情况)3. if多条件使用(if(A && B)的情况)3.1 简单需求3.2 实现需求4. if多条件使用(if(A || B)的情况)5. 条…

亚马逊云科技“三步走”,实现区块链应用的快速开发

作为数字技术的代表之一,区块链技术正在被越来越多的企业所重视,并被引入到各行业的数字化转型中。根据中国通信院数据显示,目前中国区块链应用场景主要以金融和互联网为主,但应用范围呈现不断拓展的态势,政务数据共享…

day10_oop

今日内容 零、 复习昨日 一、面向对象的概念 二、面向对象编程 三、内存图 零、 复习昨日 晨考复习… 一、作业 package com.qf.homework;import java.util.Arrays;/*** --- 天道酬勤 ---** author QiuShiju* desc* ----------------* 引用数据类型的默认初始值null*/ public …

Nginx 正向代理、方向代理、端口转发

正向代理就是客户端代理,代理客户端,服务端不知道实际发起请求的客户端 正向代理中,proxy和client一般同一个lan或者网络可达,server与client一般不可达(缓存场景除外) 正向代理类似一个跳板机&#xff0c…

下一个“AI王炸”,别只盯着OpenAI,DeepMind也在憋大招

过去几个月,OpenAI风头无两,各大科技公司争先恐后地跟进大语言模型(LLM)这一技术路线。 对比之下,OpenAI的老对手DeepMind,显得有些低调和沉默。微软靠OpenAI打了一场胜仗,而谷歌推出的Bard翻了…