IP 协议相关技术

在与 IP 协议相关的技术中,有一些重要且常见的技术,其中包括 DNS 域名解析、ARP 协议、DHCP 动态获取 IP 地址以及NAT 网络地址转换。这些技术在网络通信中起着关键的作用。

首先,DNS 域名解析是将人类可读的域名转换为 IP 地址的过程。当我们在浏览器中输入一个网址时,浏览器会向 DNS 服务器发送查询请求,以获取与该域名对应的 IP 地址。这个过程涉及到域名服务器的层级查询和缓存,以实现高效的域名解析。

其次,ARP(地址解析协议)是在局域网中解析 IP 地址与 MAC 地址之间对应关系的协议。当一台主机需要与另一台主机通信时,它会发送一个 ARP 请求广播,其中包含了想要知道的目标主机的 IP 地址。同一局域网中的其他设备会解析该 ARP 请求包,如果目标 IP 地址与自身 IP 地址一致,就会将自己的 MAC 地址添加到 ARP 响应包中,返回给发送方。操作系统通常会将第一次获取的 MAC 地址缓存起来,以便下次直接从缓存中找到对应 IP 地址的 MAC 地址,提高通信效率。

DNS

我们在上网时通常使用域名而不是IP地址,因为域名更容易记忆。这种技术的实现是通过DNS域名解析,DNS可以将域名自动转换为具体的IP地址。

在DNS中,域名使用句点进行分隔,例如www.server.com, 句点表示不同层次之间的界限。在域名中,靠右的位置表示层级越高。

由于域名是由外国人发明的,所以思维方式与中国人不同。例如,在表示一个城市地点时,外国人喜欢按从小到大的顺序(例如XX街道 XX区 XX市 XX省),而中国人喜欢按从大到小的顺序(例如XX省 XX市 XX区 XX街道)。根域位于最顶层,下一层是顶级域com,再下面是server.com。

因此,域名的层级关系类似于树状结构:

  • 根DNS服务器
  • 顶级域DNS服务器(com)
  • 权威DNS服务器(server.com)

在互联网中,根域的 DNS 服务器信息被广泛保存在所有 DNS 服务器中,这样任何一个 DNS 服务器都能够轻松地找到并访问根域 DNS 服务器。客户端只需连接到任意一台可用的 DNS 服务器,就能够通过这台服务器找到根域 DNS 服务器,并通过一系列的查询和响应,逐步找到位于下层的目标 DNS 服务器。这种分层的 DNS 服务器体系极大地提高了域名解析的效率和可靠性。

域名解析的工作流程可以描述如下:

首先,浏览器会检查自己的缓存中是否存有所请求域名的IP地址,如果存在则直接使用。如果缓存中没有,则浏览器会向操作系统的缓存请求,如果操作系统的缓存中存在,则返回给浏览器。如果操作系统的缓存中也没有,则浏览器会检查本机的域名解析文件 hosts,如果 hosts 文件中有对应的域名和IP映射关系,则返回给浏览器。

如果以上步骤都没有返回结果,浏览器会通过网络发送DNS请求到本地DNS服务器(也就是在TCP/IP设置中配置的DNS服务器地址)。

  1. 客户端发送DNS请求到本地DNS服务器,询问所需域名的IP地址,例如www.server.com。
  2. 本地DNS服务器接收到客户端的请求后,先在自己的缓存中查找是否存在对应的IP地址记录,如果有,则直接返回给客户端。
  3. 如果本地DNS服务器的缓存中没有所需的IP地址记录,它会向根域名服务器发送请求,询问该域名的顶级域名服务器的地址,例如.com顶级域名服务器的地址。
  4. 根域名服务器收到本地DNS服务器的请求后,发现该域名属于.com顶级域名,返回给本地DNS服务器.com顶级域名服务器的地址。
  5. 本地DNS服务器收到.com顶级域名服务器的地址后,向该顶级域名服务器发送请求,询问所需域名的权威DNS服务器的地址,即负责解析该域名的权威DNS服务器地址。
  6. 顶级域名服务器返回给本地DNS服务器所需域名的权威DNS服务器的地址。
  7. 本地DNS服务器向权威DNS服务器发送请求,询问所需域名的IP地址。
  8. 权威DNS服务器查询自己的记录,并将所需域名对应的IP地址返回给本地DNS服务器。
  9. 本地DNS服务器将IP地址返回给客户端。客户端使用获取到的IP地址与目标服务器建立连接。

