【网络】数据链路层(以太网帧格式、MTU、ARP)、NAT、内网穿透

文章目录

  • [1. 数据链路层](#1. 数据链路层)
  • [2. 以太网帧格式](#2. 以太网帧格式)
  • [3. MTU](#3. MTU)
    • [3.1 认识MTU](#3.1 认识MTU)
    • [3.2 MTU 对于 TCP 协议的影响](#3.2 MTU 对于 TCP 协议的影响)
  • [4. 局域网通信原理](#4. 局域网通信原理)
  • [5. ARP协议](#5. ARP协议)
    • [5.1 基本概念](#5.1 基本概念)
    • [5.2 原理](#5.2 原理)
    • [5.3 ARP 数据报的格式](#5.3 ARP 数据报的格式)
  • [6. NAT技术](#6. NAT技术)
  • [7. 内网穿透](#7. 内网穿透)
  • [8. 内网打洞](#8. 内网打洞)
  • [9. 代理服务器](#9. 代理服务器)
    • [9.1 正向代理](#9.1 正向代理)
    • [9.2 反向代理](#9.2 反向代理)
    • [9.3 NAT VS 代理服务器](#9.3 NAT VS 代理服务器)
  • 10.网络总结

1. 数据链路层

真正在网络物理结构上传输的,是mac帧;但是逻辑上我们认为是IP报文在流动,实际是需要mac帧的支持的。

在局域网通信那里,我们知道局域网内是使用mac地址进行通信的,所以,数据链路层就是用来解决相邻主机间的通信问题。

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

2. 以太网帧格式

"以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如: 规定了网络拓扑结构,访问控制方式,传输速率等

例如以太网中的网线必须使用双绞线,传输速率有 10M, 100M, 1000M 等;

以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN 等

以太网帧格式:

  • 源地址和目的地址是指网卡 MAC 地址,长度是6字节
  • 帧协议类型字段有三种值,分别对应 IP、 ARP、 RARP;
    • RARP是将MAC地址转换为IP地址
  • 帧末尾是 CRC 校验码

3. MTU

3.1 认识MTU

MTU 相当于发快递时对包裹尺寸的限制,这个限制是不同的数据链路对应的物理层,产生的限制。

  • 以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,数据包的长度不够 46 字节,要在后面补填充位;
  • 最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU了,则需要对数据包进行分片(fragmentation);
  • 不同的数据链路层标准的 MTU 是不同的;

3.2 MTU 对于 TCP 协议的影响

让我们再回顾一下 TCP 协议:

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

4. 局域网通信原理

局域网中的一台主机向局域网中发送信息时,该局域网中的所有主机都可以收到该信息

正如图上所画,局域网中的所有主机都能收到该数据帧,若多个主机同时向局域网中发送数据,会发送数据碰撞问题。

所以,为了避免局域网中产生数据碰撞问题,要保证,任何时刻,只有一台主机在使用局域网!

如果发生了碰撞,碰撞双方要休眠一段时间 (碰撞避免),然后再重发,所以在数据链路层上,也有重发机制

此时,整个局域网就像临界资源,只有一台主机在使用局域网就是互斥。

令牌环网,其实它的令牌,就类似于锁,谁持有锁,谁就可以向局域网中发送数据

既然会发送碰撞,那么局域网中主机的数量肯定不能太多,多了容易碰撞,但万一多了怎么办?- - 引入交换机

所以,交换机的作用就是:划分碰撞域!

既然局域网中存在数据碰撞问题,那单台主机发送数据时,数据帧的长度是越短越好,还是越长越好?

  • 数据帧不能太长,太长了主机发送单条数据的发送周期长,碰撞多
  • 数据帧也不能太段,太短发送的次数太多了
  • 所以,数据链路层规定,单词发送数据帧的长度不能超过MTU的长度!

5. ARP协议

5.1 基本概念

ARP 不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议

ARP 协议的作用:ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系

  • 在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件地址;
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址·

5.2 原理

ARP的原理非常简单:先广播、再单发

源主机发出 ARP 请求,询问"IP 地址是 192.168.0.1 的主机的硬件地址是多少"?并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示广播);

目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中;

每台主机都维护一个 ARP 缓存表,可以用 arp -a 命令查看。 缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址

5.3 ARP 数据报的格式

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

  • 硬件类型指链路层网络类型,1 为以太网;
  • 协议类型要转换的地址类型,0x0800 为 IP 地址;
  • 硬件地址长度对于以太网地址为 6 字节;
  • 协议地址长度对于和 IP 地址为 4 字节;

ARP协议的前6个字节基本是固定的

  • op 字段为 1 表示 ARP 请求 ,op 字段为 2 表示 ARP 应答

ARP工作流程:

首先我们要明确一点:任何一个主机,它都可能会收到ARP请求 (广播)或应答(它可能请求过别人)

6. NAT技术

路由器将 IP 首部中的 IP 地址进行替换(替换成路由器的 WAN 口 IP),这样逐级替换,最终数据包中的 IP 地址成为一个公网 IP,这种技术称为 NAT。

  • NAT 技术当前解决 IP 地址不够用的主要手段,是路由器的一个重要功能;
  • NAT 能够将私有 IP 对外通信时转为全局 IP,也就是就是一种将私有 IP 和全局IP 相互转化的技术方法

目前我们已经知道使用它可以缓解IP地址不足的问题,也能将信息转发到公网上;但是目前不知道如何将信息从公网再转发回内网。

在 NAT 路由器内部,有一张自动生成的,用于地址转换的表

如果局域网内有多个主机都访问同一个外网服务器,如果仅进行IP地址的替换,那么对于服务器返回的数据时,目的 IP 都是相同的,那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机呢?

这时候 NAPT 来解决这个问题了,使用 IP+port进行映射(映射本质是:内网进程和公网进程的映射关系)

这种关联关系也是由 NAT 路由器自动维护的。例如在 TCP 的情况下,建立连接时,就会生成这个表项;在断开连接后,就会删除这个表项

7. 内网穿透

8. 内网打洞

9. 代理服务器

9.1 正向代理

正向代理(Forward Proxy) 是一种常见的网络代理方式, 它位于客户端和目标服务器之间, 代表客户端向目标服务器发送请求。

正向代理服务器接收客户端的请求 ,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。 通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。

工作原理

  • 客户端将请求发送给正向代理服务器。
  • 正向代理服务器接收请求, 并根据配置进行处理, 如缓存查找、 内容过滤等。
  • 正向代理服务器将处理后的请求转发给目标服务器。
  • 目标服务器处理请求, 并将响应返回给正向代理服务器。
  • 正向代理服务器将响应返回给客户端。

功能特点

  • 缓存功能 : 正向代理服务器可以缓存经常访问的资源, 当客户端再次请求这些资源时,可以直接从缓存中获取, 提高访问速度。
  • 内容过滤 : 正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、阻止恶意网站等。
  • 访问控制: 通过正向代理,可以实现对特定网站的访问控制, 如限制员工在工作时间访问娱乐网站。
  • 隐藏客户端身份: 正向代理可以隐藏客户端的真实 IP 地址, 保护客户端的隐私。
  • 负载均衡: 在多个目标服务器之间分配客户端请求, 提高系统的可扩展性和可靠性。

应用场景

  • 公共网络环境: 在公共场所如图书馆、 学校等提供的网络环境中, 通过正向代理可以实现对网络资源的合理分配和管理, 确保网络使用的公平性和安全性。

  • 跨境电商与海外访问: 对于跨境电商或需要访问海外资源的企业和个人, 正向代理可以帮助他们突破网络限制, 顺畅地访问海外网站和资源。

9.2 反向代理

反向代理服务器是一种网络架构模式, 其作为 Web 服务器的前置服务器, 接收来自客户端的请求, 并将这些请求转发给后端服务器, 然后将后端服务器的响应返回给客户端。

这种架构模式可以提升网站性能、 安全性和可维护性等

基本原理

  • 反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先会到达反向代理服务器。
  • 反向代理服务器会根据配置的规则将请求转发给后端的 Web服务器,并将 Web 服务器的响应返回给客户端。 在这个过程中,客户端并不知道实际与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信

应用场景

  • 负载均衡: 反向代理服务器可以根据配置的负载均衡策略, 将客户端的请求分发到多个后端服务器上, 以实现负载均衡。 这有助于提升网站的整体性能和响应速度,特别是在高并发场景下。
  • 动静分离: 在大型网站中, 通常需要将静态资源和动态资源分开处理。 通过将静态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应,而无需再次向后端服务器发起请求。 这可以大大提升静态资源的访问速度

9.3 NAT VS 代理服务器

路由器往往都具备 NAT 设备的功能,通过 NAT 设备进行中转,完成子网设备和其他子网设备的通信过程。

代理服务器看起来和 NAT 设备有一点像,客户端像代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器;服务器返回结果后,代理服务器又把结果回传给客户端。

那么 NAT 和代理服务器的区别有哪些呢?

  • 从应用上讲,NAT 设备是网络基础设备之一,解决的是 IP 不足的问题。代理服务器则是更贴近具体应用,比如通过代理服务器进行翻墙,另外像迅游这样的加速器,也是使用代理服务器.
  • 从底层实现上讲,NAT 是工作在网络层,直接对 IP 地址进行替换;代理服务器往往工作在应用层.
  • 从使用范围上讲, NAT 一般在局域网的出口部署;代理服务器可以在局域网做,也可以在广域网做,也可以跨网
  • 从部署位置上看,NAT 一般集成在防火墙, 路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上

10.网络总结

  1. 请描述一下一次网络转发的完整过程:
  1. 从应用层,把数据做序列化,转换成字符串,然后把他从应用层拷贝到TCP的发送缓冲区(一旦到了这里,发送数据就与用户无关了,由OS自己决定)
  2. TCP结合滑动窗口、流量控制、超时重传等策略,把数据包可能拆分成若干数据段,添加TCP报头,向下交付给IP
  3. 添加IP报头,封装成MAC帧,然后进行路由
  4. 路由的过程涉及:局域网通信,路由表查找,ARP的过程
  5. 到达目标主机,在自底向上,根据每一层协议的分包、分用,把报头向上交付,直到对方的接收缓冲区
  6. 应用层再采用read或recv将数据从缓冲区拷贝到应用层,然后解决粘包问题,进行反序列化,得到结构化数据
  7. 处理,将处理后的字符串,将上述过程再做一遍,即可完成一次完整的通信过程。
  1. 数据链路层
  • 数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
  • 以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
  • 以太网帧格式
  • 理解 mac 地址
  • 理解 arp 协议
  • 理解 MTU
  1. 网络层
  • 网络层的作用L在复杂的网络环境中确定一个合适的路径.
  • 理解 IP 地址,理解 IP 地址和 MAC 地址的区别.
  • 理解 IP 协议格式.
  • 了解网段划分方法
  • 理解如何解决 IP 数目不足的问题,掌握网段划分的两种方案,理解私有 IP 和公网 IP
  • 理解网络层的 IP 地址路由过程,理解一个数据包如何跨越网段到达最终目的地.
  • 理解 IP 数据包分包的原因.
  • 了解 ICMP 协议.
  • 了解 NAT 设备的工作原理
  1. 传输层
  • 传输层的作用: 负责数据能够从发送端传输接收端.
  • 理解端口号的概念.
  • 认识 UDP 协议, 了解 UDP 协议的特点.
  • 认识 TCP 协议, 理解 TCP 协议的可靠性. 理解 TCP 协议的状态转化.
  • 掌握 TCP 的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.
  • 理解 TCP 面向字节流, 理解粘包问题和解决方案.
  • 能够基于 UDP 实现可靠传输.
  • 理解 MTU 对 UDP/TCP 的影响.
  1. 应用层
  • 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
  • 能够根据自己的需求, 设计应用层协议.
  • 了解 HTTP 协议.
  • 理解 DNS 的原理和工作流程.
相关推荐
web135085886352 小时前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络
若云止水7 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(5)
网络·nginx·ubuntu
Ftrans7 小时前
【分享】网间数据摆渡系统,如何打破传输瓶颈,实现安全流转?
运维·服务器·网络·安全
七爷不在我这里7 小时前
charles 抓取https<仅web端>
前端·网络协议·https·charles
IPdodo全球网络服务8 小时前
如何打造一个安全稳定的海外社媒账号?
网络·安全
Zfox_8 小时前
DNS 详细过程 与 ICMP
网络·网络协议·dns·icmp
山兔19 小时前
3.1、密码学基础
服务器·网络·密码学
xmweisi10 小时前
【华为】查看防火墙会话表命令
服务器·网络·华为
yourkin66610 小时前
三次握手内部实现原理
网络
Black蜡笔小新10 小时前
实时音视频通信EasyRTC嵌入式WebRTC音视频通话SDK体积缩小90%
网络协议·音视频·webrtc·实时音视频·p2p