IP协议相关技术

文章目录

  • IP协议相关技术
    • 仅凭IP无法完成通信
    • DNS
    • ARP

IP协议相关技术

仅凭IP无法完成通信

人们在上网的时候其实很少直接输入某个具体的IP地址。

在访问Web站点和发送、接收电子邮件时,我们通常会直接输入Web网站的地址或电子邮件地址等那些由应用层提供的地址,而不会使用由十进制数字组成的某个IP地址。因此,为了能让主机根据实际的IP包进行通信,就有必要实现一种功能—将应用中使用的地址映射为IP地址。

此外,在数据链路层也不使用IP地址。在以太网的情况下只使用MAC地址传输数据包。而实际上将众多IP数据包在网络上进行传送的就是数据链路本身,因此,必须了解发送端MAC地址。如果不知道MAC地址,那么通信也就无从谈起。

由此可知,在实际通信中,仅凭IP远远不够,还需要众多支持IP的相关技术才能够最终通信。一些IP的辅助技术,具体包括DNS、ARP、ICMP、ICMPv6、DHCP、NAT等。还包括如IP隧道、IP多播、IP任播、质量控制(Qos)以及网络拥塞的显示通知和Mobile IP技术。

DNS

我们平常在访问某个网站时不使用IP地址,而是用一串由罗马字和点好组成的字符串。而一般用户在使用TCP/IP进行通信时也不使用IP地址。能够这样做是因为有了DNS(Domain Name System)功能的支持。DNS可以将那串自动转换为具体的IP地址。这种DNS不仅适用于IPv4,还适用于IPv6。

IP地址不便记忆
TCP/IP网络中要求每一个互连的计算机都具有其唯一的IP地址,并基于这个IP地址进行通信。然而,直接使用IP地址有很多不便之处。例如,在进行应用操作时,用户必须指定对端的接收地址,此时如果使用IP地址的话应用就会有很多不便之处。因为IP地址是由一串数据序列组成,并不好记。

为此,TCP/IP世界中从一开始就已经有了一个叫做主机识别码的东西。这种识别方式是指为每台计算机赋予唯一的主机名,在进行网络通信时可以直接使用主机名称而无需输入一大长串的IP地址。并且此时,系统必须自动将主机名转换为具体的IP地址。为了实现这样的功能,主机往往会利用一个叫做hosts的数据库文件。如下图:
在这里插入图片描述

DNS的产生
在上述背景下,产生了一个可以有效管理主机名和IP地址之间对应关系的系统,那就是DNS系统。在这个系统中主机的管理机构可以对数据进行变更和设定。也就是说,它可以维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。

在应用中,当用户输入主机名(域名)时,DNS会自动检索那个注册了主机名和IP地址的数据库,并迅速定位对应的IP地址。而且,如果主机名和IP地址需要进行变更时,也只需要在组织机构内部进行处理即可,而没必要再向其它机构进行申请或报告。

有了DNS,不论网络规模变得多么庞大,都能在一个较小的范围内通过DNS进行管理。可以说DNS充分地解决了ARPANET初期遇到的问题。就算到现在,当人们访问任何一个Web站点时,都能够直接输入主机名进行访问,这也要归功于DNS。

域名的构成
在理解DNS规范时,首先需要了解什么是域名。域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。例如,仓敷艺术科学大学的域名如下:
kusa.ac.jp
域名由几个英文字母(或英文字符序列)用点号连接构成。在上述域名中最左边的“kusa”表示仓敷艺术科学大学(Kurashiki University of Science and the Arts)固有的域名。而“ac”表示大学(academy)或高等专科以及技术专门学校等高等教育相关机构。最后边的“jp”则代表日本(japan)。
在使用域名时,可以在每个主机名后面追加上组织机构的域名。例如,有pepper、piyo、kinoko等主机时,它们完整的带域名的主机名将呈如下形式:
pepper.kusa.ac.jp
piyo.kusa.ac.jp
kinoko.kusa.ac.jp
在启用域名功能之间,单凭主机名还无法完全管理IP地址,因为在不同的组织机构中不允许有同名的主机。然而,当出现了带有层次结构的域名之后,每一个组织机构就可以自由地为主机命名了。
在这里插入图片描述

