【Linux】网络层与数据链路层中重点介绍
- 学习目标
- 网络层:
网络层的作用: 在复杂的网络环境中确定一个合适的路径.
理解IP地址, 理解IP地址和MAC地址的区别.
理解IP协议格式.
了解网段划分方法
理解如何解决IP数目不足的问题, 掌握网段划分的两种方案. 理解私有IP和公网IP
理解网络层的IP地址路由过程. 理解一个数据包如何跨越网段到达最终目的地.
理解IP数据包分包的原因.
了解ICMP协议.
了解NAT设备的工作原理 - 数据链路层:
数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑
结构, 访问控制方式, 传输速率等;
以太网帧格式
理解mac地址
理解arp协议
理解MTU - 应用层:
应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
能够根据自己的需求, 设计应用层协议.
了解HTTP协议.
理解DNS的原理和工作流程
一. 网络层
目的是在在复杂的网络环境中确定一个合适的路径
1.IP协议
- ip协议的本质工作是提供一种能力,将数据跨网络从A主机送到B主机,而用户需要可靠的将数据跨网络传输,所以需要和传输层相配合,tcp协议提供可靠性策略,ip协议提供传输能力
前置认识
- 主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称
- 网络传输时要对所有的主机进行标识。源ip、目的ip来标识源主机和目的主机,ip号是由目标网络+目标主机构成的,可以在网络传输时快速定位一台主机
- 进行跨网络传输时,需要先定位到目标网络,再由路由器进行转发到目标主机,这样子先定位目标网络的方法效率最高,可以排除其他网路,避免一个个主机去对比
ip协议报头格式

- 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.
- 4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大 的数字是15, 因此IP头部最大长度是60字节,和tcp协议的报头中一模一样,里面包含了选项的大小信息
- 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要
- 16位总长度(total length): IP数据报整体占多少个字节
- 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环
- 8位协议: 表示上层协议的类型,要把有效载荷交付给上层的哪一个协议
- 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏.
32位源地址和32位目标地址: 表示发送端和接收端.
选项字段(不定长, 最多40字节): 略 - ip协议报头是通过固定长度+自描述字段(4位首部长度+16位总长度)来实现报头和有效载荷分离的
网段划分
- IP地址分为两个部分, 网络号和主机号
网络号: 保证相互连接的两个网段具有不同的标识;
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号

- 不同的子网其实就是把网络号相同的主机放到一起。如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复
了解路由器
1.路由器本质也是特定一个子网的主机,也要配置ip地址
2.路由器一定至少要连接两个子网,也就相当于在两个子网内。路由器可以配置多个IP,可以理解为有多张网卡
3.路由器一般是一个子网中的第一台设备,一般他的IP地址都是:网络号.1
4.路由器功能,ip报文的转发,不仅仅如此,还有构建子网的作用(局域网)
- 通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同.手动管理子网内的IP, 是一个相当麻烦的事情.有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器.
- 过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类

A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255 - 随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就
分配完了, 而A类却浪费了大量地址(a类可使用的网络数量少,但子网内能容纳很多主机,是超大型单一网络,很少有组织能完全使用完主机资源,所以会因大量闲置而浪费) - 针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing):引入一个额外的子网掩码(subnet mask)来区分网络号和主机号,子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾,将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号,网络号和主机号的划分与这个IP地址是A类、B类还是C类无关
子网掩码
子网掩码配置在路由器中
- 子网掩码结构必须满足连续的1后面跟连续的0,可以对32位ip进行任意的划分,一个例子:


将按位与的结果拆分为 4 字节,转换为十进制:终网络号为 140.252.20.0
特殊的ip地址
将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;比如上文的140.252.20.0
将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;比如上文的140.252.20.255
127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
ip地址的数量限制
IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址.这意味着, 一共只有43亿台主机能接入网络么?
实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址.CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:
动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;
NAT技术(路由器相关);
IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及;
私有IP地址和公网IP地址
- 如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址
10.,前8位是网络号,共16,777,216个地址
172.16.到172.31.,前12位是网络号,共1,048,576个地址
192.168.,前16位是网络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP);
- 私有ip的价值与意义
私有 IP是仅用于私有网络内部的IP地址,不会在互联网公网上路由。其设计目的是解决 IPv4 地址不足的问题 —— 通过私有网络内部复用这些地址,外部通过 NAT(网络地址转换)映射为公网 IP,实现多设备共享少量公网 IP 上网。这种 “内部复用 + 外部 NAT 映射” 的设计,让 IPv4 在地址耗尽的情况下仍能支撑互联网的大规模发展 - 私网与公网的分工逻辑
私网和公网的使用场景划分,本质是效率与需求的匹配
1.对普通用户:核心需求是 “接入互联网”,而非 “被全球访问”,私网的 “复用性” 和 “安全性” 更贴合需求,同时节省公网地址;
2.对运营商 / 企业:核心需求是 “全球互联”“对外提供服务”,必须依赖公网地址的 “全球唯一性” 实现通信。
这种分工既解决了 IPv4 地址不足的痛点,又保障了互联网 “全球互通” 的核心价值,是当前网络架构中最成熟的高效利用方案。

