惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - iCynosure

another PT opportunity!!!!!!!! 一个兼职机会,不过是Java阵营的,大家不要骂我 TechED的日程....好难选择阿,sigh 讨论一下,该如何才能不被google搜索到? Control the lamps in america! MSN Search: Google和Baidu外的一个新选择 - iCynosure 制作安装删除必备——公用dll一览 something new about google(3): google tools something new about google(2): google services something new about google(1): Froogle HTTP的穿梭 体会到了whidbey编写asp.net不需要IIS的好处了 TDD使用的疑问? VC6 SP6 released! 好东东!!!From "research.microsoft.com" 工程的常量定义应该放在哪里最合适? .NET vs J2EE CCTV is coming... 咋做到让大家点link再查看文章呢?
理解子网掩码
iCynosure · 2004-04-08 · via 博客园 - iCynosure

看了Jon C.Snader先生的Effective TCP/IP Programming,觉得大有收获。我试着将其中的核心以及自己的理解解释给大家。我的水平比较低微,但这正好为初学网络的朋友提供一些切入点,因为理解我的文章大概不会有什么问题。好的,接着便来讲解正题。

学一个东西我们总要问为什么,子网掩码谁不知道,谁不会用,但是我们还是要问一句:Why We Use Subnet Mask。

还是稍微来回顾一下IP Address吧,我们知道IPv4总共有5类地址:class-A,class-B,class-C,multicast和reserved。他们的结构如下,具体的细节恕不赘述:

id Network ID Host ID

有127个A类地址,每个A类地址具有2^24台主机。
有16384个B类地址,每个65534台主机
他们对应了拥有大量主机数的巨型网络。等等,这和subnet mask有什么关系?

两个问题:
首先,把单一的这类地址分配给单一的用户会造成大量的浪费。
其次,路由表难以维护。因为没有办法用单一的hub连接所有的这些主机。
设想我所在的实验室有一个B类地址,而这些机器分布在两个物理子网上,如下图:
倘若H1要和H2通信,这个自然没有问题,只需要将H2的IP地址映射到其物理地址。那么H1要和H3说话呢?这就有麻烦了,因为处于不同的子网,H1并不知道H3在什么地方,这时需要通过R1中转。可是R1怎么知道必须向R2中转?如果说我们还有R3,R4...?

问题出现在所有的主机所在的网络ID都是一样的。不引入新概念的解决办法可以是让每一个R的路由表中都保留一份所有主机的条目,但这将成为网管们的噩梦。

解决办法2:给两个子网分配不同的地址,当他们所属的网络ID不同的时候,这些问题也就解决了。只是他并没有解决根本的问题。

最终,我们想到并不一定要在物理上真正赋予某一个子网以网络ID,可以通过逻辑子网的概念将他们划分在一起。这就是subnet mask概念的引入。通过mask,我们做到了在逻辑上延伸了Network ID,让他可以按照我们的需要来划分子网。在我们这个情景中的怎么使用subnet mask来解决具体问题我就不介绍了。

刚才我们使用mask实现了subnet,那么接着我们来进一步思考,如果中国电信有那么多的主机,但是却只能分到1个B类地址和若干个C类地址,怎么把多于254台主机在逻辑上划分到一个子网内?即实现一个supernet?

实现的机理是一样的,同样是通过mask来逻辑上更改Network ID,只是一般用的都是增长,这次是缩减。这个操作的专业名称叫做CIDR:classless interdomain routing,也称作“supernetting”。其过程请参考subnet mask的使用。那么如果对路由有概念的朋友一定会问,怎么防止网络ID解析的二义性?比如说,我的ip是200.10.5.33,路由器上有两个条目:200.10.4.0with255.255.252.0 和 200.10.0.0with255.255.0.0,结果两个都匹配,这是很容易出现的,因为我们缩短了网络ID,撞车的机会自然增加了。为了防止这种情况,最终使用的是匹配的最长的条目,比如上述的200.10.0.0with255.255.0.0的条目匹配的仅仅是16位,而200.10.4.0with255.255.252.0匹配的是22位,所以采用200.10.4.0。

要考虑更detail的内容,我建议你去看看RFC1518[Rekhter and Li 1993],因为我这里讲述的都是概念。