一文读懂计算机网络体系结构

概述

这是对计算机体系结构的一次 overview。

计算机网络课程大学时有系统地学过,但没有太上心,工作发现用的挺多的,比如定位一些网络异常的问题,做网络层面的优化,都需要对计算机网络体系的一些常见协议有所了解。

但是计算机网络体系庞大复杂,各层有自己的职责,是做不到窥一斑而知全豹的,要对整体结构有一个完整的印象和了解。为此,所以重新翻了翻书,对整个计算机网络体系结构温习了一下,温故知新。这里根据自己的理解,对整个体系结构做个简单的介绍。

要看更全面的,更详细的,还是需要去翻翻书,比如谢希仁的《计算机网络》,《TCP/IP 协议详解》,《HTTP 权威指南》等计算机网络圣经。

我们来做一个快速的解读。先上个图:

体系结构.png

教科书一般都会把七层体系结构摆上,但划分的层次过多,这里只拿两种模型。

  • 一种是理想模型,分为五层体系。
  • 另一种是实际应用的 TCP/IP 体系,为四层。

乘客:应用层

应用层协议的内容,就是我们程序直接面对的,要使用的数据,也是整个网络传输要传递的内容。

如何去理解这些内容和数据呢?协议其实就是一种规范,有各种各样的数据结构需要通信双方遵守,然后双方都有相同的计算机程序来进行编码和解码。我们把这些应用层协议的内容比作整个体系结构的乘客,他们心中只有目的地,买了票上了车,中间的路怎么走,用什么交通工具走就交给底层的协议了。应用层协议,只需要达到目的地的时候,能够把自己介绍清楚即可。

有这么些乘客是常见的:

DNS 协议,Domain Name System,用来把域名转化为 IP。有时会发出这样的疑问,为什么有这么一个协议存在?我知道目标主机的 IP,直接填不就好了?这个当然没问题,但是全世界这么多网址,IP 数量庞大,要真的使用数字记忆的话,那是很困难的。如果又发生了更换了服务器,那 IP 也要跟着换,客户端没有即使更换又会造成大量问题。还有有的时候用 CDN 加速,如果直接填 IP,就直接绕开了 CDN 去源服务器取数据了。所以,DNS 这个协议帮我们完成了这个记忆,有了个域名,想知道对应的 IP,DNS 从本地查。如果本地没有记录,又会去本地的域名服务器查...直到根域名服务器,是一个分布式的过程。如果服务器迁移,IP 地址修改,域名服务商是会帮忙刷新 DNS 服务器的缓存的,一般 2 小时可以完全覆盖。

HTTP 协议,我们平时接触得最多。而且协议的版本也在不断的升级,从原始的 http 1.0,到 http 1.1,再到未来的基于 spdy 完成的 http 2.0。这些版本的升级,最大的改变还是传输的效率的提升。在格式各样的计算机网络中,有一个圣地那就是万维网 WWW。在这个网络中行走的乘客就是 HTTP 协议,带着文本,图像、视频等数据,往来于不同的站点。所以也可以把它们看成携带着大量货物的商队,来往于各个城市站点。

指挥调度:运输层

运输层是体系结构的调度者,管理着数据的传输的一些策略。

什么时候可以传?要传多少?要不要接收?什么时候结束?

运输层有两个调度者,两种不同的风格,分别为 TCP 和 UDP。

TCP 很严格,一个包都不能有失,完美主义的处女座,因为纪律严明且要求严格的 TCP 工作效率并不高,每次发完一阵子都要确认一下是否顺序正确,不正确的话再发个包。UDP 就比较不拘小节,丢包了乱序了都不管,所以在网络环境好的情况下,UDP 可以做到快速而且正确率高。他们俩就像美女与野兽中的胖瘦管家。双方都有自己的优缺点,至于什么情况下发光发热,扬长避短,得看具体的业务场景。比如 DNS 乘客选择不拘小节的 UDP 作为调度者,中途数据出差错就再解析一次。而 HTTP 乘客,因为可靠性要求高,数据不容有失,选择了 TCP。