域名服务器
域名服务器是指管理域名的主机和相应的软件,它可以管理所在分层的域的相关信息。其所管理的分层叫做ZONE。如下图,每层都设有一个域名服务器:
在这里插入图片描述
根部所设置的DNS叫做根域名服务器。它对DNS的检索数据功能起着至关重要的作用。根域名服务器中注册着根以下第1层域名服务器的IP地址。根域名服务器中,注册了那些管理的域名服务器的IP地址。反之,如果想要新增一个类似jp或org的域名或修改某个已有域名,就得在根域名服务器中进行追加或变更。

类似地,在根域名服务器的下一层域名服务器中注册了再往下一层域名服务器的IP地址。根据每个域名服务器所管理的域名,如果下面再没有其它分层,就可以自由地指定主机名称或子网名称。不过,如果想修改该分层的域名或重新设置域名服务器的IP地址,还必须得在其上层的域名服务器中进行追加或修改。

因此,域名和域名服务器需要按照分层进行设置。如果域名服务器宕机,那么针对该域的DNS查询也就无法正常工作。因此,为了提高容灾能力,一般会设置至少两个以上的域名服务器。一旦第一个域名服务器无法提供查询时,就会自动转到第二个甚至第三个域名服务器上进行,以此可以按照顺序进行灾备处理。

所有的域名服务器都必须注册根域名服务器的IP地址。因为DNS根据IP地址进行检索时,需要从根域名服务器开始按顺序进行。

DNS查询
那么DNS查询的机制是什么呢?用一个例子进行说明,图中kusa.co.jp域中的计算机想要访问网站www.ietf.org,此时的DNS查询流程如下图:
在这里插入图片描述
解析器为了调查IP地址,向域名服务器进行查询处理。接收这个查询请求的域名服务器首先会在自己的数据库进行查找。如果有该域名所对应的IP地址就返回。如果没有,则域名服务器再向上一层根域名服务器进行查询处理。因此,从根开始对这棵树按照顺序进行遍历,直到找到指定的域名服务器,并由这个域名服务器返回想要的数据。

解析器和域名服务器将最新了解到的信息暂时保存在缓存里。这样,可以减少每次查询时的性能消耗。

ARP

只要确定了IP地址,就可以向这个目标地址发送IP数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个IP地址所对应的MAC地址。

ARP概要
ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4,不能用于IPv6。IPv6中可以使用ICMPv6替代ARP发送邻居探索消息。

ARP:Address Resolution Protocol

ARP的工作机制
那么ARP又是如何知道MAC地址的呢?简单地说,ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。
如下图:
在这里插入图片描述
假定主机A向同一链路上的主机B发送IP包,主机A的IP地址为172.20.1.1,主机B的IP地址为172.20.1.2,它们互不知道对方的MAC地址。

主机A为了获得主机B的MAC地址,起初要通过广播发送一个ARP请求包。这个包中包含了想要了解其MAC地址的主机IP地址。也就是说,ARP请求包中已经包含了主机B的IP地址172.20.1.2。由于广播的包可以被同一个链路上所有的主机或路由器接收,因此ARP的请求包也就会被这同一个链路上所有的主机和路由器进行解析。如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包返回给主机A。

总之,从一个IP地址发送ARP请求包以了解其MAC地址,目标地址将自己的MAC地址填入其中的ARP响应包返回到IP地址。由此,可以通过ARP从IP地址获得MAC地址,实现链路内的IP通信。

根据ARP可以动态地进行地址解析,因此,在TCP/IP的网络构造和网络通信中无需事先知道MAC地址究竟是什么,只要有IP地址即可。

如果每发送一个IP数据报都要进行一次ARP请求以此确定MAC地址,那将会造成不必要的网络流量,因此,通常的做法是把获取到的MAC地址缓存一段时间。即把第一次通过ARP获取到的MAC地址作为IP对MAC的映射关系记忆到一个ARP缓存表中,下一次再向这个IP地址发送数据报时不需要再重新发送ARP请求,而是直接使用这个缓存表当中的MAC地址进行数据报的发送。每执行一次ARP,其对应的缓存内容都会被清楚。不过在清楚之前都可以不需要执行ARP就可以获取到想要的MAC地址。这样,在一定程度上也防止了ARP包在网络上被大量广播的可能性。

