今天难得认真听了下课(因为今天才选上了课):计算机网络。老师讲的还是比较有趣的,比如数据传输在海洋电缆中被鲨鱼咬断丢失,或者在空中被雷劈丢失,用水杯盖子打电话为啥打不出去因为没有底层支持,给我感觉讲得很慢,毕竟学校要求掌握的知识点比较少,可以啰嗦些。

但是我看了好几本教材,还有老师讲课顺序,无非是先介绍那几层结构(OSI结构)作用,然后就按照物理层->数据链路层->网络层(IP层)->传(运)输层->应用层的顺序来讲,虽然这样越学越有趣,但是一开始就听不下去了,因为前面比较枯燥,后面比较有趣。而我发现比较容易接受的顺序是,先讲讲那几层的作用(有个全局把握),然后按照相反顺序(即应用层->传输层->网络层->数据链路层->物理层)来学,会轻松很多,反而更容易掌握。

首先层与层之间是互通的(有接口),不用担心顺序反了无法接受,一开始就长篇大论一脸闷逼的学高度抽象的物理层,不如先学学最容易接受的应用层,最基本的就是写写网页了,再深一点就是Socket编程(简单点例如实现多进程(然后看操作系统去了。。)HTTP服务器)还能掌握协议的含义(语义、语法和时序),利用telnet工具发送TCP请求比如发邮件这些。而且应用层都是我们很常见的东西,例如HTTPDNSDHCPSMTP这些经典应用。

接触到Socket之后,又会促使你看下传输层的TCPUDP协议,以及传输层实现的那几个机制是怎么在不可靠传输信道进行可靠传输的(流量/拥塞控制,流水线机制,滑动窗口协议(顺便了解GBN和SR),差错控制等等),还能感受到人类的智慧。

在了解完传输层后,很自发地你又会学到网络层,这时候还能接受,比如IP地址的分类啊,子网划分,超网聚合,广播,ARP寻址这些基本概念,还能学到路由算法(链路状态路由算法Dijkstra,距离向量路由算法Bellman-Ford)等等。

待续。