【Linux】数据链路层协议+ICMP协议+NAT技术

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:Linux

在这里插入图片描述


目录

  • 👉🏻数据链路层
  • 👉🏻以太网
    • 以太网帧格式
    • 网卡
    • Mac地址对比ip地址
  • 👉🏻MTU
    • MTU对IP协议的影响
    • MTU对UDP协议的影响
    • MTU对于TCP协议的影响
    • MSS和MTU的关系
  • 👉🏻ARP协议
    • ARP数据报的格式
  • 👉🏻DNS
    • 域名简介
  • 👉🏻ICMP协议
    • ICMP数据报文格式
    • ping命令
  • 👉🏻NAT技术
    • NAT IP转换过程

👉🏻数据链路层

🌈概念
数据链路层是OSI(开放系统互连)参考模型中的第二层,位于物理层和网络层之间。它的主要功能是在物理层提供的服务基础上,向网络层提供服务,确保数据在相邻节点间的可靠传输。以下是关于数据链路层的一些详细解释:

  1. 主要功能
  • 为网络层提供服务:数据链路层的基本任务是将源机器中来自网络层的数据传输到目标机器的网络层。它可以提供无确认的无连接服务(适用于实时通信或误码率较低的通信信道,如以太网)、有确认的无连接服务(适用于误码率较高的通信信道,如无线通信)和有确认的面向连接服务(适用于通信要求较高的场合)。
  • 链路管理:数据链路层连接的建立、维持和释放过程被称作链路管理,主要用于面向连接的服务。
  • 帧定界、帧同步与透明传输:为了区分数据帧,数据链路层在一段数据的首尾添加首部和尾部字符串,确保接收方能够明确地区分帧的起始和终止,实现透明传输。
  • 流量控制:限制发送方的数据流量,使其发送速率不超过接收方的接受能力。

TCP协议中的流量控制主要用于端到端的通信控制,而数据链路层中的流量控制则更关注于在相邻节点间的数据传输控制。

  • 差错控制:使用纠错码来检错与纠错,确保数据的正确性。
  1. 协议示例:数据链路层定义了在单个链路上如何传输数据,这些协议与被讨论的各种介质有关,例如ATM(异步传输模式)、FDDI(光纤分布式数据接口)等。
  2. 基本单位:数据链路层将数据组合成数据块,这种数据块在数据链路层中被称为“帧”,是数据链路层的传送单位
  3. 子层:数据链路层协议通常被分为两个子层:逻辑链路控制(LLC)协议和媒体访问控制(MAC)协议。

总的来说,数据链路层在计算机网络中扮演着至关重要的角色,它确保了数据在物理层之上的可靠传输,为网络层提供了必要的服务,是计算机网络中不可或缺的一部分。


什么是节点? 🤔
在数据链路层中提到的“节点”并不特指路由器,但路由器确实是网络中的一个重要节点。在数据链路层的上下文中,节点通常指的是网络中的任何能够发送和接收数据的设备或系统。

具体来说,数据链路层负责将数据从一个节点传输到相邻的另一个节点。这里的“节点”可以是:

  1. 终端设备:如计算机、打印机、手机等,它们通过网络接口卡(NIC)或其他网络接口连接到网络。

  2. 网络设备:如路由器、交换机、集线器等。路由器用于连接不同的网络段,并在它们之间转发数据包;交换机和集线器则用于在局域网(LAN)内部转发数据包。

  3. 通信链路:虽然通信链路本身不是节点,但它是连接两个节点的物理或逻辑路径。数据链路层定义了如何在这样的链路上传输数据。

在数据链路层,节点之间的通信是通过数据链路实现的。数据链路层的主要任务是将网络层传下来的IP数据报组装成帧,以帧为单位在链路上传输,并在接收端将帧重新组合成IP数据报。同时,数据链路层还负责处理物理地址(如MAC地址)和差错控制等问题。

总之,在数据链路层的上下文中,“节点”是一个相对宽泛的概念,它指的是网络中的任何能够发送和接收数据的设备或系统。路由器作为网络中的一个重要节点,在数据链路层也扮演着重要的角色。

👉🏻以太网

🌈概念
以太网是一种广泛使用的计算机局域网技术,它基于IEEE 802.3标准,规定了物理层的连线、电子信号和介质访问层协议等内容。以太网主要有两类:经典以太网和交换式以太网。经典以太网是以太网的原始形式,运行速度从3~10 Mbps不等;而交换式以太网则更为广泛应用,可运行在100、1000和10000Mbps的高速率下,分别以快速以太网、千兆以太网和万兆以太网的形式呈现。

以太网的工作原理基于CSMA/CD(带冲突检测的载波侦听多路访问)协议。在以太网中,计算机通过物理介质(如电缆)连接在一起,形成一个局域网。每个计算机都被称为一个节点,每个节点都有一个唯一的MAC地址。如果没有其他节点正在发送数据,该节点就可以开始发送数据。如果检测到冲突(即多个节点同时发送数据),节点会等待一段时间然后重新发送数据。

以太网的标准拓扑结构为总线型拓扑,但快速以太网为了减少冲突,提高网络速度和使用效率,常使用交换机来进行网络连接和组织,形成了星型拓扑结构。但在逻辑上,以太网仍然使用总线型拓扑和CSMA/CD的总线技术。

