记录思考

计算机网络知识的整理

计算机网络是每个工程师的必修课,不管是什么岗位,不管使用什么开发语言,都需要有一定的计算机网络知识.

本来是安排了一次组内的分享,但是我一直想不出来分享一个什么主题的内容。刚好那几天连续看到多个 HttpDNS 相关的文章,我想,那就分享一下 httpDNS 吧。

DNS 和 HttpDNS 的内容并不多,于是我想顺便把计算机网络相关的一些知识简单过一下,就当成是给大家复习功课了。

计算机网络协议

计算机网络是大学本科计算机相关专业必修的课程,不过大部分人学完就忘。我在面试的时候,计算机网络肯定是一定会问的,要求不高,但是不能一问三不知。网络工程师是一个细分的职位,我们不需要有他们那么精通,但是基础的网络知识还是需要具备的。

网络协议分层

计算机网络中有千百种协议,这些协议分别工作在不同的领域,不同的层面。对网络协议的分层有两种,一种是 ISO/OSI 模型的 7 层协议,一种是 TCP/IP 模型的 4 层。ISO 是国际标准组织,不只是计算机领域,吃喝拉撒,只要有标准的他们都管。OSI:开发式通信系统互联参考模型,英文名为 Open System Interconnection Reference Model。

ISO/OSI 模型把计算机网络协议分了 7 层。但是我并不喜欢去记他们,基本上我是记不下来的,即使记住了,过几天我也会忘的。我不喜欢 ISO/OSI 模型的另外一个原因是,他的分层总是有些模棱两可,一个协议处在哪一层可能跟具体的场景还有区别。总之,我总是不大喜欢去记忆他们的。而且目前来说,我也用不上,了解一下即可。

TCP/IP 模型把计算机网络协议分了 4 层,还是比较简明扼要的,也很好理解。

链路层:TCP/IP 模型的最底层。有 5 层的说法,那么就是在链路层底层再加一层物理层。链路层比如 ARP 协议,解决的是物理地址和 IP 地址的映射关系。这一层对于普通的开发工程师来说并不那么重要,存在感很弱。

网络层:IP 协议是名气最大的网络层协议了。解决的是主机到主机的通信。每一台连接到互联网的主机都需要有一个 IP 地址。那么 IP 地址也有两种,IPv4 和 IPv6。从我上大学的时候,就开始嚷嚷 IPv4 要不够用了,这么十多年过去了,主流的还是 IPv4,不过这几年 IPv6 确实应该会开始大规模普及了。所以和 IPv4 和 IPv6 的一些知识也是建议大家多少了解一下的。IPv4 地址由 4 个小于 255 的数字组成,平时出镜率还是蛮高的,但是实际上,我还是发现很多人对这些地址并敏感,比如 127.0.0.1 是一个什么样的地址,10.0.0.1 ,192.168.0.1 这样的地址看着很眼熟,但是又只是看着眼熟而已。这样是不行的,IPv4 的分段,保留地址,特殊地址这些总是要了解一下的。另外我感觉比较需要注意的知识点是 IP 协议是不可靠的协议。

传输层:TCP 和 UDP 协议是比较知名的传输层协议。传输层协议在网络层协议至少,增加了端口号的概念,它解决的是端口到端口的通信问题。TCP 是面向连接的,可靠的,基于字节流的协议,而 UDP 是无连接的,不可靠的协议。TCP 和 UDP 是我面试中最喜欢问的,因为我觉得如果能够很好理解 TCP 和 UDP 的话,那么对于一个普通的软件工程师,网络方面的知识基本上够用了。TCP/IP 模型四层分层,链路层我们不大需要关心,剩下这三层,传输层协议刚好是承接应用层和网络层中间的协议。TCP 面向连接很多人都能说的上来,因为大多数人都记住了三次握手,四次挥手。但是很多人会忘记可靠这个关键词,有人会说是安全。一般回答 TCP 是安全的协议的时候,我会接着问 Https 和 Http 有啥区别,一般都会回答 Https 是安全的,那么我的问题就来了,这两个安全是一个安全吗。有人就懵了,能大概知道区别,但是又说不出来。主要原因还是没有理解 TCP 强调可靠这个关键词。有时候我还会问 UDP 为啥是不可靠的,很多人说不出来。其实很简单,刚才说了,IP 协议本身就是不可靠的。TCP 协议在不可靠的 IP 协议上实现了可靠的协议,就是因为它增加了很多冗余的信息交换,TCP 协议的名字 Transmission Control Protocol 传输控制协议,控制这个词不是随便取的。

应用层:应用层的协议就多了去了。最重要的就是 HTTP 协议了。但是还是有很多工程师对 Http 请求的了解只停留在 API 的使用上,发起一个 request,然后得到一个 response 而已。这还是不够的。比如 Http 请求有 GET,POST,PUT 等,Http 有 1.0,1.1,2.0 等版本,Http 请求包含 header 和 body 两部分。Http 请求还有 cookie 的概率。至于 Http 请求 Header 里常见的一些 header 也是需要了解一下的。然后就是 https 了。https 的整个过程还是需要了解一下的,即使不能完全记住,也是需要知道 https 都做了哪些事。

- EOF -

本文链接 https://spacepage.top/articles/2018.04.27-internet.html,欢迎转载,转载请注明出处。