公网 私网 MAC MSS APR NAT

理解运营商,IP,和网络设备的交互

我们如何连通网络?

1. 物理连接

  • 网络运营商到家庭的连接:

    • 网络运营商通过光纤将宽带信号传输到用户家中。调制解调器负责将模拟(光电)信号信号转化为数字信号。
  • 家庭网络设备的连接:

    • 用户将运营商提供的调制解调器(或光猫)与家庭路由器的WAN(公网IP)口相连。路由器的LAN口则连接到家庭中的计算机、智能电视、手机等设备。

2. 网络配置

路由器具有两套密码机制

  • 验证运营商服务所需的用户名和密码。

  • 验证本地局域网用户需要的用户名和密码。

  • 路由器设置:

    • 首次连接时,用户需要通过计算机或手机访问路由器的管理界面(通常是通过浏览器访问路由器的默认IP地址,如192.168.1.1)。
    • 在路由器管理界面中,用户配置路由器的WAN口(连接到网络运营商的一侧),通常包括配置PPPoE拨号信息(用户名和密码)或动态/静态IP地址的设置。
  • PPPoE拨号:

    • 如果使用PPPoE拨号方式,路由器会通过用户提供的用户名和密码向运营商的服务器发送验证请求。一旦验证通过,路由器就会获得一个公网IP地址,并建立与互联网的连接。

3. NAT转换

  • IP地址转换:
    • 路由器将从运营商获取的公网IP地址与家庭内部的私有IP地址进行映射,利用NAT(Network Address Translation)技术实现多个家庭设备共享一个公网IP地址上网。
  • 端口地址转换(PAT):
    • 路由器利用PAT技术通过不同的端口号区分来自家庭内部不同设备的请求,使多个设备能够同时通过一个公网IP进行通信。

NAT技术

  • NAT(Network Address Translation,网络地址转换) 是一种网络技术,用于在私有网络和公有网络之间转换IP地址。NAT允许多台设备使用一个公共IP地址访问外部网络,主要用于节省IPv4地址资源和增强网络安全性。

NATP(Network Address Port Translation)

  • NATP 它是 NAT 的一种扩展形式。通过端口号的转换,NATP允许多个设备使用相同的公共IP地址进行外部通信,但通过不同的端口号来区分流量

NATP转换过程

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

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;

  • NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;

  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

公网与私网

公网

  • 定义: 公网IP地址是全球唯一的,可以在互联网上进行直接访问。公网IP地址由互联网号码分配机构(IANA)进行全球分配,并由各地区的注册机构(如APNIC、ARIN)进行管理和分配。

  • 用途: 公网IP用于在全球范围内标识互联网中的设备,服务器、网站、云服务等需要分配公网IP以供互联网用户访问。

  • 特性: 公网IP地址是可以被全球范围内的其他设备访问的,通常用于服务端、互联网出口等需要被外界访问的设备或服务。

私网(Private Network)

  • 定义: 私网IP地址用于本地网络(局域网)中的设备通信,这些地址在全球范围内不是唯一的,无法直接通过互联网访问。私网IP地址被预留用于局域网内部通信,不会在互联网中路由。

  • 用途: 私网IP用于家庭、企业局域网内的设备通信,如计算机、手机、打印机、路由器等。私网IP地址由路由器或DHCP服务器分配,不需要从外部获取。

  • 特性: 私网IP地址只能在本地局域网中使用,无法直接被互联网访问,需要通过NAT(网络地址转换)等技术将私网IP映射到公网IP进行外部通信。

公网与私网的联系

  • NAT(网络地址转换): 私网设备通过路由器或网关进行NAT转换,将私网IP地址映射为公网IP地址,从而与外部互联网通信。NAT通常包括端口地址转换(PAT),用于处理多个私网设备共享一个公网IP的情况。

  • 通信流程: 在局域网内,设备使用私网IP进行通信;当私网设备需要访问互联网时,路由器将其私网IP转换为一个有效的公网IP,数据包通过NAT转换后进行传输。返回的数据包也会通过NAT转换还原为私网IP,再传送给局域网内的设备。

路由

路由的过程,就是信息通过路由表在“跳转”的过程。当IP数据包, 到达路由器时, 路由器会先查看目的IP:

  • 路由器决定这个数据包是能直接发送给目标主机,如果目的IP命中了路由表,就直接转发即可。否则发给下一个路由器。

  • 依次反复, 一直到达目标IP地址;