以太网的应用场景非常广泛,包括但不限于互联网接入、文件共享、联机游戏、视频流媒体、远程控制和VoIP电话系统等。它极大地促进了计算机之间的数据通信资源共享

总的来说,以太网是一种高效、可靠且应用广泛的局域网技术,为现代计算机网络的发展做出了重要贡献。

以太网帧格式

以太网帧格式是用于在以太网链路上传输数据包的标准格式。一个以太网帧主要由以下几个部分组成:
在这里插入图片描述

  1. 前导码(Preamble)和帧开始符(Start Frame Delimiter, SFD)

    • 前导码:由7个字节组成,用于帮助接收方同步时钟和进行比特同步。在快速以太网之前,前导码的位模式通常是10101010 10101010 10101010 10101010 10101010 10101010 10101010
    • 帧开始符:1个字节,标识以太网帧的开始。在快速以太网之前,帧开始符的位模式是10101011
  2. 目标地址(Destination Address)

    • 6个字节,用于指定接收该以太网帧的设备的MAC地址。
  3. 源地址(Source Address)

    • 6个字节,表示发送该以太网帧的设备的MAC地址。

源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的

  1. 类型(Type)或长度(Length)

    • 2个字节,对于Ethernet II帧格式,这部分表示上层协议的类型(如IPv4、ARP、RARP等)。对于IEEE 802.3原始格式,这部分表示帧的数据长度。
  2. 数据(Data)

    • 包含要传输的实际数据,其长度可变,但最小长度为46字节(当数据长度不足时,会填充额外的字节以达到最小长度)。最大长度(MTU)通常为1500字节,但在一些高速以太网中,可以使用巨型帧(jumbo frames),其长度可以达到9000字节或更多。
  3. 帧校验序列(Frame Check Sequence, FCS)

    • 4个字节(32位),是一个循环冗余校验(CRC)值,用于检测帧在传输过程中是否发生了错误。

以太网帧格式确保了数据在以太网链路上的可靠传输。当数据在以太网上传输时:
1.发送方将数据封装成以太网帧,并通过物理介质发送到接收方。
2.接收方在接收到以太网帧后,会检查帧校验序列以验证数据的完整性,并根据目标地址来确定是否接收该帧。
3.如果帧校验序列正确且目标地址与接收方的MAC地址匹配,则接收方将帧中的数据传递给上层协议进行处理。


🍈MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可
    能会冲突; 也有些网卡支持用户配置mac地址).

IP地址描述的是路途总体的 起点 和 终点;
MAC地址描述的是路途上的每一个区间的起点和终点

网卡

在这里插入图片描述

网卡(Network Interface Card,NIC)是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,网卡通常位于OSI(开放系统互连)模型的第1层和第2层之间。每一个网卡都有一个被称为MAC地址的独一无二的48位串行号,这个地址被写在网卡上的一块ROM中。

网卡的主要功能包括:

  1. 数据的封装与解封:发送时,网卡将上一层传递来的数据加上首部和尾部,形成以太网的帧;接收时,网卡将以太网的帧剥去首部和尾部,然后送交上一层。
  2. 链路管理:这主要通过CSMA/CD(带冲突检测的载波监听多路访问)协议来实现。
  3. 数据编码与译码:主要是进行曼彻斯特编码与译码,这是一种常用的二元码线路编码方式,被物理层使用来编码一个同步位流的时钟和数据。

此外,网卡的工作流程如下:

  • 当计算机需要发送数据时,它会将数据按照一定的格式进行封装,形成数据包,并通过计算机的总线系统发送到网卡。
  • 网卡将数据包转换成电信号,通过物理媒介(如网线)发送到目的地。
  • 当计算机收到数据时,网卡会将收到的电信号转换成数据包,并将数据包传递给计算机的操作系统进行处理。

网卡的种类可以根据其传输协议来分类,如以太网卡(Ethernet Adapter)、FC网卡(Fibre Channel HBA)和ISCSI网卡(ISCSI HBA)等。其中,以太网卡是最常用的一种,它使用IP协议进行数据传输,一般通过光纤线缆或双绞线与以太网交换机连接。

网卡的应用广泛,涵盖了多个行业和领域,如数据中心、高性能计算(HPC)、游戏行业和直播行业等。在这些应用中,网卡提供了必要的网络带宽,支持高速数据传输和大规模数据处理。

Mac地址对比ip地址

  • IP地址描述的是路途总体的 起点 和 终点;
  • MAC地址描述的是路途上的每一个区间的起点和终点

👉🏻MTU

MTU(Maximum Transmission Unit)是指最大传输单元,它是计算机网络中数据链路层的一个概念,表示在一条数据链路上能够传输的最大数据单元的大小,不同的数据链路层标准的MTU是不同的。MTU通常以字节为单位进行度量。

MTU在网络通信中扮演着重要的角色,其主要作用包括:

  1. 提高传输效率:通过调整MTU的大小,可以使网络设备在一次传输中承载更多的数据量,从而减少传输的分组数量,降低传输的开销和延迟,提高数据传输的速度。
  2. 减少网络拥塞:如果MTU设置得过小,会导致数据被分割为过多的小分组进行传输,增加了网络拥塞的可能性。而较大的MTU可以减少分组的数量,降低网络的拥塞程度,提高网络的吞吐量。
  3. 适应不同网络环境:不同的网络环境下,MTU的大小可能存在差异。通过设置合适的MTU,可以使网络设备适应不同的网络环境,保证数据的正常传输。

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500字节和1492字节。链路层的这个特性称为MTU。当IP层有一个数据包要传,而且数据帧的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),即把数据包分成若干片,这样每一片就都小于MTU。