TCP 调度者的工作内容主要三大块,分别为可靠传输流量控制拥塞避免。简单理解,可靠传输就是希望传输过程中有丢包或者错误包的现象,让发送端重传;流量控制就是建了个缓冲池,让接收方和发送方用合适的速率传输,不会因为传输太快导致数据丢失。比如我们有一个仓库大小就那么大,东西都还没用完,又不停地往里面存东西,那么直接结果是仓库爆了后后面送过来的货物还要重新送,还不如直接告诉发送端,仓库满了,等等吧。这就是后面会提到的 TCP 首部的窗口大小;拥塞避免就是在网络环境差的情况下,有好的机制减低发包节奏,缓解网络环境。比如在某个城市开车,出行的人突然增加,那么等个时间再出来。

UDP 调度者因为不需要严格的建立连接,又不需要各种确认机制保证包不乱,所以整个协议非常轻量。如果想要保证数据的完整且接收的顺序无误,那么得应用层协议自己来。

向导:网络层

网络层的是体系结构的向导,负责找到要到达接收方的路径。

经过了传输层,包大小确定了,传输时间也决定了。然后,手里只有 IP 和 端口号,就像现在厦门,并且知道了目标地点是北京,可是该怎么走呢?需不需要中转?中转的地方又在哪里?

这时候要看 IP 协议族了。这个大家族都吃这碗饭,提供指路服务。

运输层的包,比如 TCP 或者 UDP,向导会填入目的信息。所以,在这个过程中它做的就是找到下一站,然后到达之后再寻找下一站直到终点。

网络层向导有会去问路,如何能够找到最短路径,或者能最快到达的路径呢?比如从中国到美国,是从太平洋走,还是先去欧洲再走大西洋呢?那条路能够更快到达目的地。于是问路就有了两种不同的策略,有用 RIP 协议去问路,又或者是 OSPF 协议去问路。

但是到达数据到达数据链路层的包只认物理地址怎么办?所以这里还有个 ARP 协议,用来找到 IP 对应地址的硬件地址,方式还是用广播。像我们平时使用 Wireshark 抓包看到的,经常会有一些向导往整个局域网里问,“who has xxxxx? Tell xxxxx”。目标会给向导答复,到时候把硬件地址记录下来即可。

交通工具:数据链路层

数据链路层里的协议就是要使用的交通工具了。

不同网络的差异性主要就体现在这一层。对于数据,并不需要我们路上经过了什么,怎么走。但交通工具要明白。不同的网络,交通情况是不一样,所以有不同的策略来走。

比如去往 ISP 使用 PPP 协议。

在普通局域网内部使用 CSMA/CD 协议。

数据链路层的协议,无论选择什么样的行走策略,无论是在天上飞的,地上跑的,海里游的,都会面临三个基本问题:封装成帧透明传输差错检测。解决了这三个问题,那么这个交通工具就可以上路了。

道路:物理层

什么时候出发,去什么地方,用什么方式走都已经确定好了,转化为二进制信号后,由物理层真实地发送到目标地址去。那这条路物理层传输的带宽怎样,就像我们的道路是四车道还是六车道,是大道还是羊肠小路。传输的速率怎样,就像这条路的路况如何,是坑坑洼洼的还是一马平川。

物理层的特性决定的路况。不同地方的贫富差距不一样,或者环境的限制,修的路也不一样。有的用双绞线,有的用同轴电缆,再不错的就用光纤了。所以,在相同的时间里,在不同的物理层设备环境中,可能你还在厦门岛内堵车,我已经搭动车飞驰 200 公里到另一座城市。

小结

当我们要发送一个数据,经过这五层协议,为了完成每一层协议的功能,比如可靠传输、确定路由等,这些协议都会添加一些必要的首部来完成功能。这里我们使用 TCP 协议作为传输层协议,所以到达物理层前要发送出去的包在每层协议添加首部后会有这样的结构:

数据包格式.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容