具体过程:

  1. 当一个数据包到达网络设备时,设备会查阅其路由表。如果数据包的目的IP地址在路由表中找到匹配项(即“命中”路由表),设备就会根据该匹配项的指示,将数据包直接转发到下一个指定的网络接口或网关。

  2. 路由表的最后一行通常是“默认路由”或“缺省路由”。这条路由项指定了一个默认的“下一跳”地址(即数据包应转发的下一个路由器或网关)和一个网络接口(用于发送数据包)。默认路由是在数据包的目的IP地址没有匹配到路由表中的其他条目时使用的。

  3. 如果数据包的目的IP地址在路由表中没有找到任何匹配项,设备会使用默认路由条目来处理数据包。根据默认路由的指示,设备会通过指定的网络接口将数据包发送到“下一跳”地址。这通常意味着数据包将转发给一个更高层的路由器,继续寻找到达最终目的地的路径。

数据链路层

数据链路层解决的是我们直接相连的主机之间数据交互的问题。而网络层,则是对我们该如何在整个网络中传递数据做出决策。

以太网 —— 常见的MAC帧协议

以太网帧格式

以太网(Ethernet)帧格式是网络传输中基本的数据单位,定义了数据在以太网网络上传输时的结构。以太网帧由多个字段组成,每个字段都有特定的作用。

各字段的作用

  1. 目标MAC地址(Destination MAC Address, 6字节)

    • 作用: 目标MAC地址指定了数据帧的接收者,即目标设备的物理地址。如果该地址是广播地址(如FF:FF:FF:FF:FF:FF),那么帧将被网络上的所有设备接收。
  2. 源MAC地址(Source MAC Address, 6字节)

    • 作用: 源MAC地址指定了数据帧的发送者,即发送设备的物理地址。它用于识别数据帧的发送方。
  3. 以太网类型或长度(EtherType/Length, 2字节)

    • 作用:
      • 分用: 该字段指定上层协议的类型(如IPv4、IPv6、ARP等),从而判断如何向上交付数据。
  4. 数据(Payload, 46-1500字节)

    • 作用: 数据字段包含了实际传输的数据负载。根据协议的不同,它可能包含IP数据包、ARP请求等。以太网帧的最小有效负载为46字节,最大为1500字节。如果数据不足46字节,填充数据会被加入。
  5. 帧校验序列(FCS, 4字节)

    • 作用: 帧校验序列用于检测帧传输过程中的错误。FCS字段通常使用循环冗余校验(CRC)算法计算,接收方利用该值检测接收到的帧是否出现错误。如果校验失败,帧会被丢弃。

APR(Address Resolution Protocol)协议:获得目的IP对应的MAC地址 —— 网络层与数据链路层之间

  • 以太网帧格式中,如何填充目的MAC字段? —— ARP协议

ARP协议与以太网

ARP报文格式

ARP报文的格式:

ARP报文由两个主要部分组成:ARP请求报文ARP响应报文

  1. 硬件类型 - 16位
  • 描述硬件地址类型。例如,对于以太网,硬件类型值为1
  1. 协议类型 (Protocol Type, PTYPE) - 16位
  • 描述要映射的协议地址类型。例如,IPv4的协议类型值为0x0800
  1. 硬件地址长度- 8位
  • 硬件地址的长度,以字节为单位。对于以太网,这个值通常为6,因为MAC地址长度是6字节。
  1. 协议地址长度 - 8位
  • 协议地址的长度,以字节为单位。对于IPv4,这个值通常为4,因为IPv4地址长度是4字节。
  1. 操作- 16位
  • 指示ARP报文的类型:
    • 1表示ARP请求(request),
    • 2表示ARP响应(reply)。
  1. 发送方硬件地址长度 - 可变长度
  • 发送方的MAC地址。对于以太网,它的长度为6字节。
  1. 发送方协议地址长度 - 可变长度
  • 发送方的IP地址。对于IPv4,它的长度为4字节。
  1. 目标硬件地址 (Target Hardware Address, THA) - 可变长度
  • 目标方的MAC地址。在ARP请求中,这个字段通常为空(0),因为请求时还不知道目标的MAC地址。
  1. 目标协议地址 (Target Protocol Address, TPA) - 可变长度
  • 目标方的IP地址。对于IPv4,它的长度为4字节。

工作原理:

  1. ARP请求
  • 当主机A需要向主机B发送数据,但只知道主机B的IP地址而不知道其MAC地址时,主机A会在局域网内广播一个ARP请求包。
  • 该请求包中包含主机A的IP地址、MAC地址以及要解析的目标IP地址(主机B的IP地址)。
  1. ARP响应
  • 当主机B收到ARP请求包时,会检查请求包中的目标IP地址是否与自己的IP地址匹配。
  • 如果匹配,主机B就会发送一个ARP响应包,包含自己的MAC地址,并将此响应包单播发送给主机A。
  1. 更新ARP缓存
  • 主机A收到主机B的ARP响应后,会将主机B的IP地址和MAC地址的对应关系保存到自己的ARP缓存中,以便将来可以直接使用而不需要再次发起ARP请求。