MTU的测量方法可以通过在本地计算机上执行ping命令来测定。在DOS窗口中,可以使用类似“ping -f -l [数据包长度] [目标IP地址]”的命令进行测试,其中“数据包长度”是一个试探值,需要根据实际情况进行调整。通过多次测试,可以找到合适的数据包长度,进而确定MTU的值。

请注意,MTU的值并不是越大越好,而是需要根据具体的网络环境和需求来进行合理的设置。在配置传输大量数据流的服务器(如文件服务器和FTP服务器)时,需要注意MTU的配置,以确保数据传输的高效性和稳定性。

MTU对IP协议的影响

MTU(最大传输单元)对IP协议的影响主要体现在以下几个方面:

  1. IP数据报的分片当IP层要传输的数据包长度超过链路层所支持的MTU大小时,IP协议会将数据包进行分片。这是因为数据链路层在传输数据时,需要确保每个数据帧的大小不超过其MTU值。因此,IP协议会根据MTU的大小,将原始数据包拆分成多个较小的数据片(分片),每个分片的大小都小于或等于MTU。
  2. 传输效率:MTU的大小直接影响IP数据报的传输效率。如果MTU设置得太小,数据包需要被频繁地分片,这会增加传输的开销和延迟,降低传输效率。相反,如果MTU设置得较大,可以减少数据包的分片数量,降低传输开销和延迟,提高传输效率
  3. 网络拥塞:MTU的大小也与网络拥塞有关。当MTU设置得较小时,数据包需要被拆分成更多的分片进行传输,这会增加网络中的数据包数量,从而增加网络拥塞的可能性。而较大的MTU可以减少数据包的分片数量,降低网络拥塞程度。
  4. 数据传输的可靠性:IP协议本身不提供可靠的数据传输服务,即不保证数据包的顺序性和完整性。然而,当数据包被分片后,如果其中某个分片在网络中丢失或损坏,那么整个原始数据包在接收端就无法被正确重组。因此,MTU的大小也间接影响了数据传输的可靠性。
  5. 路径MTU发现:为了解决这个问题,IP协议提供了路径MTU发现(Path MTU Discovery)机制。该机制允许主机在发送数据包之前,先探测出从源主机到目的主机之间路径上的最小MTU值,然后据此调整数据包的大小,避免数据包的分片。这不仅可以提高传输效率,还可以减少因数据包分片而导致的网络拥塞和传输错误。

总之,MTU是网络通信中的一个重要参数,对IP协议的数据包传输有着显著的影响。合理地设置MTU可以提高传输效率、降低网络拥塞、提高数据传输的可靠性等。

MTU对UDP协议的影响

MTU(最大传输单元)对UDP(用户数据报协议)协议的影响主要体现在以下几个方面:

  1. 数据包大小与分片:UDP协议是一种无连接的传输层协议,它不对发送的数据包进行拆分或重新组装。因此,当UDP数据包的大小超过网络链路的MTU时,数据包在传输过程中会被底层协议(如IP层)进行分片。每个分片都会被当作一个独立的数据包进行传输,这可能会增加传输的开销和延迟,并可能增加数据包丢失的风险。
  2. 传输效率:MTU的大小对UDP的传输效率有直接影响。当MTU设置得较小时,UDP数据包更容易被分片,这会导致更多的数据包头开销和额外的处理时间。相反,当MTU设置得较大时,可以减少数据包的分片数量,提高传输效率。但是,如果MTU设置得过大,超过了网络链路的实际承载能力,也可能导致数据包丢失或传输错误。
  3. 网络拥塞:MTU的大小也与网络拥塞有关。当MTU设置得较小时,UDP数据包更容易被分片,导致网络中传输的数据包数量增加。这可能会增加网络拥塞的可能性,尤其是在网络带宽有限的情况下。相反,较大的MTU可以减少数据包的数量,降低网络拥塞的程度。
  4. 应用层的影响:对于使用UDP协议的应用程序来说,MTU的大小也会影响其性能和可靠性。例如,对于实时音频或视频流传输来说,较小的MTU可能会导致数据包的分片和传输延迟,影响用户体验。而较大的MTU可以减少分片数量,降低延迟,提高传输质量。

因此,在选择合适的MTU大小时,需要综合考虑网络链路的实际承载能力、应用程序的需求以及网络拥塞的情况。通过合理设置MTU大小,可以优化UDP协议的传输性能,提高数据传输的可靠性和效率。

MTU对于TCP协议的影响

MTU(最大传输单元)对于TCP(传输控制协议)的影响主要体现在以下几个方面:

  • TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(Max
    Segment Size);
  • TCP在建立连接的过程中, 通信双方会进行MSS协商.
  • 最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的
    MTU).
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值.
  • 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.
  • MSS的值就是在TCP首部的40字节变长选项中(kind=2);

MSS和MTU的关系

在这里插入图片描述

