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

网际协议 - IP

文章目录

目录

文章目录

前言

1 . 网际协议IP

1.1 网络层和数据链路层的关系

2. IP基础知识

2.1 什么是IP地址?

2.2 路由控制

3. IP地址基础知识

3.1 IP地址定义

3.2 IP地址组成

3.3 IP地址分类

3.4 子网掩码

IP地址分类导致浪费?

子网与子网掩码

3.5 CIDR与VLSM

3.6 全局地址和私有地址

5. IPV4首部

6. NDS

域名解析

域名的构成

域名服务器

7. ARP

工作机制

8 . DHCP

DHCP中继代理

拓展

IPV6

IP隧道

总结


前言

大家好,今天给大家介绍一下网络层中最重要的IP协议和一些辅助协议


 TCP/IP的核心是网络层。 这一层主要是由IP和ICMP两个协议组成

1 . 网际协议IP

IP协议属于OSI参考模型中的第三层 - 网络层。 因此IP协议被称之为网际协议。

网络层的主要作用是 "实现终端节点之间的通信" 。 这种终端节点之间的通信也被叫做 “点对点通信”。

在数据链路中解决的主要问题是数据在一段链路上的传输问题, 而网络层解决的则是数据在不同链路上传输的问题, 即在网络中的传输问题。

1.1 网络层和数据链路层的关系

数据链路层负责将数据帧从一个节点传输到另一个相邻节点,而网络层则负责将数据包从源节点传输到目标节点。数据链路层通过物理连接将相邻节点连接起来,而网络层则通过路由选择将不同网络之间连接起来。因此,网络层和数据链路层是相互依赖、相互配合的关系,共同构建了整个网络通信的基础。

以“Expedia”旅行网站为例,数据链路层负责在不同服务器和用户设备之间传输数据帧,类似于旅行社内部的信息传递;网络层则负责将数据包从源到目的地,类似于旅行规划者将客户从一个地方安全送达另一个地方。数据链路层和网络层共同构建了网络通信的基础,确保数据的可靠传输。

 总结: 

数据链路层控制数据在一段链路上的传递

网络层保证数据从发送端到达接收端,中间具体是如何传输的,它并不会理会


2. IP基础知识

2.1 什么是IP地址?

在计算机通信中, 为了识别通信双方, 必须要有一个类似于地址的识别码进行标识。

在数据链路层中我们使用MAC地址来标识一段链路中不同的物理主机, 在网络层中我们则是使用IP地址作为识别码, 用来标识网络中的不同主机。

因此在TCP/IP通信中所有的主机和路由器都必须要设定自己的IP地址

2.2 路由控制

假设在网络中有两个主机A和B, A想要给B主机发送数据包, 那么A发出的数据包怎么到达B呢? 即使数据碰巧正确的到达了B,那么B返回的响应还能碰巧的到达A吗? 

通过路由器实现路由控制

通过路由器最终可以实现数据正确的到达目的地

那么路由器是如何对数据包进行转发的呢?

路由其中存在一张路由控制表, 路由器是通过查表转发的方式来实现路由的

那么问题又来了,路由表是如何计算出来的? 或者说是如何配置的?

静态路由配置: 人工的方式

动态路由配置: 通过路由选择算法动态生成路由表(具体不展开)


3. IP地址基础知识

3.1 IP地址定义

IP地址由32位正整数来表示。 TCP/IP协议通信要求将IP地址分配给每个参与通信的主机,但是IP地址在计算机中是以二进制的方式进行处理, 与人类的记忆方式并不符合, 于是采用了一种表示方式对其进行优化, 规定每八位为一组, 分成四组, 每组之间以 . 隔开, 再将其转变为十进制数 - 点分十进制

 可以通过简单的计算得到, 其最大可以分配的IP地址数量为 4294967296 最多可以供43亿主机接入到互联网, 这在早期或许是够用的, 但是在现在已经远远不够了, 那么是如何解决这个问题的呢?(后面说)

3.2 IP地址组成

IP地址由 "网络标识" 和 "主机标识" 两部分组成

互联网是由大大小小不同的网络组成,每个网络中都会有其不同的主机, 通过网络标识我们可以轻松的找到该网络, 通过主机标识我们可以锁定该网络中的那个特定的主机

通过网络标识可以直接锁定网络进行转发