因为更新机制衍生的ARP安全性问题:

ARP欺骗(ARP Spoofing):攻击者可以通过伪造ARP响应包,将自己伪装成网络中的某台设备,劫持网络流量。这种攻击可以导致数据窃听、流量中断等安全问题。

ARP缓存:

  • 每个设备通常会维护一个ARP缓存表,用于存储最近解析的IP地址和MAC地址的对应关系,以减少ARP请求的次数,提升网络通信效率。

MSS

MSS(Maximum Segment Size) 是指在TCP/IP协议中,单个TCP段(Segment)中可以传输的最大数据量(不包括TCP)。

MSS的作用:

MSS定义了在一次TCP传输中可以发送的最大数据块大小,这样可以避免IP层TCP段进行分片。

MSS的计算:

MSS通常是根据路径上最大传输单元(MTU,Maximum Transmission Unit)来计算的。MTU是指在网络层(IP层)传输的数据包的最大大小。以太网的标准MTU为1500字节,而MSS通常在MTU的基础上减去IP头部(通常20字节)和TCP头部(通常20字节)的大小。对于标准以太网来说,MSS通常为:

MSS = 1500(MTU) - 20(IP头部) - 20(TCP头部) = 1460(字节)}

MSS与MTU的关系:

MSS直接受MTU的限制,是MTU减去TCP和IP头部后的大小。MTU在链路层定义,影响链路上可以传输的最大数据包的大小,而MSS则是在传输层定义,影响TCP段的大小。

例如,如果某一网络的MTU为1200字节,则MSS可能会被设置为1160字节,以确保IP层不需要对TCP段进行分片。

分片

1. 分片的触发条件

当一个IP数据包的大小超过了链路的最大传输单元(MTU, Maximum Transmission Unit)时,需要进行分片。

  • MTU是网络设备(如路由器、网卡)允许通过的最大数据包大小。

2. 分片过程

步骤1: 分片标识(Identification)

  • 唯一标识主机发送的报文。如果IP数据报在数据链路层被分片,则每个片的ID都相同。

步骤2: 设置标志位(Flags)

  • IP头中的标志位(Flags)包含三个字段:
    • Reserved: 保留位,通常为0。

    • Don’t Fragment (DF): 禁止分片位。如果设置为1,数据包不能被分片,超出MTU的数据包会被丢弃并返回一个ICMP错误。

    • More Fragments (MF): 更多分片位。如果设置为1,表示这是后续分片的一个部分;如果是最后一个分片,MF位为0。

步骤3: 分片偏移量(Fragment Offset)

  • 分片后,每个片段的偏移量(Fragment Offset)指示该片段在原始数据包中的位置。这个偏移量是每个片段相对于原始数据包起始位置的字节偏移,单位是8字节(64位)。

步骤4: 分片数据

  • 数据包根据MTU的大小进行切割。每个片段包含一个IP头部和一部分数据。IP头部的大小通常为20字节(不包含选项部分),所以每个片段的数据部分的大小为MTU - IP头部长度。除最后一个片段外,每个片段的大小通常是8字节的倍数。

步骤5: 更新头部信息

  • 每个分片的IP头部信息都会更新,包括标识符、标志位、片段偏移量和校验和等。

举例说明:

  • 如果一个数据包总长度为4000字节,而MTU为1500字节,则分片后会产生3个片段:
    • 片段1: 包含数据字节0-1479(偏移量为0)
    • 片段2: 包含数据字节1480-2959(偏移量为185)
    • 片段3: 包含数据字节2960-3999(偏移量为370)

如果一个数据被分片 —— 那么它的分片偏移不等于0更多分片标志位等于1

如果分片的数据中其中一个被丢掉了怎么办?重新发送,因此不建议分片,因为可能导致更多的丢包

侦测丢失的方法:

  • 丢第一个:没有任何一个分片偏移量为0。

  • 丢中间:片偏移缺失。

  • 最后一个:没有任何一个片段MF位为0。

4. 目的地的组装过程

步骤1: 接收分片

  • 目的地主机会收到分片后的数据包,识别出它们属于同一个原始数据包。这是通过检查IP头中的标识符(Identification)字段来实现的。

步骤2: 缓存片段

  • 目的主机会将分片暂存在一个缓冲区中,等待所有分片到达。