至此,经过详细的解析过程,我们成功完成了 DNS 的解析过程。现在,让我来对整个过程进行总结,并将其以图示的方式呈现出来。

DNS(Domain Name System)域名解析的过程非常有趣,它与我们在日常生活中询问路线的过程非常相似,它只是为我们指引方向,而不是亲自带路。

需要注意的是,当我们申请域名时,并没有带上"www"前缀。这个前缀是在域名服务商的后台进行配置的。如果你不进行配置,域名是不会指向你自己的服务器的。此外,你还可以配置多种不同的前缀,以访问不同的服务。并不是更改前缀就需要再次申请一个新的域名。一旦在域名平台购买了域名,通常需要自行进行配置,具体步骤如下:

ARP

在传输一个 IP 数据报的时候,一旦源 IP 地址和目标 IP 地址确定,主机会通过查询「路由表」来确定 IP 数据包的下一跳。然而,网络层的下一层是数据链路层,因此我们还需要知道下一跳的 MAC 地址。主机的路由表中可以找到下一跳的 IP 地址,因此我们可以利用 ARP 协议来获取下一跳的 MAC 地址。

那么,ARP 是如何获取对方的 MAC 地址呢?

简言之,ARP 使用 ARP 请求和 ARP 响应这两种类型的数据包来获取对方的 MAC 地址。

在网络中,当主机需要与其他设备通信时,它会发送一个ARP请求。这个请求包含了主机想要知道的目标设备的MAC地址和对应的IP地址。当同一链路上的设备收到ARP请求后,会检查请求包中的目标IP地址是否与自己的IP地址匹配。如果匹配,该设备将自己的MAC地址放入ARP响应包中返回给主机。

为了提高效率,操作系统通常会将第一次获取到的MAC地址缓存起来,以便下次直接从缓存中获取对应IP地址的MAC地址。这样就不需要再发送ARP请求来获取MAC地址,从而节省了网络资源和时间。

总结

在与IP协议相关的技术中,存在一些非常重要且常见的技术。在本章节中,我们将主要讨论DNS域名解析以及ARP协议,这些技术在网络通信中扮演着关键的角色。

首先,DNS域名解析是将人类可读的域名转换为IP地址的过程。它采用了分层的域名服务器体系,以实现高效的域名解析。

其次,ARP(地址解析协议)用于在局域网中解析IP地址与MAC地址之间的对应关系,以获取下一跳的MAC地址。

在接下来的章节中,我们将详细讲解DHCP动态获取IP地址以及NAT网络地址转换技术。这些技术对于网络通信的顺利进行也具有重要的意义。