MSS(Maximum Segment Size,最大报文段长度)和MTU(Maximum Transmission Unit,最大传输单元)在网络通信中密切相关,它们之间的关系主要体现在以下几个方面:

  1. 定义与功能:MSS是TCP协议中的一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(不包括报文段头)。而MTU是数据链路层可以传输的最大数据包(不包含帧首部和尾部),表示网络设备(如路由器、交换机等)能够承载的最大数据块大小。
  2. 关系:MSS受限于MTU。由于TCP协议是在IP协议之上的,因此TCP报文段需要封装在IP数据报中进行传输。当TCP报文段加上IP首部和TCP首部后,其总长度不能超过MTU。因此,MSS的值通常是根据MTU的值减去IP首部和TCP首部的长度来确定的。具体的关系如下:在最好的情况下,即IP数据报和TCP报文段都只使用最小的首部,MSS = MTU - 20(IP首部) - 20(TCP首部) = MTU - 40;在最坏的情况下,IP数据报和TCP报文段都使用最大的首部长度,MSS = MTU - 60(IP首部) - 60(TCP首部) = MTU - 120。
  3. 作用与影响:MSS和MTU的大小都对网络性能有直接影响:
  • 的MSS值可以减少单个报文段的发送时间,提高网络吞吐量响应速度
  • 而较的MSS值可以减少报文段的数量降低网络负载传输延迟。MTU的大小则影响数据链路层一次能够传输的数据量,较大的MTU可以提高传输效率,减少网络拥塞。

综上所述,MSS和MTU在网络通信中扮演着不同的角色,但它们之间存在着密切的关联。合理设置MSS和MTU的值,对于优化网络性能、提高数据传输效率具有重要意义。

👉🏻ARP协议

当然,ARP(Address Resolution Protocol)协议是网络通信中的一个重要协议,主要用于解决IP地址到MAC地址的映射问题。在TCP/IP网络模型中,IP地址是网络层地址,用于标识网络中的设备;而MAC地址是数据链路层地址,用于在局域网内标识网络设备的接口。

当源设备(如计算机或路由器)想要发送数据给目标设备时,它知道目标设备的IP地址,但通常不知道其MAC地址。为了发送数据帧,源设备需要知道目标设备的MAC地址。这时,ARP协议就派上了用场。

以下是ARP协议的基本工作原理:

  1. ARP请求:源设备向本地网络发送一个ARP请求,该请求中包含目标设备的IP地址以及源设备的IP地址和MAC地址。
  2. ARP响应:如果本地网络上的某台设备拥有该IP地址(即目标设备),它会向源设备发送一个ARP响应,其中包含了目标设备的MAC地址。
  3. 缓存ARP信息:为了减少网络中的ARP请求数量,设备通常会缓存最近解析的ARP信息(即IP地址到MAC地址的映射)。缓存时间通常可配置,但通常为几分钟。
  4. 广播与单播:ARP请求通常是以广播方式发送的,以便本地网络上的所有设备都能接收到。而ARP响应则是以单播方式发送的,直接发送给请求源。
  5. 安全性:ARP协议本身没有内置的安全机制,因此容易受到ARP欺骗(ARP Spoofing)等攻击。这些攻击可能导致网络中断、数据泄露或其他安全问题。

总之,ARP协议是网络通信中的一个重要工具,它允许设备在不知道目标MAC地址的情况下,仅通过IP地址发送数据。然而,由于ARP协议的安全性限制,建议在网络中实施适当的安全措施以防止潜在的ARP攻击。


🥕什么是数据帧,它对比网络层的数据包多了什么?
数据帧(Data Frame)是网络通信中数据链路层传输的基本单位。在局域网中,数据帧由数据链路层(通常是网络接口卡NIC或软件驱动程序)负责创建和管理。数据帧包含发送和接收数据的网络设备的物理地址(MAC地址)、数据本身以及用于数据完整性和错误检测的控制信息。

一个典型的数据帧结构包括以下几个部分:

  1. 帧头(Frame Header):包含数据帧的元信息,如源MAC地址、目标MAC地址、帧类型(如以太网帧、令牌环帧等)等。这些信息对于网络设备识别和处理数据帧至关重要。

  2. 数据(Data):这是数据帧的主要部分,包含实际要传输的数据。在以太网帧中,数据部分的最大长度通常为1500字节(MTU,最大传输单元),但在某些情况下可以更小。

  3. 帧尾(Frame Trailer):包含帧校验序列(FCS,Frame Check Sequence)等控制信息,用于验证数据帧在传输过程中是否发生错误。FCS通常使用循环冗余校验(CRC)算法生成。

当发送设备想要发送数据时,它会将数据封装成一个或多个数据帧,并在数据链路层添加帧头和帧尾。然后,这些数据帧被发送到网络上,由接收设备的数据链路层接收并处理。接收设备会检查帧头和帧尾中的信息,以确保数据帧的完整性和正确性。如果数据帧在传输过程中发生错误,接收设备会丢弃该数据帧,并可能向发送设备发送一个错误消息。

需要注意的是,数据帧是数据链路层的概念,与网络层的数据包(Packet)和传输层的段(Segment)等概念不同。这些不同的协议层在TCP/IP协议栈中协同工作,以确保数据在网络中的可靠传输。

总的来说,数据帧在数据包的基础上增加了帧头帧尾等控制信息,并包含了更多与物理层相关的信息。这些数据帧在数据链路层进行传输,确保数据在局域网内的可靠传输

ARP数据报的格式

