目录
一. 以太网
以太网帧格式
二. MAC地址
三. MTU
四. ARP协议
五. NAT
NAPT
六. 代理服务器
正向代理
反向代理
七. 内网穿透
八. 内网打洞
一. 以太网
• "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内 容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速 率等;
• 例如以太网中的网线必须使用双绞线; 传输速率有 10M, 100M, 1000M 等;
• 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线 LAN 等;
以太网帧格式
• 源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址), 长度是 48 位,是在网 卡出厂时固化的;
• 帧协议类型字段有三种值,分别对应 IP、ARP、RARP;
• 帧末尾是 CRC 校验码。
二. MAC地址
• MAC 地址用来识别数据链路层中相连的节点;
• 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
• 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地 址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址).
对比IP地址和MAC地址:
• IP 地址描述的是路途总体的 起点 和 终点;
• MAC 地址描述的是路途上的每一个区间的起点和终点;
三. MTU
MTU 相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产 生的限制.
• 以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不 够 46 字节,要在后面补填充位;
• 最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的 MTU;
• 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了,则需要对数据包进行分片(fragmentation);
• 不同的数据链路层标准的 MTU 是不同的;
MTU 对 IP 协议的影响
• 将较大的 IP 包分成多个小包, 并给每个小包打上标签;
• 每个小包 IP 协议头的 16 位标识(id) 都是相同的;
• 每个小包的 IP 协议头的 3 位标志字段中, 第 2 位置为 0, 表示允许分片, 第 3 位 来表示结束标记(当前是否是最后一个小包, 是的话置为 1, 否则置为 0);
• 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;
• 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 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);
四. ARP协议
• 在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目 的主机的硬件地址;
• 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件 地址与本机不符,则直接丢弃;
• 因此在通讯前必须获得目的主机的硬件地址;
• 源主机发出 ARP 请求,询问“IP 地址是 192.168.0.1 的主机的硬件地址是多少”, 并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示 广播);
• 目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个 ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中;
• 每台主机都维护一个 ARP 缓存表,可以用 arp -a 命令查看。缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下 次还要发 ARP 请求来获得目的主机的硬件地址
数据报的格式
• 注意到源 MAC 地址、目的 MAC 地址在以太网首部和 ARP 请求中各出现一次, 对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必 要的。
• 硬件类型指链路层网络类型,1 为以太网;
• 协议类型指要转换的地址类型,0x0800 为 IP 地址;
• 硬件地址长度对于以太网地址为 6 字节;
• 协议地址长度对于和 IP 地址为 4 字节;
• op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答。
注意全F是广播的意思。
处理任何的arp都必须先看op字段(是请求还是应答)。在一段时间内会记录下来局域网中的ip地址与mac地址的映射关系。
五. NAT
• NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是就是一种将私有 IP 和全局 IP 相互转化的技术方法:
• 很多学校, 家庭, 公司内部采用每个终端设置私有 IP, 而在路由器或必要的服务 器上设置全局 IP;
• 全局 IP 要求唯一, 但是私有 IP 不需要; 在不同的局域网中出现相同的私有 IP 是完全不影响的;
• NAT 路由器将源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37;
• NAT 路由器收到外部的数据时, 又会把目标 IP 从 202.244.174.37 替换回 10.0.0.10;
• 在 NAT 路由器内部, 有一张自动生成的, 用于地址转换的表;
• 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;
NAPT
那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返 回的数据中, 目的 IP 都是相同的. 那么 NAT 路由器如何判定将这个数据包转发给哪个 局域网的主机?
引入端口号:
六. 代理服务器
正向代理
• 正向代理(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标 服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请 求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这 种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问 控制等。
工作原理:
• 客户端将请求发送给正向代理服务器。
• 正向代理服务器接收请求,并根据配置进行处理,如缓存查找、内容过滤等。
• 正向代理服务器将处理后的请求转发给目标服务器。
• 目标服务器处理请求,并将响应返回给正向代理服务器。
• 正向代理服务器将响应返回给客户端。
功能:
• 缓存功能:正向代理服务器可以缓存经常访问的资源,当客户端再次请求这些资 源时,可以直接从缓存中获取,提高访问速度。
• 内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、 阻止恶意网站等。
• 访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作 时间访问娱乐网站。
• 隐藏客户端身份:正向代理可以隐藏客户端的真实 IP 地址,保护客户端的隐私。
• 负载均衡:在多个目标服务器之间分配客户端请求,提高系统的可扩展性和可靠 性。
反向代理
• 反向代理服务器是一种网络架构模式,其作为 Web 服务器的前置服务器,接收来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回 给客户端。这种架构模式可以提升网站性能、安全性和可维护性等
基本原理 :
• 反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的 Web 服务器,并将 Web 服务器的响应返回给客户端。在这个过程中,客户端并不知道实际 与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信。
动静分离:在大型网站中,通常需要将静态资源和动态资源分开处理。通过将静 态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应, 而无需再次向后端服务器发起请求。这可以大大提升静态资源的访问速度。
七. 内网穿透
内网穿透是一种技术,允许外部网络直接访问内网中的设备或服务,绕过NAPT或防火墙的限制。通常用于远程控制、文件共享或搭建服务器等场景。
- 工作原理:通过第三方服务器(中继)或工具(如frp、Ngrok)建立隧道,将外网请求转发到内网设备。内网设备主动与中继服务器保持连接,外部流量通过中继服务器到达内网。
- 应用场景:适用于需要从外网访问内网服务的场景,如远程办公、智能家居控制。
- 优势:无需配置路由器端口映射,适合动态IP或受限NAT环境。
八. 内网打洞
内网打洞(NAT Traversal)是一种通过技术手段绕过网络地址转换(NAT)限制,实现不同内网设备直接通信的方法。由于IPv4地址短缺,多数设备通过NAT共享公网IP,导致内网设备无法被外部直接访问。内网打洞通过中间服务器辅助或协议协商,建立点对点(P2P)连接。
一个主播主机ip是1.2.3.4,一个用户是4.3.2.1。现在它们都要访问一个直播平台,这个直播平台直接把它们的IP地址给交换了,使主播的直播画面,信息等不经过平台的服务器,直接把画面推送给用户。