既然叫网络层杂项,我想记录一些有趣点的网络层知识,当然这种方面一般不会有个系统的认识,这也就意味着我只能哪天突然想起来了有什么就来这里添加点什么,所以可能会发现这一节和上一次看到的又不一样了,先在这说明一下,防止有所疑惑。

环回地址

每个主机不管有没有网卡,有没有接入网络,都有一个固定的特殊地址127.0.0.1,很多教授网络编程的书籍会让读者把这个本机地址作为一个测试地址来学习。那么为啥会有这样一个地址呢?

标准的解释,“本地回环地址,不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口”。这个解释并没有阐述其作用,但是阐述了其特点,永远不会down掉,这个down不是一个故意夹杂着英文的中文描述,而是当你使用ifconfig查看的时候,哪怕没有网卡,你也会发现127.0.0.1这个接口状态是up。而作为一个设备,或者更小范围的说一个操作系统吧,TCP/IP协议栈不是和网卡绑定在一起的,而是在Kernel里面的,所以这个环回地址就可以作为一个很好的检测手段在任何情况下检测你的TCP/IP协议栈是不是坏了。

如果这样解释还是不够直白的话,你可以想象电视机,很多电视机在没有任何输入源的时候也会提供配置或者测试画面,这个的意义在于,在任何情况下我都能先确认电视机有没有坏,再去排查电视盒子是不是好的。

那么环回地址是不是只能是127.0.0.1呢?其实不是的,基本上形如127.xx.yy.zz都能作为回环地址。而回环地址除了我上面说的这个作用之外,还在路由发现里面有着一定的作用,但是这些和编程关系都不大,所以也就不叙述了。

网络层除了IP协议还有其他的吗?

一般提到网络层协议,基本上只能说出一个IP协议,久而久之很多地方就会用IP层这个名词来替代网络层这个词。其实再这一层还有一些协议的,比如常见的有IPX,这是Novell公司提出的一个协议,其优势是简单,驱动程序占用内存小,缺点是不能够适应大型网络的扩展,传说红警里面就运用了这个协议。除了这个还有X.25,一种只有三层的协议,主要用在网络硬件设备上,目前已经慢慢的被淘汰。

IPv6

我是很想介绍下IPv6的,但是我确实了解的不多,那么这一节先todo吧,虽然俗话说不能相信程序员的todo,但是我保证我会来填坑的。