title | tags | grammar_cjkRuby |
---|---|---|
網絡基礎 |
網絡,Linux,Note |
true |
IP 表头里面含有:
TTL
,Protocol
,来源地址
与目标地址
也就够了!而这个 IP 表头的来源与目标 IP ,以及那个判断通过多少路由器的 TTL ,就能了解到这个 IP 将被如何传送到目的端吶。
包含Net_ID
和Host_ID
在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复,此外,Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,因为全为 0 表示整个网段的地址 (Network IP),而全为 1 则表示为广播的地址 (Broadcast IP)。例如上面的例子当中,192.168.0.0 (Host_ID 全部为 0)以及 192.168.0.255 (Host_ID 全部为 1) 不可用来作为网段内主机的 IP 设定,也就是说,这个网段内可用来设定主机的 IP 是由 192.168.0.1 到 192.168.0.254;
IP 网段分为五种等级, 每种等级的范围主要与 IP 那 32 bits 数值的前面几个位有关,基本定义如下:
以二进制说明 Network 第一个数字的定义:
Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 0
|--net--|---------host------------|
Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 10
|------net-------|------host------|
Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 110
|-----------net-----------|-host--|
Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 1110
Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> NetI_D 的开头是 1111
五种分级在十进制的表示:
Class A : 0.xx.xx.xx ~ 127.xx.xx.xx
Class B : 128.xx.xx.xx ~ 191.xx.xx.xx
Class C : 192.xx.xx.xx ~ 223.xx.xx.xx
Class D : 224.xx.xx.xx ~ 239.xx.xx.xx
Class E : 240.xx.xx.xx ~ 255.xx.xx.xx
那到底是什么参数来达成子网的切分呢?那就是 Netmask (子网掩码) 的用途啦!这个 Netmask 是用来定义出网域的最重要的一个参数了!不过他也最难理解了~@_@。为了帮助大家比较容易记忆住 Netmask 的设定依据,底下我们介绍一个比较容易记忆的方法。同样以 192.168.0.0 ~ 192.168.0.255
这个网域为范例好了,如下所示,这个 IP 网段可以分为 Net_ID
与 Host_ID
,既然 Net_ID 是不可变的,那就假设他所占据的 bits 已经被用光了 (全部为 1),而 Host_ID 是可变的,就将他想成是保留着 (全部为 0),所以, Netmask 的表示就成为:
192.168.0.0~192.168.0.255 这个 C Class 的 Netmask 说明
第一个 IP: 11000000.10101000.00000000.00000000
最后一个 : 11000000.10101000.00000000.11111111
|----------Net_ID---------|-host--|
Netmask : 11111111.11111111.11111111.00000000 <== Netmask 二进制
: 255 . 255 . 255 . 0 <== Netmask 十进制
特别注意喔,netmask 也是 32 位,在数值上,位于 Net_ID 的为 1 而 Host_ID 为 0
将他转成十进制的话,就成为255.255.255.0
啦! 这样记忆简单多了吧!照这样的记忆方法,那么 A, B, C Class 的 Netmask 表示就成为这样:
Class A, B, C 三个等级的 Netmask 表示方式:
Class A : 11111111.00000000.00000000.00000000 ==> 255. 0. 0. 0
Class B : 11111111.11111111.00000000.00000000 ==> 255.255. 0. 0
Class C : 11111111.11111111.11111111.00000000 ==> 255.255.255. 0
所以说, 192.168.0.0 ~ 192.168.0.255 这个 Class C 的网域中,他的 Netmask 就是 255.255.255.0 !再来,我们刚刚提到了当 Host_ID 全部为 0 以及全部为 1 的时后该 IP 是不可以使用的,因为 Host_ID 全部为 0 的时后,表示 IP 是该网段的 Network ,至于全部为 1 的时后就表示该网段最后一个 IP ,也称为 Broadcast ,所以说,在 192.168.0.0 ~ 192.168.0.255 这个 IP 网段里面的相关网络参数就有:
Netmask: 255.255.255.0 <==网域定义中,最重要的参数
Network: 192.168.0.0 <==第一个 IP
Broadcast: 192.168.0.255 <==最后一个 IP
可用以设定成为主机的 IP 数:
192.168.0.1 ~ 192.168.0.254
好了,刚刚提到 Class C 还可以继续进行子域 (Subnet) 的切分啊,以 192.168.0.0 ~192.168.0.255 这个情况为例,他要如何再细分为两个子域呢?我们已经知道 Host_ID 可以拿来当作 Net_ID,那么 Net_ID 使用了 25 bits 时,就会如下所示:
原本的 C Class 的 Net_ID 与 Host_ID 的分别
11000000.10101000.00000000.00000000 Network: 192.168.0.0
11000000.10101000.00000000.11111111 Broadcast: 192.168.0.255
|----------Net_ID---------|-host--|
切成两个子网之后的 Net_ID 与 Host_ID 为何?
11000000.10101000.00000000.0 0000000 多了一个 Net_ID 了, 为 0 (第一个子网)
11000000.10101000.00000000.1 0000000 多了一个 Net_ID 了, 为 1 (第二个子网)
|----------Net_ID-----------|-host--|
第一个子网
Network: 11000000.10101000.00000000.0 0000000 192.168.0.0
Broadcast: 11000000.10101000.00000000.0 1111111 192.168.0.127
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000 255.255.255.128
第二个子网
Network: 11000000.10101000.00000000.1 0000000 192.168.0.128
Broadcast: 11000000.10101000.00000000.1 1111111 192.168.0.255
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000 255.255.255.128