注:本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
前言
注:本文为我对《计算机网络 第五版》(小蓝书)原书阅读后的整理和思考。并不是直接翻译或者照搬原文。表述和理解上可能会和原文意思有出入。有理解不对的地方还望各位大神指出!
ip地址的转化表示
每个byte以.隔开,转为10进制表示。
例如:80 D0 02 97 (16进制)表示为:128.208.2.151
对"如果前缀包含2^8个地址"的理解
书中有小标题所述的一句话,以下是我的理解:
相当于给每个主机都能分配2^8个地址
子网掩码255.255.255.0也可以表示为:128.208.0.0/24,即最小ip地址段+/子网掩码。
两种表达方式的转换在下面会给出。
子网掩码两种表达方式的转换
/21->255.255.248.0
需要留2048个地址,故host给11位
255.255.240.0->/20
需要留4096个地址,故host给12位
以上都可以归入CIDR(classless interdomain routing,无分类跨域路由)的范畴,接下来讨论的是有分类且特殊的寻址。 # classful and special address(分类且特定的寻址) (书上说这是1993年之前的划分方法,现在已经过气了,可是我总感觉我们现在也还是在用,而且老师又说这是考试重点 emm...只能说仁者见仁智者见智吧) ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e90c0b2f2eda48a19ae29fbbc3d2753f~tplv-k3u1fbpfcp-watermark.image?) | 地址范围 |末地址可理解为 | | --- | --- | | 1.0.0.0~127.255.255.255 | 2^7-1 | | 128.0.0.0~191.255.255.255 | 2^8-2^6-1 | | 192.0.0.0~223.255.255.255 | 2^8-2^5-1 | | 224.0.0.0~239.255.255.255 | 2^8-2^4-1 | | 240.0.0.0~255.255.255.255 |全部位都是1 | 有几类特殊的地址 - 0.0.0.0 表示本网络或本主机 - 255.255.255.255该网络中的所有主机(局域网中的广播) - 127.xx.yy.zz:迂回测试,包只在本地来回传送 127.0.0.1=localhost # NAT(network address transform) 简单理解如下图: ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c2c0c6c092684e97909f911bc4d9a3f0~tplv-k3u1fbpfcp-watermark.image?) - 内网中的不同主机有各自的ip地址和进程用到的端口号,但是这些ip地址只在这个内部区域有效,外网是不认这些地址的。 - 如果想要对外发送信息,就要经过NAT,进行地址的转换,对外统一暴露出一个ip地址。 - 外界对内网的情况一无所知,它们只以为一个ip地址为xxxxx的主机向它们发送信息,所以回复信息时也会发送给这个地址。 - 那这些回复的信息如何能正确分发给内网中的相应主机呢?这要借助端口号。 NAT的转换机制中,内网中不同ip地址的主机对应的同一虚拟地址的不同端口号。 ## 内网地址范围 - 10.0.0.0~10.255.255.255/8 - 172.16.0.0~172.31.255.255/12 - 192.168.0.0~192.168.255.255/16 ## 使用NAT的坏处 - 破坏了ip地址的唯一性 - 破坏了端到端模型 即: ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5731c17529ee4327b2c9edc6a83a4318~tplv-k3u1fbpfcp-watermark.image?) - 无连接网络->面向连接的网络 依赖NAT会使网络变得脆弱 - 破坏了层次之间的独立性 (由于使用端口,依赖于上一层传输层的服务) - 虽然大多数是TCO/UDP的服务,但如果不是就用不了了 - 有些协议(如FTP)事先规定了端口号的使用,这样NAT就无法正确处理工作 # 参考书籍 《计算机网络 第五版》Andrew等著(小蓝书)