分层网络协议(OSI)各层作用

      我们常说的OSI这个计算机术语的意思就是“分层网络协议”。它给我们规划出了一个网络通讯的模型。为什么需要分层呢,因为通讯这件大事是由分多小事组成,分层有利于明确工作职责。还有的好处就是使得整个通讯更灵活(解耦的效果)。为什么要定一个协议呢,因为“无规矩难以成方圆”,有规矩为事效率才高。如果没有一个公认的协议,各自按各自的想法来通讯,那我想与外边的更多计算机通讯就得支持他们所有的协议。

    OSI分层有分五层有分七层的。在这里我就按五层来理解(七层也不过是在此基础上细分而已)。这五层从下往上依次是:物理层(实体层)、链路层、网络层、传输层、应用层。 
每一层都只依赖于其上一层,越下面的层就越接近更件,越上面就越接近用户。

物理层

    我们知道每一台计算机发出的信息最后都会转化为电信号传输到各处去,也就是0和1。那么传输是需要实体的,即使是使用电波来传输,那么电波就是物理实体。当然也可以是光纤、电缆等。这些使各计算机连接起来的介质组成了我们的物理层。

链路层

    光是0和1是没有意义的,我们得想办法约定它的解读方式。目前主导的方式是“以太网”协议。它将电信号进行分组,每一组叫一帧,每一帧由两部分组成:头部和数据部。
两台计算机通讯(能互相发信息),那必需有两个约定公认的地址。就像快递送货一样,没地址是没发送的。这时候MAC地址就出现了,它是表示的是“网卡”的地址。也就是说,网络通信必需经过这一个“网卡”。按理来说,每台计算机的MAC地址都是唯一的,这样才能唯一确定一台计算机。
    前面我们提到每一帧信息有两部分,那么这个头部就存放有发送者、接收者的地址信息,像这个MAC地址。
有网卡,在一个局域网内,一台计算机1想给计算机3以信息,那么它会将信息广播到局域网上。局域网上的所有计算机都将收到该条信息,然后每台计算机都会拿信息头的接收者MAC地址与自身的对比,相同那么就接收,不同则丢弃。这就是链路层要做的事。

网络层

    链路层解决局域网内的通讯问题,那么整个互联网这么大这么多计算机,如果还是每一台都广播那么网络都会被这种广播占用。我们得想办法缩小范围。人们想到要给这么大个互联网分成一个个小组,按什么来分呢。在链路层的时候我们的做法不是在局域网内使用广播嘛,那么就按局域网来分。那么个局域网怎么定义呢。这时候“网络地址”就出现了,也就是我们常说的IP地址。
分层网络协议(OSI)各层作用
    上面的截图是我这的局域网的两个IP,一个是电脑的,另一个是手机的(打开手机的设置,查看手机状态信息就能看到手机的IP了)。
    IP地址是由32个二进制位组成的,转成十进制也就是0.0.0.0——255.255.255.255之间。像上面192.168.31表示的是我家这个局域网,而最后一位 86或95则唯一识别一台计算机。但有些局域网可能不用靠前24位来标识局域网,可能16位就够了。那么我们还要一个标识来告诉网络哪部分是局域网的标识,哪部分是主机的标识。这时候“子网掩码”出现了。我们常见的255.255.255.0,表示的就是前24位是局域网的网络标识,后8位则是主机的标识 。具体变换出网络标识的做法应该是拿IP与子网掩码进行“与”(and)运算。得到的再比较,一致则说明在一个局域网。如192.168.31.86 和 192.168.31.95 分别与 255.255.255.0进行and 运算,得到的都是192.168.31.0 ,说明这两台主机在同一个网络内。
    另一个问题,链路层的通信信息数据是来自这一层的,那这一层的数据包结构是什么样子呢。其实它和链路层一样,也是由标头和数据组成。标头不用想,肯定得包含这一层新定义的这个东西——IP地址。这个数据包我们叫它IP包,它到达链路层的时候会被整个地放到链路层的数据部分中。由此我们可以找到一个规律,每一个数据包的标头所放的都是每一层的特色东西,而数据部分都是别人传进来的。
    这个网络层解决了大网络中计算机的局域网定位问题。

传输层

    由前面的三层把关,信息能成功传到计算了。但我们计算机可以装很多软件,这信息到底是传给浏览器的还是QQ的呢。那么我们还得定义一个标识来告诉信息是传给哪个软件的。这时候端口就出现了。每一个有信息交互的软件都会在在“网卡”那里注册一个程序的编号。我们叫这个编号叫“端口”。在这一层的信息包中,标头会包含发送者、接收者的端口,到时候网卡通过信息包中的这个“端口”就能知道是给哪个程序的。

应用层

    由以上几层数据准备到达这里后,它就是负责把数据解读出来,变成我们可读的信息。