3.3 IP地址分类

  • A类地址:以0开头,范围从1.0.0.0到126.255.255.255,用于大型网络,可以容纳约16百万台主机。

  • B类地址:以10开头,范围从128.0.0.0到191.255.255.255,用于中型网络,可以容纳约6万台主机。

  • C类地址:以110开头,范围从192.0.0.0到223.255.255.255,用于小型网络,可以容纳约250台主机。

  • D类地址:以1110开头,范围从224.0.0.0到239.255.255.255,用于多播(Multicast)通信。


3.4 子网掩码

IP地址分类导致浪费?

IP地址分类是根据固定的规则来划分地址范围的,比如A类地址范围是1.0.0.0到126.255.255.255,B类地址范围是128.0.0.0到191.255.255.255等。这种固定划分可能导致某些网络获得了更多的IP地址资源,而另一些网络可能获得了比实际需要更多的IP地址,从而造成了IP地址资源的浪费。

就拿B类来说, 理论上一段链路允许6万5千多台计算机连接, 然而在实际情况中根本不存在这样的情况,这不就造成浪费了吗?  本来IP地址都不够用, 还要浪费!!

子网与子网掩码

子网是一个逻辑上的概念,用于将一个大的IP地址范围划分为多个小的网络。子网掩码用于确定一个IP地址属于哪个子网。子网掩码是一个32位的二进制数字,通常用点分十进制表示,例如:255.255.255.0。在子网掩码中,所有网络位都设置为1,所有主机位都设置为0。当一个IP地址和子网掩码进行逻辑与运算时,可以得到该IP地址所在的子网。

通过引入子网掩码, 一个IP地址可以不再受限于自己的类别, 而是可以通过子网掩码自由的指定自己网络标识长度!

对于子网掩码目前有两种表示方式, 一种是将IP和子网掩码分别放一行

另一种就是在IP地址后面拼接上 /+网络地址位数

3.5 CIDR与VLSM

由于A类地址过大, C类地址过小, B类地址因此出现严重匮乏, 为了解决这个问题, 人们开始放弃IP地址的分类, 采用任意长度分割IP地址的网络标识和主机标识。 这种方式就是 CIDR, 意为 "无类型域间选路"

根据CIDR可以将连续多个C类地址划分到一个较大的网络中。

VLSM是在CIDR基础上发展而来的技术,它允许在一个网络中使用不同大小的子网掩码。这样可以更有效地利用IP地址空间,避免浪费。VLSM通常用于大型网络中,可以根据不同子网的需求来分配不同大小的子网。

3.6 全局地址和私有地址

最开始的时候由于IP地址使用量不大, TCP/IP规定互联网中的每个主机和路由器都必须有一个唯一的IP地址。

然而对着互联网的普及, IP地址不足的问题日趋显著。 如果一直按照这个办法采用唯一地址的话,会有IP地址耗尽的危险。

于是衍生了一种新的技术, 它不需要为每一台主机或路由器分配一个固定的IP地址, 而是在必要的时候为相应数量的设备分配唯一的IP地址 - NAT技术

私有IP

私有IP地址是指在局域网内部使用,不直接暴露在公共互联网中的IP地址范围。私有IP地址用于内部通信和连接局域网内的设备,而不用于在互联网上进行通信。

范围

NAT技术就可以实现私有IP与全局IP的转换

5. IPV4首部

  • 版本(Version):4位,指示IPv4协议的版本号,通常为4。
  • 首部长度(Header Length):4位,指示IPv4首部的长度,以32位字(4字节)为单位,因此最小值为5。
  • 服务类型(Type of Service):8位,用于指定数据包的服务质量要求。
  • 总长度(Total Length):16位,指示整个IPv4数据包的长度,包括首部和数据部分。
  • 标识(Identification):16位,用于标识数据包的唯一性。
  • 标志(Flags):3位,用于控制数据包的分片和重组。
  • 分段偏移(Fragment Offset):13位,用于指示分段数据包相对于原始数据包的偏移量。
  • 生存时间(Time to Live):8位,指示数据包在网络中的生存时间,每经过一个路由器减1,直到为0时被丢弃。
  • 协议(Protocol):8位,指示数据部分使用的协议类型,如TCP、UDP等。
  • 首部校验和(Header Checksum):16位,用于检测首部在传输过程中是否发生错误。
  • 源IP地址(Source IP Address):32位,指示数据包的源IP地址。
  • 目标IP地址(Destination IP Address):32位,指示数据包的目标IP地址。