步骤3: 重组数据包

  • 根据每个片段的偏移量(Fragment Offset)和标志位(MF),将所有片段按照原始数据包的顺序拼接起来。如果所有片段都已到达且没有丢失,IP协议会将它们组合成完整的数据包。

步骤4: 检查完整性

  • 重组完成后,主机会计算数据包的校验和(Checksum)以确认数据的完整性。如果校验通过,数据包将被交给上层协议(如TCP、UDP)进行处理。

步骤5: 丢弃无效数据包

  • 如果某些片段丢失,或者超时未收到所有片段,目的主机将丢弃整个数据包。

ICMP协议 —— 网络层协议

ICMP的主要功能

  1. 检测
  • 目的不可达:当数据包无法(如APR)到达目标主机时,ICMP会发送“目的不可达”消息。常见的原因包括目标主机不存在、网络无法到达或端口不可达。

  • 时间超时:当数据包在网络中经过的时间超过了TTL(生存时间)值时,ICMP会发送“时间超时”消息。这个消息通常用于通知发送方数据包在网络中循环了很长时间,可能造成网络拥堵。

  1. 诊断工具
  • ping:ICMP协议的“回显请求”和“回显应答”消息用于网络诊断工具ping。Ping命令通过发送ICMP回显请求来检查目标主机是否可达,并测量往返时间。

  • traceroute:该工具利用ICMP的“时间超时”消息来跟踪数据包经过的路由路径,以帮助诊断网络问题。

ICMP报文格式

ICMP报文有一个简单的格式,主要包括以下几个字段:

  1. 类型(Type):指示ICMP消息的类型,如回显请求、回显应答、目的不可达等。
  2. 代码(Code):提供更多的详细信息,进一步定义消息类型。例如,对于“目的不可达”类型,代码字段可以指定是网络不可达、主机不可达还是端口不可达。
  3. 校验和(Checksum):用于检测ICMP报文在传输过程中是否出现了错误。
  4. 标识符(Identifier):通常用于标识回显请求和回显应答消息,以便配对响应。
  5. 序列号(Sequence Number):用于标识和匹配ICMP消息中的数据段。
  6. 数据(Data):ICMP消息的具体内容。对于回显请求和回显应答,这部分通常包含发送方附加的数据。

内网穿透

内网穿透,又称为 NAT穿透端口映射穿透,是指通过特定技术,使得位于私有网络(内网)中的设备能够被外部网络(公网上)的设备访问。

  • 例如:内网中的设备通过建立与公网服务器的长连接,再让我们的设备访问公网服务器,从而达到访问内网设备的目的(反向代理) —— 此时公网服务器并不提供服务,只是单纯的进行数据转发。

代理服务器

代理服务器是一种中间服务器,它位于客户端和目标服务器之间,充当中介来处理客户端的请求并将其转发到目标服务器。代理服务器的主要作用包括以下几个方面:

1. 访问控制

  • 网络管理员可以通过代理服务器控制用户对某些网站或服务的访问。通过设置访问规则,可以阻止访问特定网站或只允许访问特定的资源。

2. 内容过滤

  • 代理服务器可以过滤内容,阻止用户访问不适当或不安全的内容。这在公司和学校环境中广泛使用,以确保遵守网络使用政策。

3. 缓存加速

  • 代理服务器可以缓存从目标服务器获取的内容。当其他用户请求相同的内容时,代理服务器可以直接从缓存中提供,而不必每次都向目标服务器请求数据,从而加速访问速度并减少带宽消耗。

4. 负载均衡

  • 代理服务器可以作为负载均衡器,将请求分发到多个后端服务器上,以分散负载并提高服务的可用性和响应速度。

5. 突破网络限制

  • 代理服务器可以帮助用户绕过网络限制或防火墙,访问被封锁的网站或服务。例如,在某些国家或地区,访问某些网站可能被限制,用户可以通过代理服务器绕过这些限制。

常见类型的代理服务器

  1. 正向代理(Forward Proxy)
  • 正向代理位于客户端和互联网之间,客户端通过正向代理访问互联网资源。正向代理通常用于隐藏客户端的身份或访问受限资源。
  1. 反向代理(Reverse Proxy)
  • 反向代理位于互联网和服务器之间,代表服务器接收客户端的请求并将其转发给后端服务器。反向代理通常用于负载均衡、SSL加密、加速Web应用和隐藏服务器的真实地址。

公网 私网 MAC MSS APR NAT
https://weihehe.top/2024/09/03/文件和socket/
作者
weihehe
发布于
2024年9月3日
许可协议