计算机网络怎么学
计算机网络是一门需要动手实践的学科,这点其实和编程很像。无论看多么牛X编程教科书,无论看多少遍,只要不动手去写代码,要不了多久就全还给课本了。
计算机网络可能比编程还要难得一点是,编程只要有一台电脑,一个编译环境就可以动手操练,虽然从入门到精通需要大量的代码实践,但是好在看得见摸得着,脚踏实地的感觉棒棒的。
计算机网络动手操练,需要有一个实验环境,需要大量的硬件设备,这是一笔很大的投入。如果纯粹看理论,没有动手实践,看完问问自己,记住了哪些知识点?这些知识点可以帮助自己去排除网络故障吗?答案往往是否定的,看书的过程有一种浪费光阴的虚度感!意志力薄弱的同学,实在难以为继,最后就放弃了!
初学者刚开始学习时,不要好高骛远,要脚踏实地,只要想动手,随时都可以的。从最简单的地方入手,看看同事的电脑的IP是多少,然后Ping 一下,看看能否Ping通?用抓包软件把Ping报文捕获下来,问问自己,为何在整个通信过程自己只提供了IP地址,报文里除了IP地址外,还有二层头、IP头、还有ICMP消息头,这些信息自己并没有提供,他们是如何生成的?是谁生成的?
万事开头难,刚开始甚至都没有学会如何看电脑的IP,在哪里可以Ping,如何使用抓包软件,但是如果真的想去学好计算机网络,这些都是小问题。如果每次通信前,都需要到对方的电脑上查看对方的IP地址然后才能通信,那实在是太不方便了。回忆一下我们平常都是怎样去使用电脑通信的?很少有直接输入IP地址的场合。
访问网页,要么直接输入网址、要么搜关键字,获得网址的链接直接点击进入,然后将链接保存在收藏里,下次直接点击进入。但是网址并不能直接用来通信,需要使用域名解析。
访问公司邮件,邮件客户端自动会发现邮件服务器,这同样需要域名服务器提供域名解析支持。如果邮件里嵌入了超级链接,可以直接点击访问。
访问共享文件夹,直接打开网上邻居,可以看到主机列表,直接点击主机就可以通信。
以上各种应用场合,没有一个需要用户输入IP地址的场合。用户不需要输入,做为网络工程师,却要深刻地知道这一切都是怎么发生的,为什么要这么来设计。当用户需要输入IP地址的时候,往往意味着网络出故障了。
初学者再次看到DNS Server时,就会明白原来DNS是如此的重要,基本上所有的通信都离不开它,当你怀揣好奇再去学习DNS时,不会感觉那么枯燥!
计算机网络,提供的是管道服务,像自来水管一样单纯。发送方Bob向管道里注入一吨液体,接收方Alice就接收到整整一吨液体,不多一滴也不少一滴。当然这是完美的理想,而现实往往并不是这样的。