6. NDS

我们平时在访问网站时不会使用IP地址, 而是使用一个字符串来进行访问, 比如: www.baidu.com

TCP/IP网络要求每一个互联的计算机都有其唯一的IP地址, 并基于这个IP地址进行通信, 但是这个IP地址并不便于记忆, 因此产生了一个可以有效管理主机名和IP地址对应关系的系统 - DNS

DNS内部维护了一个用来表示组织内部主机名和IP地址之间对应关系的数据库。

域名解析

在浏览器中我们输入一个主机名, DNS会自动检索那个注册了主机名和IP地址的数据库, 并迅速定位对应的IP地址

域名的构成

域名是用来标识互联网上计算机或其他资源的名称。域名的构成通常由多个部分组成,每个部分之间用点号(.)分隔。以下是域名的构成要素:

  1. 顶级域(Top-Level Domain, TLD):顶级域是域名中最高级别的部分,通常表示国家、地区或特定类型的组织。例如,.com、.org、.net、.edu、.gov、.cn、.jp等。

  2. 二级域(Second-Level Domain, SLD):二级域是位于顶级域之下的部分,通常用于标识特定的组织、公司或个人。例如,在example.com中,"example"就是二级域。

  3. 子域(Subdomain):子域是位于二级域之下的部分,可以用来进一步细分网站的结构或组织。例如,在blog.example.com中,"blog"就是一个子域。

  4. 主机名(Hostname):主机名是域名中最底层的部分,用于标识特定的计算机或服务器。例如,在www.example.com中,"www"就是主机名。

分层结构


域名服务器

在互联网中,域名服务器构成了一个层次化的系统,包括根域名服务器、顶级域名服务器、权威域名服务器和本地域名服务器等不同类型的服务器。当用户发起域名解析请求时,域名服务器会根据查询的域名层级逐级向上查询,直至找到对应的IP地址。域名服务器的作用是确保互联网上的域名能够正确映射到对应的IP地址,从而实现网络通信和资源访问。

7. ARP

ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据包的网络设备对应的MAC地址。如果目标主机不在同一段链路上,可以通过ARP查找下一跳路由器的MAC,从而进行转发。

工作机制

 主机A为了获得主机B的MAC地址, 就需要通过广播发送一个ARP请求包, 这个包中包含了主机B的IP地址, 由于广播可以被同一段链路上的主机和路由器接收, 因此ARP请求包会被同一段链路上的主机和路由器进行解析。如果ARP请求包中的目标IP地址和自己的IP地址一致,就会把自己的MAC地址响应给主机A,反之则丢弃。

如果每发送一个IP数据包都需要进行一次ARP请求, 势必会造成不必要的网络流量, 为了解决这个问题, 通常是吧获取到的MAC地址缓存一段时间,存入一个叫做ARP缓存表的地方。

8 . DHCP

逐一为每一台主机设置IP地址是一件非常繁琐的事情。 特别是在使用移动设备的时候, 每移动到一个地方, 都需要重新设置IP地址。

为了实现自动配置IP地址, 统一管理IP地址分配, 就产生了一种协议 - 动态主机配置协议(DHCP), 有了DHCP, 计算机只要连接到互联网, 就可以进行TCP/IP通信。

DHCP中继代理

DHCP协议通常使用广播消息来进行IP地址分配和配置,但广播消息无法跨越子网边界。这就是DHCP中继代理发挥作用的地方。当一个客户端设备在一个子网中发送DHCP请求时,DHCP中继代理会接收该广播消息,并将其转发到其他子网中的DHCP服务器。DHCP服务器会收到这个消息,分配一个IP地址并将响应消息发送回DHCP中继代理,最终再由DHCP中继代理转发给客户端设备。

拓展

IPV6

