计算机网络笔记再战——理解几个经典的协议5——围绕IP的几个辅助协议

server/2025/2/6 18:19:46/

目录

DNS

DNS查询

ARP

ICMP

DHCP

NAT


DNS

没人喜欢天天背诵,输入一场串IP!我们需要一个稍微有含义一点的名称——比如说www.google.com来标记我访问的是谷歌,而不是一大长串的IP地址!域名服务解析就是一个完成这样的功能的一个协议。我们上面给出的网址就是一个域名。

DNS查询

我们现在知道,一个域名映射了一个IP,问题是,一个域名映射了一个怎样的IP呢?这个是需要向DNS服务器查询的。我们向DNS服务器发起请求,指望从一个抽象的DNS服务器种获取可以访问的域名。其实内部,则是先从本地DNS服务器进行查询,在逐步上报到一层又一层的服务器进行查询,直到存在一个DNS服务器知道这个域名的IP地址。

ARP

ARP(地址解析协议,Address Resolution Protocol)描述了IP地址对MAC地址的映射。它工作在数据链路层和网络层之间,主要目的是解决局域网中如何找到目标主机的物理地址问题。当一台计算机需要发送数据到局域网内的另一台计算机时,它需要知道目标计算机的MAC地址。假设发送方已经知道目标计算机的IP地址,但它并不直接知道该计算机的MAC地址。在这种情况下,ARP协议就发挥了作用。

ARP协议的工作过程大致如下:当一台计算机想要与同一局域网内的另一台计算机通信时,它会首先检查自己的ARP缓存(一个保存IP地址与MAC地址对应关系的表)。如果缓存中有目标IP地址的MAC地址映射,计算机就可以直接使用该地址发送数据帧。如果没有,发送方计算机会广播一个ARP请求包到局域网中,ARP请求包的内容是目标IP地址,并请求局域网上的所有设备回应该IP地址的MAC地址。所有接收到该ARP请求的设备都会检查自己的IP地址,只有目标IP地址与请求中的地址匹配的设备才会发送ARP响应包,响应包中包含该设备的MAC地址。发送方计算机收到ARP响应后,会将目标MAC地址缓存到自己的ARP缓存中,并使用该MAC地址来发送数据帧。

ARP协议有两种主要的消息类型:ARP请求和ARP响应。ARP请求用于在网络中查找某个IP地址对应的MAC地址,而ARP响应则是目标设备回传自己的MAC地址给请求设备。由于ARP请求是广播消息,所以每台计算机都能够收到,并且只有目标IP地址匹配的计算机会发送ARP响应。

ARP缓存是为了避免频繁进行ARP请求,每个计算机会存储一定时间内的IP-MAC地址映射。这个缓存的时间一般是几分钟,过期后会自动清除。ARP缓存中的条目有时也会因为网络的变化或者计算机的重新启动而失效。

ICMP

我们之前就见过这个老朋友了,现在来详细的聊一聊。我们知道IP本身并不存储状态,或者说,他对IP包是否到达了一无所知,必须要ICMP进行辅助控制。

ICMP的主要作用是向网络设备传递网络层的诊断信息、错误报告以及流量管理等信息。ICMP协议本身并不用于传输应用数据,它的设计目的是支持网络的稳定运行和故障排除。ICMP协议在IP协议族中作为一种辅助协议,与IP协议密切配合。它能够向源主机报告数据传输过程中遇到的问题,如目标不可达、超时等,帮助网络管理员了解和诊断网络的状态。常见的ICMP消息类型包括回显请求和回显应答(即ping命令的基础)、目的不可达消息、超时消息等。通过这些消息,网络设备能够向源主机提供有关路由或数据传输的详细信息。例如,当一个路由器无法转发某个数据包时,它会使用ICMP发送“目标不可达”消息,通知源主机。

ICMP消息通常包含一个类型字段和一个代码字段,类型字段标识消息的种类,代码字段则提供更具体的信息。在ICMP中,不同的消息类型和代码组合用于指示不同的网络事件,如传输中出现的错误或特定操作的响应。ICMP协议的结构一般由头部和数据部分组成,头部包含类型、代码和校验和,而数据部分则可能包含与出错的IP数据包相关的部分信息,帮助源主机定位问题。

ICMP除了用于错误报告外,还广泛用于网络诊断和测试工具中。最著名的应用就是ping命令,它通过发送ICMP回显请求消息并等待回显应答,来检查网络中主机的连通性。Traceroute(跟踪路由)工具则利用ICMP超时消息来确定数据包经过的路由路径,帮助分析网络延迟和路由问题。

DHCP

动态主机配置协议(DHCP)是一种网络管理协议,用于自动分配IP地址和其他相关网络配置信息给网络中的设备。通过DHCP,设备在连接到网络时能够自动获取所需的网络参数,如IP地址、子网掩码、默认网关和DNS服务器地址,从而实现快速、高效的网络接入。

DHCP的工作原理基于客户端-服务器模型。当一台设备(客户端)首次连接到网络时,它会发送一个DHCP发现消息(DHCP Discover),以寻找可用的DHCP服务器。DHCP服务器接收到该消息后,会向客户端提供一个IP地址租约(DHCP Offer),其中包含可用的IP地址和其他配置信息。客户端在接收到多个DHCP Offer后,通常会选择第一个收到的Offer,并向服务器发送一个DHCP请求消息(DHCP Request),以确认接受该IP地址。服务器在收到请求后,会发送一个DHCP确认消息(DHCP Acknowledgment),正式将IP地址分配给客户端,并完成整个配置过程。

