ip地址和子网掩码
引入


IP协议概述

IP的主要作用

IP网络的结构

IP头封装格式



MTU
MTU(Maximum Transmission Unit)是网络中一个物理或逻辑链路所能承载的最大数据包大小。它通常以字节为单位表示,常见的 MTU 值为 1500 字节。MTU 的大小取决于链路的类型和技术标准,例如以太网的 MTU 值为 1500 字节,而 PPPoE 的 MTU 值为 1492 字节。如果发送的数据包大小超过了 MTU 的大小,那么数据包将会被分片成多个碎片进行传输,从而降低传输效率和数据吞吐量。

MSS
MTU和MSS的关系
https://blog.51cto.com/fengjicheng/5177620
MSS(Maximum Segment Size,最大分节大小)是 TCP 协议中一个参数,它表示每个 TCP 数据包的最大有效载荷大小。MSS 的大小通常是 MTU 减去 TCP 和 IP 头的长度(通常为 40 字节),因此在一个 MTU 大小为 1500 字节的网络中,MSS 值通常为 1460 字节。MSS 的大小对 TCP 连接的性能和稳定性有很大影响,因为它决定了每个 TCP 数据包的大小和数量。如果 MSS 的大小设置得太大,那么每个 TCP 数据包的大小就会很大,会导致网络拥塞和延迟增加。如果 MSS 的大小设置得太小,那么每个 TCP 数据包的数量就会很多,会导致网络负载增加和 TCP 连接效率降低。
常见问题:MTU和MSS配置不合理导致打不开某些网站
https://www.v2ex.com/t/940431#reply8
问题描述:
在Linux系统里进行pppoe拨号上网,拨号成功后会创建一个名为 ppp0的网络接口,这个网络接口的IP就是运营商分配的动态公网IP
,然后通过以下命令将这台Linux作为其它设备的网关。
# 将来自 ppp0 接口的数据包进行源地址转换(SNAT),以便从该接口出去的数据包能够返回到正确的源地址
## -t nat:指定要配置的 iptables 表是 nat 表,该表用于进行 NAT 规则配置
## -A POSTROUTING:向 POSTROUTING 链(输出链)添加一条规则。POSTROUTING 链用于对从本地网络出去的数据包进行处理
## -o ppp0:指定规则应用于出口接口为 ppp0 的数据包
## -j MASQUERADE:指定要使用 MASQUERADE 动作,即进行源地址转换(SNAT)操作
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 开启Linux内核的IP转发
sysctl -w net.ipv4.ip_forward=1
遇到的问题是其他设备将这台Linux 作为网关后大部分网站都打不开,但有个别网站能打开。
打不开的比如: https://www.jd.com
能打开的比如: https://mirrors.163.com
原因分析:
多半是MTU和MSS值设置有误。
MTU:WAN口pppoe MTU是1492,LAN口以太网是1500。MSS:现在网站前面经过层层网络转发,包的头太多了,TCP自动协商最大分段量基本不会成功,所以要手动指定MSS。
基本上就这2个问题,按我的经验判断,估计更大可能性是MSS问题。
其实我们买的大多数路由器,都默认指定好了MSS,不需要你们额外配置。所以很多人根本不知道,甚至不知道有MSS这个概念,不知道非常正常。
但针对一些企业路由器,MSS是需要一开始就必须要手动指定的。不过自动配置MSS这是趋势,现在连 routeros/Mikrotik 的产品都会在 mange 处自动打上标记并修改MSS。
解决办法:
手动指定MSS(Maximum Segment Size,最大分节大小)。
先设置MSS为1460还是不行,没想到MSS现在1460都不够用了,要1452了。
# 在iptables 防火墙中配置 MSS调整规则,以避免 TCP 数据包过大而导致网络传输效率降低。
## -A FORWARD:向 FORWARD 链(转发链)添加一条规则。FORWARD 链用于对转发的数据包进行处理。
## -p tcp:指定规则应用于 TCP 协议的数据包。
## --tcp-flags SYN,RST SYN:指定规则应用于 SYN 标志和 RST 标志都设置为 1 的 TCP 数据包,即 TCP 连接建立时的 SYN 数据包。
## -j TCPMSS:指定要使用 TCPMSS 动作,即对 TCP 数据包进行 MSS 调整。
## --set-mss 1452:将 MSS 的值设置为 1452 字节,以避免 TCP 数据包的大小超过网络链路的 MTU(最大传输单元)值,从而导致数据包被分片,降低网络传输效率。
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
# 自动调整mss值--推荐
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
在 TCP 连接建立时,双方会交换 MSS 值,以确定每个 TCP 数据包的最大有效载荷大小。如果 TCP 数据包的大小超过了网络链路的 MTU 值,数据包就会被分片,降低网络传输效率。因此,通过调整 MSS 值,可以避免 TCP 数据包的大小超过网络链路的 MTU 值。
首先,“转发”不是由 masquerade(SNAT) 决定的,
masquerade(SNAT) 只是在“决定要转发”之后做一些工作。
路由转发是转发,NAT 是 NAT ,在网络层面,属于完全两种类型的操作。
家庭路由器将这 2 步整合在一起了,所以一般人并不了解,不清楚底层原理。
IP地址和地址映射
IP地址定义
网络层地址,ip地址是一组
32位的2进制数。

IP地址格式

IP地址规则
IP地址包括网络地址(前三段数字)和主机地址(第四段数字)
前三段是网段; 第四段是主机地址.
IP地址结构

IP地址分类
IP地址分成了5类

IP地址分类用来划分不同的网络规模。
A类地址


B类地址


C类地址

D类地址(组播地址)

E类地址(科研用地址)

特殊地址

2进制主机位全是1,转换为10进制数字为255。
公网/私网地址

私网地址
继10.0.0.0/8、172.16.0.0/24、192.168.0.0/16之后又诞生了第四个私有IPv4地址,但100.64.0.0/10是在服务商网络内,不同之处在于只使用。100.64.0.0/10,Shared address space,是预留给ISP运营商做NAT用的。ISP运营商设备给用户分配100.64.0.0/10内的IP,然后再在运营商设备上进行NAT,转换成公网IP。
子网掩码
子网掩码用于计算出网络地址,控制广播范围。
[没啥用的小技巧]-IP地址中的0可以省掉
# 比如
127.1
192.168.1



8万+

被折叠的 条评论
为什么被折叠?