IPv6(Internet Protocol version 6)是互联网协议的第六版,是当前互联网使用的下一代网络层协议。IPv6的设计目标是解决IPv4存在的地址枯竭、安全性、自动化配置等问题,并提供更大的地址空间和更好的性能。

  1. 更大的地址空间:IPv6采用128位地址,相比IPv4的32位地址,IPv6提供了更多的IP地址,可支持更多的设备连接到互联网。

  2. 改进的安全性:IPv6内置IPSec(Internet Protocol Security)协议,提供端到端的数据加密和认证功能,增强了网络通信的安全性。

  3. 简化的头部结构:IPv6头部相对IPv4头部更简洁,减少了路由器处理数据包的开销,提高了网络性能。

  4. 自动化配置:IPv6支持自动化的地址配置(如SLAAC),设备可以通过Router Advertisement消息获取IPv6地址和其他网络配置信息,简化了网络管理。

  5. 移动性支持:IPv6为移动设备提供了更好的支持,包括移动IP和移动路由等功能,使移动设备在网络中更容易地进行漫游。

  6. 多播和任播:IPv6对多播和任播进行了改进,支持更有效的多播传输和任播服务。

  7. 逐渐取代IPv4:随着IPv4地址的枯竭和IPv6的推广,IPv6逐渐成为互联网的主要协议,为未来互联网的发展提供了更好的基础。

IP隧道

IP隧道(IP tunnel)是一种在网络中传输数据包的技术,它通过在原始IP数据包的基础上封装另一种IP数据包,使得数据包可以在一个网络协议的网络中传输到另一个网络协议的网络中。

IP隧道技术的基本原理是在原始IP数据包的头部添加一个额外的封装头部,将原始IP数据包作为负载传输。这样,数据包就可以在一个网络协议的网络中传输到另一个网络协议的网络中,而中间的网络设备只需根据封装头部信息进行路由转发。

 


总结

以上就是这篇博客的主要内容了,大家多多理解,下一篇博客见!

相关文章:

网际协议 - IP

文章目录 目录 文章目录 前言 1 . 网际协议IP 1.1 网络层和数据链路层的关系 2. IP基础知识 2.1 什么是IP地址? 2.2 路由控制 3. IP地址基础知识 3.1 IP地址定义 3.2 IP地址组成 3.3 IP地址分类 3.4 子网掩码 IP地址分类导致浪费? 子网与子网掩码 3.5 CIDR与…...

DC-9靶场

一.环境搭建 1.下载地址 靶机下载地址:https://download.vulnhub.com/dc/DC-9.zip 2.虚拟机配置 设置虚拟机为nat,遇到错误点重试和是 开启虚拟机如下图所示 二.开始渗透 1. 信息收集 查找靶机的ip地址 arp-scan -l 发现靶机的ip地址为192.168.11…...

自定义类型(二)结构体位段,联合体,枚举

这周一时兴起,想写两篇文章来拿个卷吧,今天也是又来写一篇博客了,也是该结束自定义类型的学习与巩固了。 常常会回顾努力的自己,所以要给自己的努力留下足迹。 为今天努力的自己打个卡,留个痕迹吧 2024.03.30 小闭…...

MySQL5.7源码分析--解析

select语句会走的case COM_QUERY判断 具体流程如下: 1.获取网络包数据,拿到查询语句,放入thd->query alloc_query(thd, packet, packet_length) 2.先查询缓存,缓存命中直接返回结果,未命中则解析 功能集中在mys…...

windows10搭建reactnative,运行android全过程

环境描述 win10,react-native-cli是0.73,nodeJS是20,jdk17。这都是完全根据官网文档配置的。react-native环境搭建windows。当然官网文档会更新,得完全按照配置来安装,避免遇到环境不兼容情况。 安装nodeJS并配置 这里文档有详…...

小迪学习笔记(内网安全)(常见概念和信息收集)

小迪学习笔记(内网安全)(一) 内网分布图内网基本概念工作组和域环境的优缺点内网常用命令域的分类单域父域和子域域数和域森林 Linux域渗透问题内网安全流程小迪演示环境信息收集mimikatzLazagne(all)凭据信息政集操作演示探针主机…...

Python自动连接SSH

Python自动连接SSH 在 Python 中,可以使用 paramiko 模块来编写脚本自动执行 SSH 命令。paramiko 是一个用于 SSHv2 的 Python 实现,可以帮助你在脚本中进行远程执行命令。 首先,确保安装了 paramiko: pip install paramiko然后…...

机器学习实验------AGNES层次聚类方法

