Tags:,, Posted in 网络最神奇 2 Comments

学网络时,如果在网管会,你可能先学会了打端口做水晶头,学会了处理各种各样的故障,乃至学会了交换机 / 路由器配置,学了网络规划。

如果是自学,可能接触了很多的网络应用,会处理各种各样的单点故障,也知道“先听后发,边听边发”,也知道直连线与双绞线。

学好 TCP/IP 协议族

但是,我觉得,学网络最需要学好的,首先是 TCP/IP 协议族(TCP/IP Protocol Suite)。

TCP/IP 协议族是整个网络的基础。协议族保证了网络系统能够正确、有效地相互协作。要时时刻刻在心里记住,互联网的一大优势在于其异构性:其应用 / 设备能适应任意类型的网络。不管你用 802.3 还是 802.11,你都一样享受网络互联的便利,这就是互联网的异构性。而要实现这种“异构性”,所有的通信设施(路由器,交换机,Firewall,VPN,主机……)都必须按照协议的标准文档实现。协议乃是整个网络的“大纲”。

学协议,最基础的要求,是至少把重要内容学会了。比如 OSI 和 TCP/IP 层次结构(我自己编了个口诀:OSI 七层模型是“应表示会话,传网络数据”,就是应用层、表示层、会话层、传输层、网络层和数据链路层,当然还有一个物理层;TCP/IP 四层模型是“应运网恋”,就是应用层、运输层、网络层和数据链路层,当然也有物理层)。在这个基础上,知道每层究竟是干什么的、有哪些协议工作在这一层。建立和管理连接在哪一层?IP 层有哪几个协议?载荷(Payload)的加解密与压缩解压缩又在哪一层?

这些基础知识一定要非常熟。等你以后再学其他东西的时候,就会发现这些东西就是你脑海中知识的骨架。比方说,“路由器理解互联网协议而网桥或交换机仅仅理解以太网等底层协议”,这句话跟“路由器是三层设备,交换机是二层设备”是等价的。再比如,“我们将关注那些发送和接受包的系统,特别是那些利用地址来决定怎么样处理包的系统”,说的就是交换机、路由器和防火墙 / IDS(IPS)等等。

在学会的基础上,要去理解协议为什么这样设计。我一直觉得网络协议比数学美妙,因为数学的美妙更像是自然规律(各位数学牛人原谅我的浅薄),而网络协议完完全全是一群长得和我们一样的人从无到有、一点一点设计、完善、发展起来的,从这里头更能体会到前辈们的智慧(数学达人们再次原谅我的浅薄吧)。

举例子来说(网管会的同学这些例子都听烦了):为什么早期(其实直到现在)绝大多数的互联网应用都基于 C/S 模式呢?为什么协议要分层呢?为什么 TCP 握手要进行三次报文交互、但断开一个连接却需要四次报文交互呢?为什么 DHCP 最后要有一个 ACK 呢?为什么 MAC 是 XX-XX-XX-XX-XX-XX 的格式(十二个十六进制数),而不是十六个十六进制数(你要知道,必须有充足的理由,才会让这些大牛们使用一个非 2 的幂次的数)呢?

慢慢的,你就会发现,这些协议设计得真是太美妙了。学习这些协议,就如同在观赏一个美丽的花园,有着各种各样的树木和花草,缺一不可,多了也不行。慢慢的你会发现,当初协议的设计者想到把地址分为 A、B、C 类,是多么巧妙的思想。后来的 VLSM,又是多么好的改进。慢慢的你会发现,TCP 的拥塞避免机制设计多么巧妙,如果去了“窗口”对于各种应用就是一个灾难。

再往后,就要再学些深入的东西。上面说的那么多“为什么”,唬人可以,但是会了这些,只能说明你上路了,你喜欢上了网络,你有了独立思考的能力,而这时候,学习“网络”要走的路,才正式开始。这时候,决不能再满足于知道“TCP 是可靠的”是因为 TCP 有超时、重传和确认的机制,你要知道什么情况下重传、怎么重传、如果一个 IP 包分了片但只丢失了其中一片要怎么重传。你要开始学习 TCP 建立和结束一个连接的过程,知道双方怎么在网络状况有较大波动的情况下仍能保证数据的可靠传输,这时候你会接触很多新名词,这时候,网络知识的“网络”才正式铺开。

太累啦,睡觉去咯。明天继续写第二篇。

Related posts:

July 10, 2010