在这里插入图片描述
ARP(Address Resolution Protocol)数据报的格式通常包含以下字段:

  1. 硬件类型(Hardware Type):占2字节,硬件类型指链路层网络类型,1为以太网

  2. 协议类型(Protocol Type):占2字节,表示要映射的协议地址类型。对于IP地址,这个字段的值通常是0x0800(IPv4)或0x86DD(IPv6)。但在ARP请求和响应中,它通常用于标识ARP消息本身在网络层所使用的协议,其值为0x0806,表示ARP。

  3. 硬件地址长度(Hardware Address Length):占1字节,表示硬件地址(如MAC地址)的长度。对于以太网,这个字段的值是6。

  4. 协议地址长度(Protocol Address Length):占1字节,表示协议地址(如IP地址)的长度。对于IPv4地址,这个字段的值是4。

  5. 操作码(Opcode):占2字节,定义了ARP消息的类型。ARP请求的操作码是1,ARP响应的操作码是2。此外,还有其他的操作码,如RARP请求(3)和RARP响应(4),但RARP现在已不常用。

  6. 发送方硬件地址(Sender Hardware Address):占6字节(对于以太网),表示发送ARP消息的设备的硬件地址(MAC地址)。

  7. 发送方协议地址(Sender Protocol Address):占4字节(对于IPv4),表示发送ARP消息的设备的协议地址(IP地址)。

  8. 目标硬件地址(Target Hardware Address):占6字节(对于以太网)。在ARP请求中,这个字段通常被设置为全0,表示请求的目标MAC地址未知。在ARP响应中,这个字段包含目标设备的真实MAC地址。

  9. 目标协议地址(Target Protocol Address):占4字节(对于IPv4),表示ARP消息的目标设备的协议地址(IP地址)。

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况
是多余的,但如果链路层是其它类型的网络则有可能是必要的。

请注意,ARP数据报是在数据链路层传输的,因此它通常会被封装在一个数据链路层帧(如以太网帧)中。在以太网帧中,ARP数据报会被放置在帧的数据部分。封装后的帧包括帧头(包含目标MAC地址、源MAC地址和帧类型等)、ARP数据报和帧尾(通常是CRC校验码)。


🥕为什么帧头和数据报中都包含了MAC地址?

  • 帧头中的MAC地址:帧头中的MAC地址用于在局域网内将数据帧从源设备路由到目标设备。数据链路层根据帧头中的MAC地址来决定将数据帧发送到哪个网络设备。
  • ARP数据报中的MAC地址:ARP数据报中的MAC地址用于ARP协议本身的操作。在ARP请求中,发送者使用自己的MAC地址作为源MAC地址,并使用广播地址作为目标MAC地址来发送请求。在ARP响应中,响应者使用请求者的MAC地址作为目标MAC地址来发送响应。

因此,虽然两者都包含MAC地址,但它们的作用和上下文是不同的。帧头中的MAC地址用于局域网内的路由和传输,而ARP数据报中的MAC地址则用于ARP协议的操作和地址解析。

👉🏻DNS

DNS(Domain Name System)是计算机域名系统的缩写,它是由解析器和域名服务器组成的。以下是关于DNS的详细介绍:

  1. 定义:DNS是一个分布式数据库,用于将人们易于记忆的域名(如www.example.com)转换为计算机可以理解的IP地址。这个转换过程称为域名解析。
  2. 组成部分:
  • 解析器:负责向域名服务器发起域名解析请求。
  • 域名服务器:保存有网络中所有主机的域名和对应的IP地址,并具有将域名转换为IP地址的功能。
  1. 工作原理:当用户在浏览器中输入一个域名时,浏览器会向本地的DNS服务器发出查询请求。DNS服务器会根据自身缓存或向上级DNS服务器进行递归查询,最终得到该域名对应的IP地址,并将结果返回给浏览器。浏览器根据这个IP地址访问对应的服务器。
  2. 主要作用:
  • 域名解析:将用户输入的域名转换为对应的IP地址,这是DNS最主要的功能。
  • 负载均衡:对于热门的网站,DNS服务器可以将访问请求转发到不同的服务器,实现负载均衡,使用户能够更快速地访问网站。
  • 安全性:DNS服务器还可以提供一些安全功能,如防止域名劫持等。
  • 优化网络性能:DNS服务器可以缓存域名解析结果,当多个用户访问同一个域名时,DNS服务器可以直接返回之前缓存的结果,减少网络传输的时间,提高用户的使用体验。

总的来说,DNS是互联网上的重要基础设施之一,它使得人们能够使用易于记忆的域名来访问各种网络资源,而无需直接记忆复杂的IP地址。

域名简介

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称
如:

www.baidu.com
  • com: 一级域名. 表示这是一个企业域名. 同级的还有 “net”(网络提供商), “org”(非盈利组织) 等.
  • baidu: 二级域名, 公司名.
  • www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议

👉🏻ICMP协议

ICMP协议是一个 网络层协议
一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因


ICMP(Internet Control Message Protocol,互联网控制消息协议)是一个用于在IP主机、路由器之间传递控制消息的协议。这些控制消息用于报告IP数据报在传输过程中的错误或者其他情况,以便网络管理员或者应用程序能够了解网络的状态和性能。