解密网络通信的关键技术(上):DNS、ARP、DHCP和NAT,你了解多少?的更多相关文章

  1. 基于隐私保护技术的DNS通信协议介绍

    本文提出了一种基于用户数据报协议的DNS传输中用户隐私保护的加密方法:DNSDEA.该方法采用PKI加密体系与DNS协议相融合,不仅解决了域名隐私保护问题,而且与传统DNS体系相兼容,保持了DNS系统 ...

  2. ARP 地址分类 NAT技术

    第1章 OSI回顾 1.1 TCP/IP协议族组成 应用层 主机到主机层   互联网层   网络接入层 1.2 总结应用层掌握的协议与端口号对应关系 http(80) telnet(23) ftp(2 ...

  3. 八大 IoT 安全关键技术解析

    IoT 设备的增长也伴随着网络攻击的风险的增长,因此在设计产品时就必须考虑到系统的安全. 高德纳咨询公司最近的报告预测,到 2020 年,全世界将有 200.4 亿的物联网设备相互连接,且平均每天约还 ...

  4. 5G关键技术评述

    业内重大事件: 张  平:无线通信领域专家,北京邮电大学教授,博士生导师,现任北京邮电大学无线新技术研究所(WTI)所长.泛网无线通信教育部重点实验室主任以及中德软件研究所副所长.张平教授是国家宽带无 ...

  5. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)

    一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...

  6. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  7. (1)RGB-D SLAM系列- 工具篇(硬件+关键技术)

    /*************************************************************************************************** ...

  8. Java Hotspot G1 GC的一些关键技术

    G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相 ...

  9. 以雅酷网为实例从技术上说说dedecms的seo优化要注意哪些?

    目前在做雅酷网 ,雅酷卡是雅酷时空公司的产品,我个人感觉用雅酷卡消费还是比较实惠的,而雅酷卡的特色便是雅酷健身卡,很多站长成天的趴电脑上,可以考虑办一张这样的卡,在周末的时候去健身中心活动活动,还是比 ...

  10. 5G关键技术研究方向

    对于还没体验4G移动通信魅力的国内的移动通信用户而言,5G也许还是镜中花,雾中月:但对于科研界而言,5G研究已经启程,三星电子5月份宣布,率先开发出了首个基于5G核心技术的移动传输网络,实现每秒1Gb ...

随机推荐

  1. 19.详解AQS家族的成员:CountDownLatch

    关注王有志,一个分享硬核Java技术的互金摸鱼侠 欢迎你加入Java人的提桶跑路群:共同富裕的Java人 今天我们来聊一聊AQS家族中的另一个重要成员CountDownLatch.关于CountDow ...

  2. NOIP模拟测试A3 赛后总结

    T1 谜之阶乘 可以发现题目要求我们求的实际上是若干个连续整数 \(c_i\) ,使得 \(\displaystyle \prod c_i = n\),通过打表可以发现这些连续整数的长度 \(d\) ...

  3. Go语言中的结构体:灵活性与可扩展性的重要角色

    1. 引言 结构体是Go语言中重要且灵活的概念之一.结构体的使用使得我们可以定义自己的数据类型,并将不同类型的字段组合在一起,实现更灵活的数据结构.本文旨在深入介绍Go语言中的结构体,揭示其重要性和灵 ...

  4. 微信小程序如何使用原生Websocket与Asp.Net Core SignalR 通信

    背景 如题,这可能算是.net 做小程序的服务端时,绕不开的一个问题,老生常谈了.同样的问题,我记得我2018/19年的一个项目的解决方案是: 修改官方的SignalR.js的客户端:把里面用到浏览器 ...

  5. 论文日记一:AlexNet

    1.导读 ALexNet在2012图像识别竞赛中ILSVRC大放异彩,直接将错误了降低了近10个百分点. 论文<ImageNet Classification with Deep Convolu ...

  6. langchain:Prompt在手,天下我有

    目录 简介 好的prompt 什么是prompt template 在langchain中创建prompt template Chat特有的prompt template 总结 简介 prompts是 ...

  7. 5.2 基于ROP漏洞挖掘与利用

    通常情况下栈溢出可能造成的后果有两种,一类是本地提权另一类则是远程执行任意命令,通常C/C++并没有提供智能化检查用户输入是否合法的功能,同时程序编写人员在编写代码时也很难始终检查栈是否会发生溢出,这 ...

  8. Python 运行 shell 命令的一些方法

    哈喽大家好,我是咸鱼 我们知道,python 在自动化领域中被广泛应用,可以很好地自动化处理一些任务 就比如编写 Python 脚本自动化执行重复性的任务,如文件处理.数据处理.系统管理等需要运行其他 ...

  9. MIT6.s081/6.828 lectrue1:Introduction and examples

    目前课程官网能够查到 2020,2021.2022 秋季的课程表,但是视频都是 2020 年录制的那一版 简单复习+回顾下自己的 OS 学习之旅 参考资料: 官网:https://pdos.csail ...

  10. Linux: rsyslog.conf 配置

    refer to: https://www.debian.org/doc/manuals/debian-handbook/sect.syslog.en.html 日志子系统 Each log mess ...