- 一个路由器可以配置两个IP地址, 一个是WAN口IP(公网 IP), 一个是LAN口IP(私有 IP,子网IP)
- 路由器LAN口连接的主机, 都从属于当前这个路由器的子网中
- 不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是子网之间的IP地址就可以重复了
- 每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级, 最外层的运营商路由器, WAN口IP就是一个公网IP了.
- 子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级 替换,最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地址转换)。因为如果不进行替换的话,那么私有ip就会暴露在外面,从公网主机返回的过程中无法通过私有ip来准确定位一台局域网中主机(可能包含重复ip),简单来说,NAT 回传的本质是 “正向通信时记好‘私网 - 公网’的绑定关系,回传时按记录逆向找回去”,IP 地址的变化始终围绕 “公网 IP 与私网 IP 的双向映射”,而 “端口” 是区分同一公网 IP 下多个私网主机的关键(避免多主机共用公网 IP 时回传数据混淆)
- 如果希望我们自己实现的服务器程序, 能够在公网上被访问到, 就需要把程序部署在一台具有外网IP的服 务器上.这样的服务器可以在阿里云/腾讯云上进行购买
路由表
- 判断当前这个数据包应该发往哪里,依靠每个节点内部维护的一个路由表,每到一个路由器就查一下路由表看应该去哪,路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程. 所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间
- 查看路由表的结果:
1.给你具体的下一跳
2.没有对应地址时,转入默认路由,到达同网段的另一台路由器 - 可以使用route命令查看,假设某主机路由表如下

参数:
Destination:目标网络的 IP 地址或网络段,即数据包要发往的目的地址范围。如192.168.10.0表示目标是该子网,default表示默认路由(所有未明确匹配的地址)
Gateway: 下一跳网关的 IP 地址,即数据包要转发到的下一个设备的 IP。*表示目标网络与本机直接相连,无需经过网关
Genmask :子网掩码,用于确定目标网络的子网范围,通过与目标 IP 地址进行 “按位与” 运算来判断是否属于该路由条目对应的网络。
Flags: 路由标志,常见的有:
U(Up)表示该路由条目有效;
G(Gateway)表示该路由需要经过网关转发;如UG表示这是一条有效的默认网关路由。
Metric:
路由度量值,用于在多条到达同一目标的路由中选择最优路径,数值越小优先级越高。
Ref:
该路由被引用的次数,一般在 Linux 系统中此值通常为 0,实际意义不大。
Use:
该路由条目被使用的次数,反映了这条路由的使用频率。
Iface:
发送数据包所使用的网络接口,如eth0、eth1是以太网接口,lo是回环接口(用于本地通信)。 - 了解网关概念:
网关(Gateway)是网络间的 “翻译器” 与 “转发枢纽”,核心作用是实现不同网络(如局域网与广域网、不同协议的网络)之间的通信与数据转发。网关是一台设备(可以是路由器、防火墙、专用网关设备等),它处于两个或多个网络的边界,负责解析不同网络的 “地址格式”“协议规则”;将数据包从一个网络转发到另一个网络,确保跨网络通信的可行性
MTU
- MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制
- 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
- 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
- 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
- 不同的数据链路层标准的MTU是不同的;
ip的分片
- 在一台主机中,报文并没有通过网络层直接发出去,而是继续交给了下一层协议(数据链路层),数据链路层一次不能发送过大的报文,这就要求上层不能给我交付过大的报文,ip协议报头的分片字段如下:

16位标识(id):
唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的.
3位标志字段:
第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为0, 其他是1(表示还有分片后续). 类似于一个结束标记.
13位分片偏移(framegament offset):
是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后一个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了) - 如何知道一个IP是否被分片了?
片偏移!=0||更多分片==1 - 如何将分片全部聚到一起
如何判断丢了第一个分片,检查是否存在片偏移为0的分片;如何判断丢了中间部分的分片,检查分片偏移覆盖的区间是否连续,相邻分片间隔长度相同;如何判断是否丢失最后一个分片,检查更多分片是否等于0.
形成分片:
将ip数据报进行拆分,划分出一个个大小合适的数据段,并且要给每一个数据段都加上IP的报头,并且修改其中的部分信息例如有关分片的字段和总长度等信息,正文数据的最大长度为mtu-报头长度
组装分片:
保留第一个分片的报头,将后续分片的报头丢弃,再按顺序依次将其拼接起来 - 不建议进行分片,因为可能增加丢包的概率,ip中任何一个分片丢失都要重新发送,所以根源不在于ip协议而是在传输层协议当中,对tcp或udp协议传下来的数要有限制,ip只是中间跑腿的搬运工
- mtu对udp协议的影响
一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了 - mtu对tcp协议的影响
TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(Max Segment Size);
TCP在建立连接的过程中, 通信双方会进行MSS协商.
最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值.
然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.
MSS的值就是在TCP首部的40字节变长选项中(kind=2)
这也就是为什么tcp协议在传输信息时,即使滑动窗口够大了,但还是会将信息划分为一块块发出去的原因
了解运营商
上网的前提条件是网络基础设施,运营商主要负责我们国家的网络基础建设并且国家大力支持发展互联网,再由运营商的基层人员挨家挨户接入网络,有了用户的基础,就有了上网需求,也就孵化出了大批物联网公司为用户提供服务。用户上网需要向运营商交钱,同时使用网络服务也要像企业交钱,企业使用网络也需要向运营商付费,再有运营商和企业的税收交由国家,国家再大力支持互联网的发展,良性循环下去
- 我们是怎么上网的?
首先要光纤入户,再安装调制解调器和家用路由器,光纤里面传的是模拟信号,调制解调器的作用就是将模拟信号转为数字信号交由路由器,由路由器构建局域网,路由器中存在两套密码,一套是识别不同路由器的账号和密码(可以理解为各种wifi),还有一套是交由运营商的账号密码,由用户进行充值。我们平时使用的都是私网
了解全球网络
- ip地址资源是有限的,要将其按需求分配给各个国家,可以选取地址段中几位作为国家的标识,将其分发给不同国家 (本质就是通过地址段的层级划分实现全球范围的有序管理,确保每个区域 /机构的地址段不冲突),再选取地址段中不同的几位在国家内部进行地区划分给一个个地区 (运营商根据自身网络规划,通过 子网划分将持有的地址块拆分为更小的子网,分配给不同地区),如此构建出来了全球网络的框架。其中通过路由器时经过子网掩码的运算,再配合私网ip使用能高效使用ip地址资源。这里使用的一般是公网
- 总结思路:
1.全球分配层:IANA (Internet Assigned Numbers Authority,互联网号码分配机构)将连续地址块分配给 RIR(Regional Internet Registry,区域互联网注册管理机构),实现 “区域级地址隔离”;
2.国家 / 运营商层:RIR 将地址块分配给国家机构 / 运营商,运营商通过子网划分(子网掩码运算)将地址块拆分为 “地区级子网”,实现 “地区级网络管理”;
3.用户接入层:地区子网中,用公网地址搭建骨干 / 核心网络,用私网地址分配给家庭 / 企业用户,通过 NAT 实现 “私网复用公网出口”,高效利用地址资源;
4.路由转发层:路由器通过 “IP & 子网掩码” 计算网络号,按 “全球→区域→国家→地区→用户” 的层级定位目标网络,完成数据包转发
二. 数据链路层
用于两个设备(同一种数据链路节点,电脑、路由器)之间进行传递
- MAC地址
1.MAC地址用来识别数据链路层中相连的节点;
2.长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
3.在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址). - 了解以太网
“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容.
例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等; - 以太网帧格式

目的地址(6 字节):接收方的 MAC 地址,用于在局域网中定位目标设备;
源地址(6 字节):发送方的 MAC 地址,标识数据的来源;
类型(2 字节):0800对应IP,0806对应ARP,8035对应RARP;
数据(46~1500 字节):承载的上层协议数据(如 IP 数据包、ARP 请求等),长度范围由以太网的 MTU(最大传输单元)决定;
CRC(4 字节):循环冗余校验码,用于检测帧在传输过程中是否出错。 - mac帧通过定长报文实现解包和封装,通过不同类型实现分用
局域网通信原理
局域网通信主要依赖数据链路层,通过封装mac帧来对数据放到网络中进行传输,局域网中每个主句都会收到报文,会解析mac帧来判断是否发给自己的,通过mac地址来识别每一台主机,网络层起到辅助作用,主机通过ip地址来标识自身在局域网中的逻辑位置,方便上层通信指定通信目标,也可以使用arp协议来辅助把ip地址转化为mac地址

