OSI七层模型简述

1 概述

我们每天都在用手机或者电脑等电子设备浏览网页,收发邮件。有没有想过为什么你在浏览器里面输入一个网址,就能打开一个页面?为什么你写了一封电子邮件,点击发送,对方就能收到这封邮件?下面就来总结一下最近学习的知识。

2 七层模型

网络模型分为七层,从下到上分别是:物理层链路层网络层传输层会话层表示层应用层。下层服务于上层,上层依赖于下层。

七层模型

2.1 物理层

两台机器之间要能收发数据,首先,必须得把他们给连起来。物理层就是负责把机器之间用光纤,电缆,网线或者wifi等“连起来”这件事的。设备之间有了物理联结之后,就可以传递电信号了。物理层规范了两台计算机之间的信号传输协议,通过数模转换和模数转换,使得数据能以bit的形式传输(也就是我们理解的二进制0和1的形式)。从无到有,物理层使得数据传输变为可能。

物理层

2.2 链路层

现在设备之间可以通过比特流来传递数据了,但是如果希望把数据发送到指定机器,就必须给每台机器编个号,或者给他们起个不同的名字,这就是MAC地址。计算机通过网卡联网,每张网卡在出厂时就会设置一个48位的序列,即MAC地址,全球唯一。所以计算机A要往计算机B传送数据,必须得知道B的MAC地址是多少。

MAC 地址

另外一个问题就是,比特流的传送,其实是电信号的传送,过程中会出错。为此,链路层规定了bit传输以为单位,最多1500位。每帧的头尾会用一个特定的格式来标示起始,内容包含header和body,头包括目的地址,源地址,帧长度及校验序列等信息。目标机器收到帧数据之后,可以通过头信息进行校验,如果有出错,会要求目标重发此帧。通过链路层,数据实现了正确传输。

2.3 网络层

事实上,链路层的作用范围十分有限,仅限于同一个子网内部。所以我们需要另外一套机制,使得数据能跨越网络进行传输,这时就轮到我们熟悉的ip协议登场了。ip协议也是包含header信息和body信息,头包括目标ip,源ip,版本信息及长度信息等等。依赖于链路层,他们全都会放到数据帧的body里面。

ip地址即是设备在网络上的标识,常用的是ip协议第四版ipv4,由四个8位的二进制数组成。除了ip地址,每台联网的设备还会配置三个重要参数:子网掩码网关地址DNS服务器地址。子网掩码也是由四个8位的二进制数组成,高n位是1,低位是0,和ip做逻辑与操做后,可以判断设备所属的子网,所以同一个子网下的机器,子网掩码都是相同的。网关是设备与外部信息传输的接口,当两台机器不属于同一个子网,数据会发到网关,然后通过目标ip路由找到对方子网络,对方网关会通过ARP协议(这里暂不涉及)根据ip得到目标机器的mac地址,这样两台机器通过网关,实现了牵手。DNS服务器,其实就是存了一个域名和ip的映射表。比如我们访问www.google.com,机器会先去DNS服务器去找这个域名对应的机器的ip地址是多少,然后才根据这个ip去跟目标机器进行信息交换。域名使得机器的地址更直观,也更容易记忆。

IP 配置

一般的,我们不需要手动配置这几个地址,而是通过DHCP协议(这里暂且也不涉及)自动获取局域网内可用的地址。通常我们熟知的路由器就是支持DHCP的服务器。

网络层实现了设备间跨子网的数据传输。

2.4 传输层

通过网络层,两台设备之间就可以进行数据传输了。但是每台设备上都运行了多个程序,它怎么区分接收到的数据是属于哪一个程序的呢?所以设备上还需要一个参数,叫端口,来跟某一个网络进程绑定。端口是十六位二进制数,也就是0到65535之间的数字,比如http端口80,ssh端口22等。知道了机器的ip和端口,就可以给机器上的程序发请求了。建立在这个基础之上,最简单的就是UDP协议,即用户数据报协议。UDP协议也是包含header和body,头中包含了源端口和目的端口,以及长度等信息。数据通过UDP协议封装成报文,在设备之间单方向传输。

UDP格式

从UDP协议开始往上,都是比较面向应用了。但是UDP协议有一个大问题,设备A向设备B传递一个报文,A没法知道B到底有没有收到。这也可以理解,协议中只是规定了数据以报文的形式发送,而没规定其他,甚至对方设备有没有联网,我们都无从得知。所以UDP协议提供了面向程序的不可靠的数据报传输。

对于大多数情况而言,数据丢包是不被允许的。基于UDP之上,诞生了TCP协议。TCP协议会在设备之间建立连接,并且增加了确认机制。当设备A要与设备B进行通信之前,必须与B建立连接,这个过程就是著名的TCP三次握手,由此双方建立连接。正式通信过程中,当设备B收到设备A的报文之后,必须向A回复ACK表示报文已经收到,过程中如果B没有ACK或者B的ACK报文丢掉了,A会对这个报文进行重传,以保证数据的完整性。这里有一个滑动窗口的概念,窗口大小即A和B间同时传送的报文的数量,会根据带宽动态调整。在一定的窗口大小之下,A只有在收到B对之前报文的ACK之后,才会把新的报文发送给B。当数据传输完毕,两个设备需要断开连接,即TCP的四次挥手。

TCP 3次握手4次挥手

TCP协议是面向连接的,保证了数据在设备间能可靠的传输。但是相比于UDP,因为增加了连接的建立和关闭,报文的确认,所以传输效率会低很多。

2.5 会话层

理论上,有了传输层,计算机之间就能可靠的通信了,再往高层的大多都是基于TCP的封装。会话层主要负责连接的创立,保持与关闭,以及一些验证工作,使得数据的传输有面向连接的易用接口。比如大型文件的传输,就需要会话层做连接的控制。

2.6 表示层

经过前面五层,看似设备间的通信问题已经完全解决,其实不然。因为数据都是通过二进制格式传输,这与我们所能理解的数据之间需要编码与解码的过程。但是由于历史原因,设备之间的编码格式有可能是不同的,大家熟知的是ASCII编码,还有IBM的EBCDIC编码。所以数据传输的时候需要有一个通用的格式,表示层就负责做这个转换。同时对数据的压缩,加解密也都在这一层完成。

2.7 应用层

应用层直接面向用户,根据不同的场景,有不同的协议。比如用于文件传输的FTP,用于邮件系统的SMTP,用于超文本传输的HTTP等。

3 总结

OSI七层模型,完成了两个独立设备之间的信息交换,使得你可以在浏览器输入一个网址,然后网页上就呈现出来一个复杂的页面。互联网的一切通信,都是建立在这七层模型之上的。

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

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,052评论 0 8
  • 网络层提供的两种服务 在计算机网络领域,网络层应该向运输层提供怎样的服务(面向连接还是无连接)曾引起了长期的争论,...
    srtianxia阅读 3,955评论 0 12
  • OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类...
    流光汐舞阅读 3,343评论 0 3
  • OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类...
    流弊的小白阅读 868评论 0 2
  • OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类...
    随风飘荡的小逗逼阅读 954评论 0 4