ip地址和子网掩码

引入

image.png
image.png


IP协议概述

image.png


IP的主要作用

image.png


IP网络的结构

image.png


IP头封装格式

image.png
image.png
image.png


MTU

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


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


原因分析:

多半是MTUMSS值设置有误

  • MTUWANpppoe MTU1492LAN 口以太网是 1500
  • MSS:现在网站前面经过层层网络转发头太多了,TCP 自动协商最大分段量基本不会成功,所以要手动指定MSS

基本上就这2个问题,按我的经验判断,估计更大可能性是MSS问题。

其实我们买的大多数路由器,都默认指定好了MSS,不需要你们额外配置。所以很多人根本不知道,甚至不知道有MSS这个概念,不知道非常正常。

但针对一些企业路由器MSS是需要一开始就必须要手动指定的。不过自动配置MSS这是趋势,现在连 routeros/Mikrotik 的产品都会在 mange 处自动打上标记并修改MSS


解决办法:

手动指定MSS(Maximum Segment Size,最大分节大小)
先设置MSS1460还是不行,没想到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) 只是在“决定要转发”之后做一些工作。

路由转发转发NATNAT ,在网络层面,属于完全两种类型的操作。

家庭路由器将这 2 步整合在一起了,所以一般人并不了解,不清楚底层原理。


IP地址和地址映射


IP地址定义

网络层地址,ip地址是一组32位2进制数。

image.png


IP地址格式

image.png


IP地址规则

IP地址包括网络地址(前三段数字)和主机地址(第四段数字)
前三段是网段; 第四段是主机地址.
image.png


IP地址结构


IP地址分类

IP地址分成了5类

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


A类地址

image.png
image.png


B类地址

image.png
image.png


C类地址

image.png


D类地址(组播地址)

image.png


E类地址(科研用地址)

image.png


特殊地址

image.png
2进制主机位全是1,转换为10进制数字为255
image.png


公网/私网地址

image.png


私网地址

10.0.0.0/8172.16.0.0/24192.168.0.0/16之后又诞生了第四个私有IPv4地址,但100.64.0.0/10是在服务商网络内,不同之处在于只使用。
100.64.0.0/10Shared address space,是预留给ISP运营商NAT用的。ISP运营商设备给用户分配100.64.0.0/10内的IP,然后再在运营商设备上进行NAT,转换成公网IP。


子网掩码

子网掩码用于计算出网络地址,控制广播范围
image.png


[没啥用的小技巧]-IP地址中的0可以省掉

# 比如
127.1
192.168.1

image.png

image.png
image.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值