网际协议 - 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数据包作为负载传输。这样,数据包就可以在一个网络协议的网络中传输到另一个网络协议的网络中,而中间的网络设备只需根据封装头部信息进行路由转发。

 


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录个人学习golang路线(如何学习golang,如何转golang)

最近好久没更,在看兔兔的博客,学习golang,兔兔的文章,有一定的编程经验 && 初学golang者,一定要看,如果是其他语言转golang,那就必须要看了,可以帮助你了解golang的语法&…

BC40056 Imports“SolidWorks.Interop.swconst”中指定的命名空间或类型不包含任何公共成员

BC40056 Imports“SolidWorks.Interop.swconst”中指定的命名空间或类型不包含任何公共成员,或者找不到该命名空间或类型。 问题描述原因分析 解决办法 ) 问题描述 严重性 代码 说明 项目 文件 行 警告 BC40056 Imports“SolidWorks.Interop.swconst”中指定的命名…

单链表就地逆置

算法思想&#xff1a;构建一个带头结点的单链表L&#xff0c;然后访问链表中的每一个数据结点&#xff0c;将访问到的数据结点依此插入到L的头节点之后。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef s…

ElasticSearch开发指北和场景题分析

前言 本篇是ES系列的第二篇&#xff0c;继上次的理论篇ElasticSearch理论体系构建后&#xff0c;带来了实战篇。实战篇来自于我对常见操作以及场景的分析总结&#xff0c;详细到每个步骤和理由&#xff0c;下一篇将是性能优化篇。 常用操作 以下操作均使用ES的API进行展示&a…

金融投贷通--功能测试分析与设计

金融投贷通功能测试分析与设计 测试点分析借款业务测试点投资业务测试点 测试用例借款业务测试用例投资业务测试用例 缺陷面试题 测试报告 测试点分析 借款业务测试点 投资业务测试点 测试用例 借款业务测试用例 借款成功&#xff08;主业务&#xff09;、借款成功&#xff…

Figma:如何在数据库规模四年增长近100倍的挑战中“活”下来?

在当今数字化飞速发展的时代&#xff0c;大数据的崛起已成为各行业不可或缺的重要驱动力。然而&#xff0c;随着数据量的激增&#xff0c;许多企业面临着巨大的挑战&#xff0c;尤其是在数据库管理和维护方面。Figma作为一家专注于设计协作领域的领先企业&#xff0c;在过去的四…

Tron波场区块链 | 使用Java将Tron钱包助记词转私钥 全网独门一份

如何使用Java将Tron钱包助记词转换为私钥? 本来想着这个问题挺简单&#xff0c;可是查了半天&#xff0c;不是&#xff0c;不止半天查了好长时间&#xff0c;看了半天官网文档&#xff0c;全网Java就没有实现的。 咋办。。。咋办呢&#xff1f; 好巧&#xff0c;官网我看到…

瑞吉外卖实战学习--5、新增员工功能

新增员工功能 效果图1、开发流程2、页面发送ajax请求,将新增员工的信息以json的形式提交给服务器2.1、在填写信息的时候会发现身份校验比较麻烦,可以在validate中将全局的校验方式去掉,方便填写2.3、看到接口未employee2.4、前端代码分析3、服务器接收到提交的数据并调用ser…

Kotlin 中的类和构造方法

Kotlin 中的类与接口和 Java 中的类与接口还是有区别的。例如&#xff0c;Koltin 中的接口可以包含属性声明&#xff0c;与 Java 不同的是。Kotlin 的声明默认是 final 和 public 的。此外&#xff0c;嵌套的类默认并不是内部类&#xff1a;它们并没有包含对其它外部类的隐式引…

【系统架构师】-第18章-安全架构设计

(1)信息泄露&#xff1a;信息被泄露或透露给某个非授权的实体。 (2)破坏信息的完整性&#xff1a;数据被非授权地进行增删、修改或破坏而受到损失。 (3)拒绝服务&#xff1a;对信息或其他资源的合法访问被无条件地阻止。 (4)非法使用(非授权访问):某一资源被某个非授权的人或…