- 路由器的协议栈至少包含数据链路层和网络层,当路由器收到一个数据包时,会经历 “解封装(剥离mac帧报头)→网络层决策(确定下一跳ip)→重新封装(更新mac地址)” 三个步骤,都要贯穿路由器协议层
- 局域网中还存在交换机,作用是划分碰撞域,减少局域网碰撞,可以控制报文传输的区域
1.ARP协议
- ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议,arp协议属于mac帧的上层,但是归属到数据链路层
- 基本流程:
源主机发出ARP请求,询问IP地址是xxx的主机的硬件地址是多少”, 并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中; 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址 - 缓存表的核心价值是临时存储关键信息,避免重复执行耗时的查询或解析操作,从而提升操作效率。缓存表设置过期时间是为了应对网络的动态变化,确保缓存表的信息始终准确有效
1.1ARP数据报格式

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
硬件类型指链路层网络类型,1为以太网;
协议类型指要转换的地址类型,0x0800为IP地址;
硬件地址长度对于以太网地址为6字节;
协议地址长度对于和IP地址为4字节;
op字段为1表示ARP请求,op字段为2表示ARP应答。
- 模拟一次arp过程:
局域网中每一台主机都可以收到arp应答,也可以被别人直接发起arp请求,当发起arp请求时,数据报在网络中传输,由于mac帧报头中目的地址是全F,证明是一个广播,每台主机都可以接收到,将mac帧报头拆开后数据交付给上层,检查内部的目的ip地址是否相同,若相同就返回本主机的mac地址,否则直接丢弃报文。当进行arp响应时,填充好响应字段后重新封装mac帧报头,由于接收过发过来的报文所以返回去的目的主机ip已知,所以可以准确返回。
注意:
在arp的过程中,收到的任何arp报文,都是先看op字段,op决定了arp的类型是请求还是应答,这就决定看报文信息时先看目的ip地址还是先看发送端mac地址
1.2arp的周边问题
主机的mac地址和ip地址,会被主机临时缓存起来
1.只有缓存失效的时候,才会进行arp请求过程
2.可以通过我的ip和子网掩码,得到我的网络号,然后拼接ip地址,ping所有的主机,得到所有主机的ip和mac地址。Ping 指令是网络诊断中最常用的基础工具,核心作用是测试两台网络设备间的连通性,并反馈通信延迟、丢包等关键信息

3.如果我收到了多次同样的arp应答,我会以最新的为准
这就会造成一个问题,arp欺骗。根本原因在于ARP 报文是无状态、无验证的,设备收到 ARP 应答(即使未发送过请求)时,会直接更新自己的 ARP 缓存。攻击者利用这一漏洞,向目标设备发送伪造的 ARP 应答:
向被攻击主机发送伪造的 ARP 应答,声称 “网关的 IP 对应的 MAC 是攻击者的 MAC”,使被攻击主机的 ARP 缓存中网关的 MAC 被替换为攻击者的 MAC。当被攻击者主机发送信息时就会到中间人的主机上再向网关(路由器)发送伪造的 ARP 应答,声称 “被攻击主机的 IP 对应的 MAC 是攻击者的 MAC”,使网关的 ARP 缓存中被攻击主机的 MAC 被替换为攻击者的 MAC。这样中间人篡改了双方的arp缓存表,可以直接监听经过本机的双向流量
三. 其他重要协议或技术
DNS
(Domain Name System)DNS是一整套从域名映射到IP的系统
- TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆. 于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系

最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的.如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.其他计算机也需要定期下载更新新版本的hosts文件才能正确上网.
这样就太麻烦了, 于是产生了DNS系统.
一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系. 如果新计算机接入网络, 将这个信息注册到数据库中;用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.所有需要通过域名访问网络的主机,都内置了DNS客户端模块,功能是接收用户或应用程序的域名解析请求,向预先配置的DNS服务器发送查询请求,然后接收并解析DNS服务器返回的结果(ip地址),供本机通信使用
至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容.