以下是关于ICMP协议的一些关键点:

  1. 作用

    • 报告IP层的错误。
    • 报告路由信息(例如,使用ICMP的路由重定向消息)。
    • 用于网络探测和诊断(如ping命令使用ICMP回显请求和回显应答消息)。
  2. 类型与代码

    • ICMP消息由类型(Type)和代码(Code)字段来标识。类型字段定义消息的种类,而代码字段为每种类型提供进一步的细分。
    • 例如,类型0表示回显应答(Echo Reply),而类型3表示目标不可达(Destination Unreachable),其中代码字段进一步说明不可达的具体原因(如网络不可达、主机不可达、协议不可达等)。
  3. 常用ICMP消息

    • 回显请求(Echo Request)通常由ping命令发出,用于测试网络的连通性。
    • 回显应答(Echo Reply):对回显请求的响应,也用于ping命令。
    • 目标不可达(Destination Unreachable):当路由器或主机无法将数据包传递到其目的地时发送。
    • 超时(Time Exceeded):当数据包的生存时间(TTL)减至零时,中间路由器会发送此消息。
    • 参数问题(Parameter Problem):当IP头部中的某个字段的值不正确时,路由器会发送此消息。
  4. 安全性

    • ICMP消息可能会被用于攻击,如ICMP洪水攻击(通过发送大量的ICMP请求来耗尽目标系统的资源)。
    • 一些防火墙和网络设备会限制ICMP消息的传输,以减少潜在的安全风险。
  5. 与IP的关系

    • ICMP是IP层的一个组成部分,它使用IP进行传输。因此,ICMP消息被封装在IP数据报中。
    • ICMP消息不享受任何特殊的优先级,它们与其他IP数据报一样在网络中传输。
  6. 使用场景

    • 网络诊断:使用ICMP的ping命令来测试网络的连通性和性能。
    • 路由控制:ICMP路由重定向消息允许路由器告诉主机使用更优的路由。
    • 错误报告:当数据包无法到达目的地时,目标网络或主机可以使用ICMP来报告错误。

确认IP包是否成功到达目标地址.
通知在发送过程中IP包被丢弃的原因.
ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6

总之,ICMP是一个非常重要的网络协议,它提供了关于网络状态和性能的关键信息,并帮助网络管理员和应用程序进行故障排查和性能优化。

ICMP数据报文格式

在这里插入图片描述
ICMP(Internet Control Message Protocol,互联网控制消息协议)数据报文格式通常包括以下几个部分:

  1. 首部格式

    • 类型(Type):占1个字节,用于标识ICMP报文的类型。常见的类型包括回显请求(Echo Request,类型值为8)、回显应答(Echo Reply,类型值为0)、目标不可达(Destination Unreachable)等。
    • 代码(Code):占1个字节,用于进一步描述ICMP报文的细节,与Type字段组合使用。例如,对于目标不可达报文,代码字段可以进一步说明不可达的具体原因(如网络不可达、主机不可达、协议不可达等)。
    • 检验和(Checksum):占2个字节,用于验证ICMP报文的完整性。
  2. 数据字段

    • 数据字段的长度取决于ICMP的类型。对于ICMP差错报告报文,数据字段的内容构成是:把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。这样做的目的是为了得到运输层的端口号以及运输层报文的发送序号,这些信息对源点通知高层协议是有用的。
  3. 封装

    • ICMP报文是封装在IP数据包内部进行传输的。每一个ICMP消息都将包含引发这条ICMP消息的数据包的完全IP包头,ICMP报文则作为IP数据包的数据部分。
  4. 重定向消息

    • ICMP重定向消息(Redirect Message)是ICMP报文的一种,用于支持路由功能。当路由器检测到一个更佳的路由时,它可以发送一个ICMP Redirect消息,通知主机更新它的路由表

请注意,具体的ICMP数据报文格式可能会因不同的操作系统、网络设备和网络协议版本而略有差异。以上描述是基于一般性的ICMP协议规范进行的概括。

ping命令

ping 命令是一个非常常用的网络诊断工具,它利用 ICMP(Internet Control Message Protocol,互联网控制消息协议)协议来测试网络中的可达性和连通性。以下是关于 ping 命令的详细介绍:

🍇 基本原理

ping 命令通过发送 ICMP 回显请求(Echo Request)数据包到目标主机,并等待目标主机返回 ICMP 回显应答(Echo Reply)数据包来工作。如果目标主机可达并且网络正常,那么它将会回复 ping 请求,并在终端上显示出往返时间(RTT,Round-Trip Time)等信息。

🍇 用法

ping 命令的基本用法如下:

ping [选项] 目标地址

其中,目标地址可以是 IP 地址、域名或主机名。

🍇一些常用的选项包括:

  • -c 次数:指定发送 ICMP 请求的次数。
  • -i 间隔:指定发送 ICMP 请求的间隔时间(以秒为单位)。
  • -W 超时:指定等待每个响应的超时时间(以毫秒为单位)。
  • -s 数据包大小:指定发送的 ICMP 数据包大小(以字节为单位)。

🍇 输出信息

当运行 ping 命令时,通常会看到以下类型的输出信息:

  • 目标地址:显示目标主机的 IP 地址或域名。
  • PING:表示正在发送 ICMP 请求。
  • TTL:显示目标主机返回的 ICMP 数据包的 TTL(Time to Live)值。TTL 是 IP 数据包在网络中能够存活的时间,每经过一个路由器,TTL 值就会减 1。
  • 时间:显示 ICMP 请求和响应之间的往返时间(RTT),通常以毫秒为单位。
  • 统计信息:显示发送的 ICMP 请求数量、接收到的 ICMP 响应数量、丢失的数据包数量以及数据包传输的百分比等信息。

🍇 用途