一般来说,发送过一次IP数据报的主机,继续发送多次IP数据报的可能性会比较高。因此,这种缓存能够有效地减少ARP包的发送。反之,接收ARP请求的那个主机又可以从这个ARP请求包获取发送端主机的IP地址及其MAC地址。这时它可以将这些MAC地址的信息缓存起来,从而根据MAC地址发送ARP响应包给发送端主机。类似地,接收到IP数据报的主机又往往会继续返回IP数据报给发送端主机,以作为响应。因此,在接收主机端缓存MAC地址也是一种提高效率的方法。

在这里插入图片描述

IP地址和MAC地址缺一不可
有些读者可能会提出这样的疑问:“数据链路上只要知道接收端的MAC地址不就知道数据是准备发送给主机B的吗,那还需要知道它的IP地址吗?”

乍听起来确实让人觉得好像是在做多余的事。此外,还有些读者可能会质疑:“只要知道了IP地址,即使不做ARP,只要在数据链路上做一个广播不就能发给主机B了吗?”那么,为什么既需要IP地址又需要MAC地址呢?

如果读者考虑一下发送给其它数据链路中某一个主机时的情况,这件事就不难理解了。如下图:
在这里插入图片描述
主机A想要发送IP数据报给主机B时必须得经过路由器C。即使知道了主机B的MAC地址,由于路由器C会隔断两个网络,还是无法实现直接从主机A发送数据报给主机B。此时,主机A必须得先将数据报发送给路由器C的MAC地址C1。

此外,假定MAC地址就用广播地址,那么路由器D也将会收到广播消息。于是路由器D又将该消息转发给路由器C,导致数据包被重复发送两次。

在以太网上发送IP包时,“下次要经过由哪个路由器发送数据报”这一信息非常重要。而这里的“下一个路由器”就是相应的MAC地址。

如此看来,IP地址和MAC地址两者缺一不可。于是就有将这两个地址相关联的ARP协议。

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

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

相关文章

Python克隆单个网页

网上所有代码都无法完全克隆单个网页,不是Css,Js下载不下来就是下载下来也不能正常显示,只能自己写了,记得点赞~ 效果如图: 源码与所需的依赖: pip install requests pip install requests beautifulsoup4…

【vector题解】连续子数组的最大和 | 数组中出现次数超过一次的数字

连续子数组的最大和 连续子数组的最大和_牛客题霸_牛客网 描述 输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。 要求:时间复杂度为 O(n),空间复杂度为 O(n) 进…

系列二、Shiro的核心组件

一、核心组件 # 1、UsernamePasswordToken 封装了用户的登录信息,使用用户的登录信息来创建Token # 2、SecurityManager Shiro的核心组件,负责安全认证和授权 # 3、Subject Shiro的一个抽象概念,包含了用户信息 # 4、Realm 开发者自定义的模块…

本地生活新赛道-视频号团购怎么做?

目前有在做实体行业的商家一定要看完,只要你进入了这个本地生活新的赛道,那你的生意自然会源源不断,那这个赛道又是什么呢? 这就是十月份刚刚上线的视频号团购项目,开通团购之后,就可以通过发短视频&#…

k8s:kubectl 详解

目录 1 kubectl 2 基本信息查看 2.1 查看 master 节点状态 2.2 查看命名空间 2.3 查看default命名空间的所有资源 2.4 创建命名空间app 2.5 删除命名空间app 2.6 在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-wl…

Kubernetes实战(四)-部署docker harbor私有仓库

1 Docker原生私有仓库Registry 1.1 原生私有仓库Registry概述 Docker的仓库主要分两类: 私有仓库公有仓库 共有仓库只要在官方注册用户,登录即可使用。但对于仓库的使用,企业还是会有自己的专属镜像,所以私有库的搭建也是很有…

HarmonyOS ArkTS基础知识

概述 上一节,学习了TypeScript的基础语法,而在鸿蒙开发当中,有基于自己的编程语言,便是ArkTS。它是一种声明式UI的编程范式的语言,开发框架如下图所示: 根据框架图,分析,我将它大致…

JS点击图片指定对象变色两种方法

要求&#xff1a;点击上面的颜色实现下面的图像变成相同的颜色 难点&#xff1a;对于js函数的this对象不太清楚如何传递 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>changeColor</title>&l…

SpringCloud 微服务全栈体系(十三)