机器学习 — AGNES层次聚类方法 第1关:距离的计算 任务描述 本关任务:根据本关所学知识,完成calc_min_dist函数,calc_max_dist函数以及calc_avg_dist函数分别实现计算两个簇之间的最短距离、最远距离和平均距离。 import numpy as np def calc_min_dist(cluster1, clus…...

HBase常用的Filter过滤器操作

HBase过滤器种类很多,我们选择8种常用的过滤器进行介绍。为了获得更好的示例效果,先利用HBase Shell新建students表格,并往表格中进行写入多行数据。 一、数据准备工作 (1)在默认命名空间中新建表格students&#xf…...

容器安全与防御(德迅蜂巢)

通过容器可以快速的运行应用、迁移应用、快速集成、快速部署、也提高了系统的资源利用率,因此现在越来越多的企业把应用上云,来达到快速上线应用、方便运维的目的。容器安全也逐渐地被重视起来,了解容器如何检测当前企业环境内容器环境是否安…...

【面经八股】搜广推方向:面试记录(十一)

【面经&八股】搜广推方向:面试记录(十一) 文章目录 【面经&八股】搜广推方向:面试记录(十一)1. 自我介绍2. 实习经历问答4. 编程题5. 反问1. 自我介绍 。。。。。。 2. 实习经历问答 就是对自己实习事情要足够的清晰,不熟的不要写在简历上!!! 其中,有个 …...

第十四章 MySQL

一、MySQL 1.1 MySql 体系结构 MySQL 架构总共四层,在上图中以虚线作为划分。 1. 最上层的服务并不是 MySQL 独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。 2. 第二层的架构包括…...

C++项目——集群聊天服务器项目(七)Model层设计、注册业务实现

在前几节的研究中,我们已经实现网络层与业务层分离,本节实现数据层与业务层分离,降低各层之间的耦合性,同时实现用户注册业务。 网络层专注于处理网络通信与读写事件 业务层专注于处理读写事件到来时所需求的各项业务 数据层专…...

VBA语言専攻介绍(20240331更新)

VBA语言専攻简介 “VBA语言専攻”是大家汲取知识的源泉,是提高自己能力的净土,正如我对平台的介绍:社会的进步,源于对知识的尊重和敬仰。希望每一位学员,每一位关注平台的朋友,都能很好的利用这个平台来学…...

Golang- 邮件服务,发送邮件

依赖 go get -u github.com/jordan-wright/email文档 文档 示例代码 邮箱的相关配置 # email configuration email:port: 25 # 端口要配置25 否则可能出现EOF错误from: xxx1qq.comhost: smtp.qq.comis-ssl: truesecret: xxxxxnickname: 大锦余发送邮件代码 package utili…...

C语言:编译和链接

前言 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令)。第2种是执行环境,它用于实际执行代码。 目录 1.翻译环境1.1 预处理(预编…...

JavaEE 初阶篇-深入了解多线程安全问题(出现线程不安全的原因与解决线程不安全的方法)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 多线程安全问题概述 1.1 线程不安全的实际例子 2.0 出现线程不安全的原因 2.1 线程在系统中是随机调度且抢占式执行的模式 2.2 多个线程同时修改同一个变量 2.3 线…...

计算机网络⑦ —— 网络层协议

1. ARP协议 在传输⼀个 IP 数据报的时候,确定了源 IP 地址和⽬标 IP 地址后,就会通过主机路由表确定 IP 数据包下⼀跳。然⽽,⽹络层的下⼀层是数据链路层,所以我们还要知道下⼀跳的 MAC 地址。由于主机的路由表中可以找到下⼀跳的…...

正弦实时数据库(SinRTDB)的使用(7)-历史统计查询

前文已经将正弦实时数据库的使用进行了介绍,需要了解的可以先看下面的博客: 正弦实时数据库(SinRTDB)的安装 正弦实时数据库(SinRTDB)的使用(1)-使用数据发生器写入数据 正弦实时数据库(SinRTDB)的使用(2)-接入OPC DA的数据 正弦实时数据库(SinRTDB)…...

编译和链接知识点

为什么我们在vs等编译器上写出的代码通过运行就会实现相关功能呢? 解决这个问题的关键就是关于编译与链接的知识。 首先从大的分类里有两部分:编译和链接 而编译这一大的部分又分为预处理(也叫预编译),编译&#xf…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

pam_env.so模块配置解析

在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...