ping 命令主要用于以下目的:

  1. 测试网络连通性:通过发送 ICMP 请求并等待响应,可以确定目标主机是否可达以及网络连接是否正常。
  2. 诊断网络故障:通过观察 ping 命令的输出信息,可以判断网络延迟、丢包等问题,从而进行故障排查。
  3. 测量网络性能:通过多次发送 ICMP 请求并统计往返时间(RTT),可以评估网络的性能表现。

🍇 注意事项

  • 由于 ICMP 数据包通常被防火墙和网络设备视为较低优先级的流量,因此在某些情况下,ping 命令可能会受到限制或阻止。
  • ping 命令只能测试 IP 层的连通性,无法测试更高层次(如 TCP、UDP)的连通性。如果需要测试 TCP 或 UDP 连接的连通性,可以使用其他工具(如 telnetnctraceroute)。

👉🏻NAT技术

NAT(Network Address Translation,网络地址转换)技术是一种用于在本地网络中使用私有地址,并在连接互联网时转而使用全局IP地址的技术。这种技术主要是为了解决IPv4地址短缺的问题而开发的。

NAT的工作原理是将一个外部IP地址和端口映射到更大的内部IP地址集来转换IP地址。基本上,NAT使用流量表将流量从一个外部(主机)IP地址和端口号路由到与网络上的终结点关联的正确内部IP地址。这样,多个内部设备可以共享一个公共IP地址来访问互联网,从而有效地节约IP地址资源

NAT有三种主要类型:

  1. 静态NAT(Static NAT):在这种方式下,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。这通常用于在内网中对外提供服务的服务器。
  2. 动态NAT(Dynamic NAT):这种方式是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。当内部网络的私有IP地址需要访问互联网时,可以从定义的地址池中动态选择一个未使用的地址进行转换。
  3. 网络地址端口转换NAPT(Port-Level NAT):也称为端口多路复用(Port Address Translation, PAT)。这种方式是将内部地址映射到外部网络的一个IP地址的不同端口上。通过这种方式,内部网络的所有主机都可以共享一个公共IP地址来访问互联网。

NAT的优点包括节省合法的注册地址、在地址重叠时提供解决方案、提高连接到互联网的灵活性以及在网络发生变化时避免重新编址。然而,NAT也有一些缺点,如增加交换延迟、导致无法进行端到端IP跟踪以及导致有些应用程序无法正常运行。

NAT技术被广泛应用于家庭、企业和园区等私有网络环境中,通过私有地址的使用结合NAT技术,可以有效节约公网IPv4地址。

NAT IP转换过程

NAT(Network Address Translation,网络地址转换)的IP转换过程主要涉及以下几个步骤:

  1. 当内部网络中的客户机需要访问外部网络时,它会将数据包发送给运行NAT的计算机(通常称为NAT设备或NAT网关)。
  2. NAT设备接收到数据包后,会检查数据包的源IP地址和端口号。然后,它会根据配置的NAT规则,将数据包中的源私有IP地址和端口号转换成NAT设备自己的公网IP地址和一个或多个未使用的端口号。同时,NAT设备会在地址转换映像表中记录这条转换信息,以便后续能够正确地将返回的数据包转发给目标客户机。
  3. 转换完成后,NAT设备会将数据包发送给外部网络的目的主机。
  4. 当外部网络的目的主机发送回送信息给NAT设备时,NAT设备会查找地址转换映像表,找到与回送信息中目标IP地址和端口号对应的内部网络的私有IP地址和端口号。
  5. 然后,NAT设备会将回送信息中的目标IP地址和端口号替换为内部网络的私有IP地址和端口号,并将数据包转发给目标客户机。

通过以上步骤,NAT技术实现了在内部网络中使用私有IP地址的计算机与外部网络之间的通信。同时,NAT技术还能有效地隐藏内部网络的结构和计算机信息,增加网络的安全性。


如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

员工管理和激励怎么做?试试场景化激励解决方案!

截止到2020年底,中国企业主体数量达3858.3万,同比增速达11.1%。如何留住人才、激励人才以强化人才与企业“黏性”,最大化提升员工的忠诚度与敬业度,成为企业未来人才发展战略的主要方向之一。 一、传统激励方式存在哪些不足 传统的…

【NumPy】权威指南:使用NumPy的percentile函数进行百分位数计算

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

计算机找不到msvcr110.dll如何解决,总结5种简单靠谱的方法

在日常使用电脑的过程中,我们可能会遇到一些错误提示,其中之一就是“msvcr110.dll丢失”。这个错误通常会导致某些程序无法正常运行,为了解决这个问题,下面我将介绍5种有效的解决方法。 一,了解msvcr110.dll是什么 ms…

网络之再谈体系结构

大家都知道的是网络的体系结构,现代软件常用的体系结构无非是TCP/IP协议栈,OSI因为实现复杂并且效率没有TCP/IP协议栈好,所以不用OSI,但是,最近在复习网络知识的时候,发现了一些奇怪的地方,那就…

TinyEngine 低代码引擎:带你5分钟高效构建游戏登录界面

本文由体验技术团队 TinyEngine 项目成员李旭宏创作,欢迎大家实操体验,本体验项目基于 TinyEngine 低代码引擎提供的环境,通过体验简单拖、拉、拽的形式帮助开发者快速了解低代码引擎的使用流程,达到快速开发游戏登录界面的效果。…

yolox-何为混合精度计算AMP?