第十五届蓝桥杯模拟考试II_物联网设计

反思&#xff1a; 本次模拟让我惊醒&#xff0c;写这个作品如同搭积木&#xff0c;在拼接的时候都要仔细检查这个积木是否出bug,确保没有问题再将其拼接到之前搭好的大模块之中&#xff0c;因为就是这样的题目我在处理过程中就遇到了BUG&#xff0c;原因竟出在输入模式要上拉&…

二十四种设计模式与六大设计原则(二):【门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式】的定义、举例说明、核心思想、适用场景和优缺点

接上次博客&#xff1a;二十四种设计模式与六大设计原则&#xff08;一&#xff09;&#xff1a;【策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式】的定义、举例说明、核心思想、适用场景和优缺点-CSDN博客 目录 门面模式【Facade Pattern】 定义 举…

Arthas线上排查问题流程

入门文档&#xff1a;trace | arthas 1、jar下载和启动 连接curl -O https://arthas.aliyun.com/arthas-boot.jar【wget https://arthas.aliyun.com/arthas-boot.jar】 。.../jdk/bin/java -jar arthas-boot.jar 22336【最好在这个目录启动,port可选】 选择进程序号 enter回车…

二分(二段性)

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 一.二分算法 二分算法一般用于具有二段性的问题&#xff0c;数据不一定具有单调性&#xff0c;所以单调可二分&#xff0c;可二分不一定就要单调。 二.整数二分 1. 模板一&#xff1a;将区间[l, r]划分为[l, mid] 和 [mid…

学生价,leetcode会员购买分析

最近想要购买leetcode会员&#xff0c;但不知道买啥好&#xff0c;打算用python可视化数据进行一个简单的分析 具体数据如下 curve 1: 首两月79元每月&#xff0c;后续连续包月59curve 2: 90天199curve 3: 365天365&#xff08;学生认证&#xff09; 这么看&#xff0c;数据…

FA模型切换Stage模型组件切换之ServiceAbility切换DataAbility切换

ServiceAbility切换 FA模型中的ServiceAbility对应Stage模型中的ServiceExtensionAbility。Stage模型下的ServiceExtensionAbility为系统API&#xff0c;只有系统应用才可以创建。因此&#xff0c;FA模型的ServiceAbility的切换&#xff0c;对于系统应用和三方应用策略有所不同…

AI制作一键生成模特换装照,电商蓝海副业供不应求

在电子商务领域&#xff0c;产品展示和模特试穿照片是至关重要的。在传统流程中&#xff0c;创建一张精美的商品主图通常需要摄影师在摄影棚里进行白底拍摄&#xff0c;接着设计师会进行图像设计处理。 公 重 号&#xff1a;老A程序站 对于更复杂且高端的商品展示&#xff0c…

测试小萌新都看得懂的使用JMeter进行压测

前言 需要先搭配好JMeter的环境并运行 准备一个被测试接口 对其进行压力测试 搭配JMeter的运行环境 1.安装jdk jdk安装过程会提供两次安装&#xff0c;第一次是安装jre&#xff0c;第二次是安装java。 我在D盘提前新建了2个文件夹&#xff0c;jre文件夹用于jre安装&#xff…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(3)复发

PS从入门到精通视频各类教程整理全集&#xff0c;包含素材、作业等 最新PS以及插件合集&#xff0c;可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制&#xff0c;今天先分享到这里&#xff0c;后续持续更新 中级教程 https://www.alipan.com/s/unii5YxtM8B 提…

【初阶数据结构】——牛客:OR36 链表的回文结构

文章目录 1. 题目介绍2. 思路分析3. 代码实现 1. 题目介绍 链接: link 这道题呢是让我们判断一个链表是否是回文结构。但是题目要求设计一个时间复杂度为O(n)&#xff0c;额外空间复杂度为O(1)的算法。 所以如果我们想把链表的值存到一个数组中再去判断就不可行了。 2. 思路…