第十一章 分布式搜索引擎 elasticsearch 二、索引库操作 索引库就类似数据库表&#xff0c;mapping 映射就类似表的结构。 我们要向 es 中存储数据&#xff0c;必须先创建“库”和“表”。 1. mapping 映射属性 mapping 是对索引库中文档的约束&#xff0c;常见的 mapping …

nodejs+vue+python+PHP+微信小程序南七街道志愿者服务平台的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

代挂单页网址发布页+加盟代理+APP下载页源码

代挂单页加盟代理网址发布页app下载页HTML单页版本&#xff0c;自行修改源码内文字。自行修改联系方式、登录地址&#xff01;上传即可使用。源码我已全部打包好&#xff0c;直接上传本站提供的源码&#xff0c;无后台&#xff0c;直接访问即可&#xff01; 源码下载&#xff…

springboot 项目升级 2.7.16 踩坑

记录一下项目更新版本依赖踩坑 这个是项目最早的版本依赖 这里最初是最初是升级到 2.5.7 偷了个懒 这个版本的兼容性比较强 就选了这版本 也不用去修改就手动的去换了一下RabbitMQ的依赖 因为这边项目有AMQP 风险预警 1.spring-amqp版本低于2.4.17的用户应升级到2.4.17 2.spri…

Go 接口:nil接口为什么不等于nil?

本文主要内容:深入了解接口类型的运行时表示层。 文章目录 一、Go 接口的地位二、接口的静态特性与动态特性2.1 接口的静态特性与动态特性介绍2.2 “动静皆备”的特性的好处 三、nil error 值 ! nil四、接口类型变量的内部表示第一种&#xff1a;nil 接口变量第二种&#xff1a…

自动驾驶算法(九):多项式轨迹与Minimun Snap原理与Matab代码详解

目录 1 为什么需要轨迹优化 2 代码解析 3 完整代码 1 为什么需要轨迹优化 我们利用前八篇所学的博客可以利用RRT、A*、遗传算法等设计出一条折线轨迹&#xff0c;轨迹优化就是在路径优化的基础上将折线优化成曲线&#xff0c;这样更加有利于无人机的飞行。 那么什么是多项式轨…

Mybatis(一)

1. Mybatis简介 MyBatis下载地址 1.1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c;iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github…

Go语言的Json序列化与反序列化、Goto语法、Tcp Socket通信

目录标题 一、Json序列化与反序列化1. 序列化2. 反序列化 二、Goto语法三、Tcp Socket1. 单客户端发送信息到服务端2. 服务端客户端通信 一、Json序列化与反序列化 1. 序列化 package mainimport ("encoding/json""fmt")type Person struct {Name string…

【c趣编程】输入一个整数,判断其有几位

目录 1题目要求&#xff1a; 2解题思路&#xff1a; 3代码如下所示&#xff1a; 4运行代码如下&#xff1a; 5总结&#xff1a; 1题目要求&#xff1a; 只用一个scanf输出一串数&#xff0c;不可以一个一个的输入并计数&#xff0c;那样太浪费时间了。 C语言是一门面向过…

GoLong的学习之路(二十二)进阶,语法之并发(go最重要的特点)(channel的主要用法)

这一章是接上一章内容继续&#xff0c;上一章说到协程也就是goroutine&#xff0c;如何使用它&#xff0c;这一张是讲一种数据结构。当然这个章节的数据结构非常重要。可以说这个数据结构就是为了方便协程&#xff0c;才制作出来的。 单纯地将函数并发执行是没有意义的。函数与…

MySQL -- 用户管理

MySQL – 用户管理 文章目录 MySQL -- 用户管理一、用户1.用户信息2.创建用户3.删除用户4.远端登录MySQL5.修改用户密码6.数据库的权限 一、用户 1.用户信息 MySQL中的用户&#xff0c;都存储在系统数据库mysql的user表中&#xff1a; host&#xff1a; 表示这个用户可以从…

河南开放大学与电大搜题微信公众号:携手共进,助力学习之路

作为河南省内颇具影响力和声誉的高等教育机构之一&#xff0c;河南开放大学一直致力于提供优质的教育资源和灵活的学习方式&#xff0c;以满足广大学习者的需求。而在这个追求知识的时代&#xff0c;学习者们尤其需要一个便捷、高效的工具来辅助学习。电大搜题微信公众号应运而…