此外,DHCP还支持为特定设备分配固定的IP地址(称为DHCP保留),这对于需要始终使用相同IP地址的设备(如服务器或打印机)非常有用。DHCP协议在IPv4和IPv6网络中都可以使用。在IPv4网络中,DHCP通常使用UDP端口67(服务器)和68(客户端)进行通信。而在IPv6网络中,DHCPv6使用UDP端口546(客户端)和547(服务器)。DHCPv6不仅提供了IPv6地址的自动分配功能,还可以分配其他IPv6相关的配置信息,如DNS服务器地址和前缀委派。

DHCP的优势在于其自动化和灵活性。通过自动分配IP地址,DHCP减少了手动配置的工作量,降低了配置错误的可能性。同时,DHCP支持动态地址分配,能够有效管理有限的IP地址资源,特别是在大型网络中。此外,DHCP还支持跨子网的地址分配,通过DHCP中继代理(DHCP Relay Agent),可以将DHCP请求从一个子网转发到另一个子网,从而扩展了DHCP的适用范围。

NAT

NAT(网络地址转换)是一种在计算机网络中广泛使用的技术,它的主要作用是允许多个设备共享一个公网IP地址进行访问。通常情况下,局域网(LAN)中的设备通过私有IP地址与外界进行通信,但这些私有IP地址无法直接在互联网上进行通信,因为它们并不被全球唯一标识。为了使得这些私有网络中的设备能够访问互联网,NAT技术会在路由器或防火墙等设备上工作,通过修改IP地址和端口号,将私有网络的流量转发到公网IP地址,从而实现内网与外网的互联。

在NAT的工作过程中,内网设备使用私有IP地址发送数据包,而路由器会将这些数据包的源IP地址转换成其自身的公网IP地址,并将端口号与设备的私有IP地址及端口号关联起来,形成一个映射表。当返回的响应数据包到达时,路由器根据这个映射表将数据包中的目标IP和端口地址转换回相应的私有IP和端口,从而将数据包转发到正确的内网设备。

NAT的常见类型包括静态NAT、动态NAT和端口地址转换(PAT)。静态NAT将每个私有IP地址映射到一个固定的公网IP地址,适用于需要稳定公网IP的情况。动态NAT则是将私有IP地址映射到一个可用的公网IP地址池中的某个IP上,适用于公网IP地址数量有限的场景。PAT,又称为源NAT或端口重用,是通过将多个内网IP地址映射到同一个公网IP地址,并通过不同的端口号区分不同的连接,从而实现多个设备共享一个公网IP地址。

NAT技术的优势在于它能够有效节约公网IP地址,提供了一定的安全性,因为外部网络无法直接访问内部的私有IP地址。通过这种方式,NAT不仅减少了公网IP的消耗,还能在一定程度上保护内网设备免受外部的直接攻击。然而,NAT也有一些局限性,主要表现在它可能导致某些基于IP的协议无法正常工作(例如,一些点对点协议、VoIP通信等)。此外,NAT还可能增加网络延迟,因为每个数据包都需要进行地址转换。


http://www.ppmy.cn/server/165480.html

相关文章

【gRPC-gateway】初探grpc网关,插件安装,默认实现,go案例

grpc-gateway https://github.com/grpc-ecosystem/grpc-gateway 作用 通过反向代理的方式,将grpc server接口转为httpjson api 使用场景 向后兼容支持grpc不支持的语言或客户端 单纯用grpc实现的服务端代码,只能用grpc客户端调用,&#…

服务器虚拟化实战:架构、技术与最佳实践

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 服务器虚拟化是现代 IT 基础设施的重要组成部分,通过虚拟化技术可以提高服务器资源利用率、降低硬件成本&am…

fastadmin加密生成token

安装git sudo yum install git 在项目中安装 firebase/php-jwt composer require firebase/php-jwt 注意:PHP7.4以上,安装fileinfo 如果还有问题在PHP配置里禁止: ;disable_functions passthru,exec,system,putenv,chroot,chgrp,chown,s…

大语言模型轻量化:知识蒸馏的范式迁移与工程实践

大语言模型轻量化:知识蒸馏的范式迁移与工程实践 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 摘要 在大型语言模型&#xff…

Java 中 LinkedList 的底层源码

在 Java 的集合框架中,LinkedList是一个独特且常用的成员。它基于双向链表实现,与数组结构的集合类如ArrayList有着显著差异。深入探究LinkedList的底层源码,有助于我们更好地理解其工作原理和性能特点,以便在实际开发中做出更合适…

GWO优化SVM回归预测matlab

灰狼优化算法(Grey Wolf Optimizer,简称 GWO),是由澳大利亚格里菲斯大学的 Mirjalii 等人于 2014 年提出的群智能优化算法。该算法的设计灵感源自灰狼群体的捕食行为,核心思想是对灰狼社会的结构与行为模式进行模仿。 …

基于机器学习鉴别中药材的方法

基于机器学习鉴别中药材的方法 摘要 由于不同红外光照射药材时会呈现不同的光谱特征,所以本文基于中药材的这一特点来判断其产地和种类。 针对问题一:要对附件一中所给数据对所给中药材进行分类,并就其特征和差异性进行研究。首先,我们读…

Python在线编辑器

from flask import Flask, render_template, request, jsonify import sys from io import StringIO import contextlib import subprocess import importlib import threading import time import ast import reapp Flask(__name__)RESTRICTED_PACKAGES {tkinter: 抱歉&…