何为AMP? 全称:Automatic mixed precision自动混合精度。 功能:在神经网络推理过程中,实现针对不同层采用不同的数据精度进行计算,从而实现节省显存和加速训练的目的。 此处提到的不同数据精度包括:32位浮…

每日两题 / 131. 分割回文串 42. 接雨水(LeetCode热题100)

131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 数据量较小&#xff0c;考虑直接暴力&#xff0c;每次dfs&#xff1a;以bg作为左区间&#xff0c;往右遍历&#xff0c;找到一段回文串区间后&#xff0c;将回文串插入vector<string>&#xff0c;并以下一个下标…

适合下班做的副业兼职、1天挣300,7天涨粉2万

最近小红书上有类视频火了&#xff01; 周周近财&#xff1a;让网络小白少花冤枉钱&#xff0c;赚取第一桶金 利用AI制作的漫画解说历史小说视频。视频以《明朝那些事儿》为蓝本&#xff0c;一上线就疯狂吸粉&#xff0c;多条视频内容都大爆了。 就是这个账号&#xff0c;仅仅…

POLARDB:新零售用户MySQL上云最佳选择

什么是云数据库POLARDB&#xff1f; POLARDB是阿里云自主研发的最新一代RDS关系型数据库&#xff0c;是特别针对互联网场景设计的Cloud-Native 云原生数据库。POLARDB for MySQL版本&#xff0c;在提供100%兼容MySQL5.6/8.0的关系型事务处理ACID特性之上&#xff0c;能够提供完…

MySQL:CRUD初阶(有图有实操)

文章目录 &#x1f4d1;1. 数据库的操作&#x1f324;️1.1 显示当前的数据库&#x1f324;️1.2 创建数据库&#x1f324;️1.3 选中数据库&#x1f324;️1.4 删除数据库 &#x1f4d1;2. 表的操作&#x1f324;️2.1 查看表结构&#x1f324;️2.2 创建表&#x1f324;️2.3…

实战指南:Vue 2基座 + Vue 3 + Vite + TypeScript微前端架构实现动态菜单与登录共享

实战指南&#xff1a;Vue 2基座 Vue 3 Vite TypeScript子应用vue2微前端架构实现动态菜单与登录共享 导读&#xff1a; 在当今的前端开发中&#xff0c;微前端架构已经成为了一种流行的架构模式。本文将介绍如何结合Vue 2基座、Vue 3子应用、Vite构建工具和TypeScript语言…

【IC】partial good

假设单core良率80%&#xff0c;core pass 数量分布呈二项分布。 16个core全pass的概率为&#xff1a; 有n个core pass的概率为&#xff1a; 分布如下&#xff1a; 当np>5且nq>5时&#xff0c;二项分布近似服从正态分布

Python魔法之旅-魔法方法(01)

目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…

Postman入门 - 环境变量和全局变量

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、发送请求 二、设置并引用环境变量 比如&#xff1a;我建的这个生产环境 使用环境有两个方式&…

怎么做图片海报二维码?扫码查看图片内容

现在很多的宣传推广海报会放入二维码中&#xff0c;然后将二维码分享给用户后&#xff0c;通过扫码的方式来查看图片内容&#xff0c;从而获取自己需要的信息&#xff0c;经常在活动宣传、商品推广、旅游攻略等场景下使用。二维码可以提供更加便捷的内容获取方式&#xff0c;让…

Vivado打开之前项目仿真过的波形文件

第一步&#xff1a;顶部菜单 点击&#xff1a;Open Static Simulation 然后在弹出的窗口找到.sim结尾的文件夹&#xff0c;在里面找到wdb结尾的文件&#xff0c;点击ok 第二步&#xff1a;依次点击下方红圈 找到wcfg结尾的文件&#xff0c;点击ok即可

echart图表legend每列固定宽度

修改前&#xff1a; 修改后&#xff1a; 关键代码&#xff1a; 设置一个背景并使之透明&#xff0c;否则宽度不生效&#xff0c;配合formatter使用 formatter: {a|{name}},rich:{a: {width: 48,fontSize: 12,backgroundColor: "rgba(11, 39, 52, 0)" // 关键代码&a…

多张图片上传、图片回显、url路径转成File文件

1. 实现 背景&#xff1a;在表单中使用element-plus实现多张图片上传(限制最多10张)&#xff0c;因为还要与其他参数一起上传&#xff0c;所以使用formData格式。 编辑表单回显时得到的是图片路径数组&#xff0c;上传的格式是File&#xff0c;所以要进行一次转换。 <tem…

Pytorch环境配置2.0.1+ Cuda11.7

查找cuda、cudnn、Pytorch(GPU)及cuda和NVIDIA显卡驱动对应关系 查询可支持的最高cuda版本 nvidia-smi查看支持的cuda的版本 CUDA版本对应表 我的显卡驱动是Driver Version&#xff1a;535.40.&#xff0c;那么左边对应的CUDA都可以兼容 右上角为CUDA 版本&#xff0c;可以看…

gitLab 使用tortoiseGit 克隆新项目 一直提示tortoiseGitPlink输入密码 输完也不生效

问题描述&#xff1a;准备用TortoiseGit拉取gitlab上一个新项目代码&#xff0c;出现tortoiseGitPlink提示让输入密码&#xff0c;输入后又弹出&#xff0c;反复几次&#xff0c;无法down下来代码。 解决方案&#xff1a; 1.找到PuTTYgen工具&#xff0c;打开 2. 点击load 按钮…