域名简介
- 主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称.
域名使用 . 连接
com: 一级域名. 表示这是一个企业域名. 同级的还有 “net”(网络提供商), “org”(非盈利组织) 等.
baidu: 二级域名, 公司名.
www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议.
dig工具
- 安装dig工具的指令:yum install bind-util,完成后就可以使用dig+域名,来观察域名解析的过程了

- 开头位置是 dig 指令的版本号
- 第二部分是服务器返回的详情, 重要的是 status 参数, NOERROR 表示查询成功
- QUESTION SECTION 表示要查询的域名是什么
- ANSWER SECTION 表示查询结果是什么. 这个结果先将 www.baidu.com 查询成了 www.a.shifen.com, 再将www.a.shifen.com 查询成了两个 ip 地址.
- 最下面是一些结果统计, 包含查询时间和 DNS 服务器的地址等
ICMP协议
- ICMP协议是一个 网络层协议一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因。
- ICMP正是提供这种功能的协议; ICMP主要功能包括:
确认IP包是否成功到达目标地址.
通知在发送过程中IP包被丢弃的原因.
ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;但是每一层协议之间也分高低,icmp在ip之上
ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6; - icmp报头:


icmp大概分为两类报文:一类是通知出错原因 ,一类是用于诊断查询 - ping指令:
处ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
ping命令会先发送一个 ICMP Echo Request给对端;
对端接收到之后, 会返回一个ICMP Echo Reply;

- 一个面试问题:
有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口?
千万注意!!! 这是面试官的圈套:
ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息 - traceroute命令
也是基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器
NAT技术
- NAT可以将私有ip转化为共有ip,同时会维护一张表来记录源ip和转换后的wan口ip的关系,方便从外部服务器返回消息时找到对应的主机,因为如果不记录所有同一局域网中的原ip替换为公有ip都是相同的,那么在返回时就找不到对应主机了,所以这张表必须维护好
- NAT是仅IP转换,NAPT是IP+端口转换
- NAT转换过程如下

