安全技能树简版:计算机网络基础

OSI 参考模型

它就长这个样子

再具体一点可以是这样:

网上找到的这张更吓人:

你需要自己搜索的基础知识

按出现的频率给一个学习的方向:

一开始我是想凭着我的笔记和记忆写出计算机网络里面比较关键的名词,这种人为的痕迹太严重了,不一定符合大众的学习.怎么办呢? 作为一个 coder, 遇到问题当然可以从这方面想答案.最后我给出的方案是,用”计算机网络” 做关键词, 使用 google 在 csdn 中搜索. Top 100 的文章出了. 使用结巴分词,统计词频,最后用词云:word_cloud下面是我清洗过后的数据:(能不自己”思考”就交给机器去做,懒要懒出道理来 😁😆)

为什么你要特别关注 Tcp/IP 这一领域

个人遇到的大部分问题,而且个人能解决的基本在 网络层/传输层 ;

  • 你要是需要网络编程,这两个是绕不开的基础,很多库是基于这两个之上

  • 物理层/数据链路层 太过于底层,我至今没了这里踩过坑(真踩了估计我一个人也搞不定)

  • 会话层/表示层/应用层 种类太多,跟场景挂钩,讲这个我感觉吃力.

实际中应用概念

下面我用实际的例子来讲解概念.linux 下工作,经常会用到的一些命令,但底层原理大多数人其不一定清楚.我也当做是总结回顾.

ping:
作用: 我们经常用它来判断两台主机直接是否联通
细节: 走的是 ICMP 协议,属于OSI 中的网络层

traceroute:
作用: 信息传输中路由的诊断
细节: 这篇从Traceroute看网络问题有点啰嗦,但还是值得一看. ICMP+UDP+不断探测,这是我对traceroute的理解

telnet:
作用:远程登录.位于应用层
细节: 这个估计会有很多人感觉到意外,因为我们经常是用 telnet ip port 的形式测试目标机器的端口是否有开放.其实telnet 本质是用于登录,只是不安全使得人们现在用 ssh. 要是你在本地部署过 memcache或者 Redis, 你就会发现你用的是telnet 进入客户端的.

ssh:
作用: 远程登录, 位于应用层
细节: ssh有三种验证方式,坑货用密码,正常程序员用秘钥,还要一个,基于 IP 用得少.关于 ssh, 论文The Secure Shell (SSH) Authentication Protocol.基于秘钥认证可以单独写一个篇章.建议了解.

输入域名的时候发生了什么

知乎讨论: 在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?,这个问题有意思的地方在于,它已经不是知道某个协议,或者某个应用能解答.文字说不清,上图

大部分情况我们顶多走到本地域名服务器.再接下来就要涉及域名根服务器,域名服务器等概念.下面链接更详细:

待续

计算机网络的基础我点到为止,接下来想通过实战,我觉得可以往安全方面讲,就是我们社会熟悉的”白帽子”.搞安全的都是计算机高手,或者说是网络高手.在这里挖个坑.