最近不少乎友对TCP-IP网络的学习比较迷惑,尤其是那些刚毕业的乎友们。刚好自己毕业后也经历了这样的过程,就将自己过往的一些经验分享出来。
宏观看网络
学习TCP-IP网络没有想象中的那样难,归根结底它就是一堆协议,我们只要理解了这些协议,所有的疑惑都会拨云见日。
学习前我们还要摆正姿势:我们自己才是主体,后文介绍的无论是书籍、工具还是方法,都是帮助我们理解协议的途径,千万不要被它们牵着鼻子走。
书籍推荐
《TCP/IP详解 卷1:协议》
购买第一版即可,文中内容一点儿也不啰嗦,即使出版了这么多年,其中85%以上的内容仍然不过时。
你必须会的工具
wireshark
这个是你必须会的工具,有什么不懂时,wireshark一下。
这里也推荐一本书:《Wireshark网络分析就这么简单》
tcpdump
如果你在Linux系统下或者嵌入式设备中,tcpdump就排上用场了。
如何学?
Step1:了解网络分层与对应的协议
万维网是按分层设计的,不要在意是OSI模型还是精简的TCP-IP模型,你只需要知道每一层运行着特定的协议即可。
你不用一开始就知道每一层所有的协议,因为学习TCP-IP网络不是一朝一夕的事儿,对初学者建议了解以下协议即可:
1、链路层:ARP
2、网络层:了解路由、RIP、OSPF概念,ICMP
3、传输层:TCP、UDP
4、应用层:应用层协议非常多,建议优先了解DHCP的过程
附一张我看到的非常经典的分层图(图片来源于网络):
![ee4b4e56d5297cf761b09553876d2260.png](https://i-blog.csdnimg.cn/blog_migrate/54d5f6e177bc704180ad00e65e211e83.jpeg)
Step2:按分层思维去理解和分析
第一小节提到了网络是分层设计和传输的,这也暗示我们需要按照分层的模型去理解和分析。
附一张网络图说明(图片来源于网络):
![8cc47520506950b037d53b3b7d6fc65e.png](https://i-blog.csdnimg.cn/blog_migrate/0032c433a02105dc54ecc2118b09d51b.png)
无论中间经过多少设备,都是按照这个对等分层进行传输的(中间设备可能只运行部分协议,比如二层交换机只会运行到链路层)。
所以在理解和分析网络过程时,不要乱了章法,按上述分层模型:
1、当发送一个包时:理解每一层做了什么?为什么要做这些?
2、当接收一个包时:理解协议是按什么原理/方法来解除对应的封装。
Step3:动手
这是非常重要的一步,这里推荐去理解“通过浏览器访问XXX网站”的过程,以下的问题建议你能够回答出来:
1、这个包会经过哪些设备?
2、整个访问过程中涉及了哪些协议?并通过wireshark抓包对这些协议进行逐一确认;
3、网络包有哪些字段?每一类协议包之间的差异主要在哪儿?
4、网络包在传输过程中哪些字段可能会发生变化?为什么这些字段要发生变化?
另外,建议将上述的过程整理为文档并向你周围的同事/同学进行分享。
小结
1、本文只是对网络开发入门的一些个人经验分享,希望对乎友们有所帮助
2、网络学习最佳的方法就是去动手抓包,对每一类网络传输过程按照step3的方法去理解
注:后续会组建QQ等形式讨论组,进行更快、更直接、更方便的学习与讨论。