- NAPT转换过程如下

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项 - NAT技术缺陷
由于NAT依赖这个转换表, 所以有诸多限制:
1.无法从NAT外部向内部服务器建立连接;
2.装换表的生成和销毁都需要额外开销;
3.通信过程中一旦NAT设备异常, 即使存在热备(实时同步主设备配置状态,若未能完全同步主设备的tcp会话状态), 所有的TCP连接也都会断开
1.代理服务器
- 代理服务器(Proxy Server) 是位于客户端与目标服务器之间的 “中间转发设备”,客户端的网络请求先发送到代理服务器,再由代理服务器转发至目标服务器,最终将响应结果回传给客户端,核心作用是转发请求、隐藏真实地址或过滤网络流量。网络管理员通过规则赋予代理服务器的访问与管控资格
- 核心工作原理:
1.客户端在网络设置中配置代理服务器的 IP 和端口,明确 “所有请求通过代理转发”;
2.客户端发起访问请求(如访问网站、接口)时,请求数据包先发送到代理服务器;
3.代理服务器接收请求后,根据自身规则(如权限验证、缓存查询)处理,再以自己的身份向目标服务器发送请求; - 目标服务器将响应返回给代理服务器,代理服务器转发给客户端,完成整个通信流程。
简单说:代理服务器是 “中间人”,客户端与目标服务器不直接通信,所有数据都经过代理中转。 - 主要功能与应用场景:
1.隐藏真实 IP(匿名访问):
目标服务器只能看到代理服务器的 IP,无法获取客户端真实地址,可用于保护隐私、规避 IP 限制(如部分网站的地域限制)。
2.网络访问控制:
企业 / 校园网中,代理服务器可限制客户端访问违规网站(如过滤色情、游戏网站),或仅允许授权 IP 访问内部资源。
3.缓存加速:
代理服务器会缓存常用网站的静态资源(如图片、网页脚本),后续客户端访问同一资源时,直接从代理缓存返回,减少带宽占用、提升访问速度。
4.突破网络限制:
内网环境中,客户端可通过代理服务器访问外网;或通过特定代理突破地域限制(如访问境外合规网站)。
5.日志记录与监控:
代理服务器可记录所有客户端的访问日志,方便管理员审计、排查网络问题(如企业监控员工上网行为)。
1.1http隧道技术
不只是http拥有隧道技术,但是http隧道技术运用广泛,以它为例,像是翻墙主要以隧道技术为核心,将目标服务器等信息封装到http的正文部分当中并加密,当该经过封装的http协议经过路由器或者其他网关设备时会认为其符合协议规定允许通过,达到代理服务器或中间服务器后对协议的正文进行解析,得到真正的目标地址就可以对境外的服务器进行访问,得到的响应数据同理可以通过http隧道技术来返回原主机。注意,我国网络安全法明确规定不正规的翻墙行为是违法行为,这里了解知识即可
- 代理服务器是一种应用比较广的技术.
翻墙: 广域网中的代理.
负载均衡: 局域网中的代理
1.2负载均衡
- 负载均衡是代理服务器(多为反向代理)的核心进阶功能,核心目的是避免单台服务器过载,提升服务可用性和响应速度。
- 工作原理:
代理服务器作为 “流量入口”,接收所有客户端的请求;
按照预设规则(如轮询、权重分配、IP 哈希、最少连接数),将请求分发到后端多台相同配置的服务器(服务器集群);
同时监控后端服务器状态,若某台服务器故障,自动将其剔除出集群,避免请求失败;故障恢复后再自动加入,保证服务连续性。 - 应用场景:
大型网站(如电商、资讯平台):高峰期数百万用户同时访问,单台服务器无法承载,通过反向代理的负载均衡,将请求分散到几十甚至上百台后端服务器;
企业 API 服务:高并发接口调用场景下,分摊后端应用服务器的处理压力,避免接口超时、服务崩溃。
1.3正向代理与反向代理
- 正向代理:
- 正向代理是 客户端一侧的代理,核心作用是帮客户端解决 “如何访问目标服务器” 的问题
- 核心逻辑:
客户端明确知道要访问的目标服务器,但因网络限制(如内网不能直接上外网)、隐私保护等需求,主动通过代理发起请求。
代理接收客户端请求后,以自己的身份转发给目标服务器,服务器仅能看到代理的 IP,看不到客户端真实 IP。
客户端必须手动配置代理信息(如浏览器设代理 IP 和端口),才能使用正向代理 - 典型场景:
企业 / 校园内网:内网设备无法直接访问外网,通过正向代理服务器转发请求,实现上网。
隐私保护:个人用户通过正向代理隐藏真实 IP,避免被目标网站追踪。
突破地域限制:通过特定地区的正向代理,访问仅对该地区开放的合规资源。 - 反向代理:
- 反向代理是服务器一侧的代理,核心作用是帮服务器解决 “如何高效服务客户端” 的问题
- 核心逻辑:
客户端不知道后端有多少台服务器,只知道反向代理的公网 IP / 域名(比如网站域名),直接向代理发起请求。
代理作为 “流量入口”,接收所有请求后,根据规则(如负载均衡、路径匹配)转发给后端对应的服务器(可能是单台或集群)。
客户端感知不到 “代理的‘转发角色’”,也感知不到 “后端真实服务器的存在”,误以为 “代理的对外地址就是目标服务本身”
NAT与代理服务器区别
路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.
代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.那么NAT和代理服务器的区别有哪些呢?
- 1.从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
2.从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.
3.从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
4.从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.
内网穿透
- 内网穿透(端口映射 / 反向代理延伸) 是一种打破内网与外网隔离的网络技术,核心是让外网设备绕过路由器 / NAT 的限制,直接访问内网中没有公网 IP 的设备(如内网服务器、家庭电脑、摄像头等),解决 “内网设备无法被外网主动访问” 的核心痛点。
- 为什么需要:
路由器 / NAT 的默认逻辑是 “内网可主动访问外网,外网无法主动访问内网”,导致以下需求无法实现:
1.外网无法远程访问内网的 Web 服务、FTP 服务器、远程桌面;
2.开发调试时,外网用户 / 测试人员无法访问本地开发的网站 / API;
3.出门后无法远程查看家庭监控、访问 NAS 存储,或控制内网智能设备 - 工作原理:用 “公网中转” 搭建通信桥梁
内网穿透的核心是通过公网中转服务器建立双向通信链路,流程如下:
内网设备(如内网服务器)主动与公网穿透服务器建立长连接(避免被 NAT 断开连接);
外网设备(如手机、外网电脑)向穿透服务器的固定公网 IP / 域名发起访问请求;
穿透服务器将请求通过已建立的长连接,转发给目标内网设备;
内网设备的响应数据按原路径回传给穿透服务器,再转发给外网设备,完成通信闭环。
简单说:穿透服务器就像 “中介”,让原本无法直接对话的内网设备(LAN,局域网)和外网设备(WAN,广域网,核心是互联网,通过公网可达的地址),通过它间接实现双向通信,绕开 NAT 的隔离限制。
