网络架构

概览

计算机科学家解决复杂问题时有两把利刃:一是缓冲技术,二是分层技术。后者的思想是如果直接解决某个问题比较复杂,则可以建立一个“中间层”,中间层在底层的基础上,抽象出一些常用功能,并为上层提供灵活易用的API。

网路通信就是分层技术应用的一个范例。目前网络架构是一个分层结构,从建立通信的对象来看,从底层到最高层依次是:

  • 应用程序(Application Programs)
  • 进程间的通信(Process-to-process Channels)
  • 主机间的通信(Host-to-Host Connectivity)
  • 硬件(Hardware)

协议

为了协调不同层次之间以及同一层次不同系统之间的通信,我们需要制定一套通信的规则,这种规则就叫“协议”(protocol)。协议定义了一种“通信机制”,它至少提供了两个方面交互接口:

  • 同一系统中层
  • 不同系统中的层

前者是一种“服务接口”,例如TCP(传输层)通过不可靠的IP协议(网络层)建立起可靠的服务;后者提供不同系统的层的通信,例如路由器A(网络层)与路由器B(网络层)的通信。

可想而知,如果不同系统采用不同的协议,必然导致系统之间无法互通。因此网络的相关协议就由专门机构IETF(Internet Engineering Task Force)来制定。网络协议不是一成不变的,但是新的协议必须遵循下面两条性质:

  1. 协议能被精确定义并实现,如伪代码。
  2. 协议能够通过互通测试。例如,如果协议能够通过两个及以上方法代码实现,它们应该是可以相互通信的。

下图展示了不同层次上的协议:网络层依托IP协议,传输层依托网络层的IP协议建立了TCP,UDP协议,在后者的基础上,又有FTP, HTTP, DNS等应用层的协议。

数据的封装

数据从最高层到最底层传送时,每层协议都会为数据加上自己的头(header),用于该层的通信;当数据达到目的地时,从最底层到最高层,通过每层协议时数据的头会依次被剥离。这个过程叫做encapsulation与decapsulation。

一个简化的粒子如上图中从FTP应用发出的数据,将依次加上FTP、TCP、IP的头,成为

IP hdr || TCP hdr || FTP hdr || Datagram

通过Internet传播到目的地后,头依次被剥离。

OSI架构

ISO组织给网络定义了一个7层的OSI(Open System Interconnection)架构。它们依次是

  • Physical Layer
  • Datalink Layer(负责把数据送到相邻的目标)
  • Network Layer(负责把数据送到终点)
  • Transport Layer(只有主机有,一台主机会跑不同应用,它们有不同的传输需求,如UDP,TCP等)
  • Session Layer
  • Presentation Layer
  • Application Layer

这是一张典型的OSI架构图,其中交换机只处理Data Link层的需求,因此交换机没有IP,也不处理数据中的IP header。交换机一般处理含Mac地址的头。

不同层的特点与作用

Physical Layer

物理层考虑的问题是如何将原始资料在link上传输。物理层的传输媒介有同轴电缆、双绞线、光纤、无线方式等。以电缆为例,通过高低点位来传输数据,例如高点位表示1,低电位表示0。

实际情况并不这么简单,关于点位编码数据需要特别的处理才能抵抗干扰。不同的编码方法叫做Signal Coding schemes。

Data Link Layer
数据层考虑的问题是“如何将frame用MAC Protocol传给直接相连的主机或设备”。

数据层将物理层零星的0、1数据收集起来成为一个数据框,一般的组成为

preamble + SFD + DA(dest) + SA(src) + Type + LLC + PAD + FCS

数据层是以MAC地址作为传送目标的。如果一条线路上有多个设备发送数据,可能导致点位过高或抵消,造成数据的丢失与错误,因此有很多协议来协调这个问题,常见的有

  • random access。不作任何处理,数据传输成功率在18%左右。
  • CSMA/CD:先监听,如果没有检测出冲突则送封包。例如以太网就是采用这种协议。
  • CSMA/CA:这个协议不能检测出冲突,但是可以避免冲突。例如无线网络。

Network Layer
网络层主要考虑如何将封包通过Internet送给目的地主机。因此“路由”(routing)显得格外重要。

路由的目的是为数据传输决定一条路径。路由器需要一些协议来让数据往正确的方向传播。通常的做法是路由器之间互相交换信息,每个路由器维护一张路由表,从而达到对于整个网络的了解。

第一代的路由协议如RIP规定路由器每30秒交换一次信息。OSPF协议则是找最短路径。

Transport Layer
传输层考虑“提供不同主机进程之间的资料传送”。两个典型的传输层协议是TCP与UDP,TCP能提供稳定的服务,虽然它是基于不稳定的IP协议。TCP常常用来支持文件传输、HTTP等应用,而UDP则用来处理速度要求高的DNS服务等。

架构的特征

虽然IETF将网络分成了7层,但是在实际使用中,这些层并没有严格的区分。例如应用层可以直接给予网络层的IP协议,跳过TCP或UDP。

另外一个特征是Internet的结构相当于一个“沙漏”。网络层现在几乎只有IP协议,而其它层有五花八门的协议。

一个健康的网络架构应该是可拓展的,未来会有新的协议被添加到网络通信中来。这些新的协议应该遵循在前面提到的协议的特征:

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

推荐阅读更多精彩内容

  • OSI和TCP/IP是很基础但又非常重要的网络基础知识,理解得透彻对运维工程师来说非常有帮助。今天偶又复习了一下:...
    vivi_wong阅读 1,469评论 0 3
  • 网络概念第一天 两台电脑怎么通过网络传输数据?怎样才能知道传输的是数据?谁摸过网线? 看电影,怎么看的?通过电流,...
    小吖朱阅读 1,539评论 0 1
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,034评论 6 174
  • 一、序言 因为被问题拍肩膀,总比被现实抽嘴巴子好。所以,好问题比答案还重要。 和游泳一样,会游得人很省劲,不会游的...
    雪木912阅读 287评论 0 0
  • 这个没有出远门的五一,宅在家也要做一点自己热爱的事情。 在家材料有限,所以就简单的做了这个小鹿和树木的场景。 用铅...
    慢慢小鱼阅读 2,535评论 0 9