zoukankan      html  css  js  c++  java
  • OSI七层协议大白话解读

    OSI七层协议大白话解读

    img

    互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。

    七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

    img

    物理层:

    字面意思解释:物理传输、硬件、物理特性。中间的物理链接可以是光缆、电缆、双绞线、无线电波。中间传的是电信号,即010101...这些二进制位。

    img

    底层传输的010010101001...这些二级制位怎么才能让它有意义呢?

    要想让底层的电信号有意义,必须要把底层的电信号做分组。我做好8位一组,那么我收到数据,我就知道这几个8位做一组,这几个8位做一组。那么每个8位就可以得到一个确定的数。分组是谁干的活呢?物理层干不了,这个是数据链路层干的。

    数据链路层

    早期的时候,数据链路层就是来对电信号来做分组的。以前每个公司都有自己的分组方式,非常的乱,后来形成了统一的标准(标准就是协议),即以太网协议Ethernet。

    Ethernet规定

    一组电信号称之为一个数据包,或者叫做一个“帧”

    • 每一数据帧分成:报头head和数据data两部分

    head包含:(固定18个字节)

    • 发送者(源地址,6个字节)
    • 接收者(目标地址,6个字节)
    • 数据类型(6个字节)

    data包含:(最短46字节,最长1500字节)

    • 数据包的具体内容

    head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送。

    这就像写信,发送者的地址(源地址)就是你家的地址,接收者地址(目标地址)就是对方的收信地址,你家的路由器就相当于邮局。其实在计算机通信中的源地址和目标地址指的是mac地址

    Mac地址的由来:

    head中包含的源和目标地址由来:Ethernet规定接入Internet的设备都必须具备网卡,发送端的和接收端的地址便是指网卡的地址,即Mac地址。每块网卡出厂时都被烧录上一个实际上唯一的Mac地址,长度为48位2进制,通常由12位16进制数表示,(前六位是厂商编码,后六位是流水线号)

    假设我要发文件:

    我要找谁,我是谁就是我的mac地址,我要找谁就要谁的mac地址,这两个地址做数据包的头部,再加上数据就构成了一个数据帧。这个数据包封装好以后就往外发,到物理层以后就全部转成二级制,往外发是怎么发的呢?就是靠吼。这么吼了一嗓子以后,一个局域网内的的人都能听到,这就是广播。计算机底层,只要在一个教室里(一个局域网),都是靠广播的方式,吼。

    局域网的理解:什么是互联网,互联网就是由一个个局域网组成,局域网内的计算机不管是对内还是对外都是靠吼,这就是数据链路层的工作方式-----广播。广播出去以后,所有人都听得见,所有人都会拆开这个包,读发送者是谁,接收者是谁。对计算机来说,它会看自己的Mac地址,接收者收到以后,他就会把要的内容发给我,发送回来同样采用广播的方式了,靠吼。但是全世界不能用一个局域网,于是就有了网络层

    网络层:

    网络层定义了一个IP协议,找一个同一个局域网里的负责人用来和外面联系,而这个负责人就是网关,网关就是网络关口的意思

    Mac地址是用来标识你这个教室的某个位置,IP地址是用来标识你在哪个教室(哪个局域网)。数据链路层中会把网络层的数据包封装到数数据链路层的数据位置,然后再添加上自己的包头,再发给物理层,物理层发给网关,网关再发给对方教室的网关,对方教室的网关收到后在那个教室做广播。

    在数据链路层看,数据封装了两层,跟玩俄罗斯套娃有点类似,一层套了一层。

    最终变成

    ARP协议

    用来获取对方的MAC地址,通过广播的方式,首先肯定要知道对方的ip地址,就像你要访问百度,肯定得知道百度的域名,域名就是百度的IP地址。假设是在本教室广播,一嗓子吼出去了,所有人开始解包,只有IP地址是172.16.10.11的这个人才会返回他的Mac地址,其他人全部丢弃。那么跨网络怎么获取对方MAC地址呢:通过ip地址的区分,当不在同一个局域网时,目标ip就变成网关ip。

    传输层

    传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,

    那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

    传输层功能:建立端口到端口的通信

    补充:端口范围0-65535,0-1023为系统占用端口

    应用层

    应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式 。

    应用层功能:规定应用程序的数据格式。

    简述一遍

    看完上面是不是觉得迷迷糊糊,让我们简单串一遍

    1、物理层:(网卡)

    定义:

    物理层不是具体的物理设备,而是定义物理设备的标准,比如网线的类型,光纤的类型,各种传输介质的传输速率这样的参数。

    主要作用:

    传输比特流,01011100101... 转化成电流大小强弱 再转化成比特流 0100111... (数模转换,模数转换)

    2、数据链路层:(交换机)

    定义:

    从物理层传来的比特流可能传输有错,或者传输漏掉。所以有了数据链路层。

    主要作用:

    格式化数据,提供错误检测和纠正。保证数据的可靠性。将比特流组合成字节,再将字节组合成帧。交换机对帧解码,并根据帧中包含的信息发送出去。

    3、网络层:(路由器,IP协议)

    定义:

    从数据链路层发送来的数据多个节点发送到目的地,那如何知道目的节点是哪个,最佳路径是什么?然后有了网络层。

    主要作用:

    将网络地址翻译成物理地址,决定了如何将数据从起始地发送到目的地。通过 发送优先权、网络拥塞程度、服务质量、可选路由花费,决定从节点A到节点B的最佳路径。此层数据——>数据包。

    4、传输层:(OSI模型中最重要的一层,TCP协议,UDP协议)

    定义:

    随着网络通信需求的进一步扩大,通信过程需要发送大量数据比如海量文件。数据一旦多,所需时间自然很长。而网络在通信过程中会中断好多次。为了保证大量文件的准确性,需要对数据进行切分,切割为一个一个的段落进行发送。那么如果有段落漏掉了怎么办?重传?段落之间是否需要按照切割顺序到达节点?然后有了传输层。

    主要作用:

    解决了不同网络之间主机的数据传输,并解决了传输质量的问题。传输协议,流量控制,基于接收方可接受数据的快慢程度规定适当的发送速率。按照网络能够处理的最大尺寸将数据切割(以太网无法接收大于1500字节的数据包)。传输层将数据切割之后,对每一个数据片安排一个序列号。以便数据到达接收方的传输层时,能以正确的顺序重组。TCP:传输控制协议。UDP:用户数据包协议。

    5、会话层:

    定义:

    封装过后的信息已经可以发送到接收方,但现在每次还需要TCP去打包,IP去找路由。这样当然不行,所以建立一个自动收发包,自动寻址的功能。这就是会话层。

    主要作用:

    建立和管理应用程序之间的通信。会话层使用校验点,在通信会话失效时从校验点恢复通信,这种能力对于传输大文件很重要。

    6、表示层:

    定义:

    当解决不同系统之间通信的语法问题(比如windows和linux)。有了表示层。

    主要作用:

    数据将按照网络能理解的方案进行格式化,格式化因网络所使用的类型不同而不同。

    7、应用层:(HTTP协议)

    定义:

    发送方现在已经知道自己发的是什么东西,转化成字节有多长。但是接收方不知道,所以应用层的网络协议诞生了。

    主要作用:

    规定发送方和接收方必须使用固定长度的消息头消息头必须使用某种固定的组成。而且消息头里必须记录消息体的长度等一系列信息。方便接收方能够解析发送方发送的数据。

  • 相关阅读:
    swfupdate flash上传工具
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服 务器。请验证实例名称是否正确并且 SQL Server 已配置为允
    多对多 一对一 一对多 主从 关联 字典
    JavaScript面向对象
    vue的transition过渡效果
    【译】Learn ES2015——箭头函数
    vue的选项
    JavaScript模块化
    vue-router
    vuex是啥
  • 原文地址:https://www.cnblogs.com/wwbplus/p/11794139.html
Copyright © 2011-2022 走看看