(一) 带你认识网络通讯五老大

网络通讯五层结构

一.概要

  • 问题
    • 如何让分布在不同区域的计算机通讯,类似电话一样,忽视地域的距离,端到端实时通信?
    • 如何让计算机精确定位到另一台计算机,并把数据传给它?
    • 如何防止数据丢失,让数据安全可靠到达对面计算机?
    • 如何高效利用网速带宽,让数据的传输速度更加稳定与可靠?
  • 基于以上问题,搭建了网络通信的5层模型(简化了7层模型)在这里插入图片描述

二.五层结构

  • 物理层

     计算机与计算机的要实现通信,必须具备类似电话一样的线缆链接起来,例如 光纤,电缆等,通过双绞线等结构防止数据失真,这样就可以把数据从一端传送到另一端了,这一层主要负责把计算机链接起来。为了实现远距离传送,每传一段距离都会有调制器等机制防止数据失真,因为传送过程中会因为某种元素丢失。
    在这里插入图片描述

  • 数据链路层

     基于前面说的物理层,通过电缆等,可以在计算机之间传送0或1的电信号,如果毫无顺序发送0或1的信号到另一端,计算机是无法解读出什么含义的,
    在这里插入图片描述
     这时就需要定义一套规则进行0或1的传送,例如多少0或1 为一组,每一组信号要如何标记才能让计算机读懂,就出现了基于以太网协议以太网协议规定,一组电信号(0或1组成)构成一个数据包,称为帧,每一个帧都由标头和数据两部分组成。
    在这里插入图片描述
     帧的大小一般为64-1518字节。如果你传的数据过大,那么就会分为许多帧来进行传送。其中标头(Head)记录着 目的地址与原地址等信息,固定为18个字节,数据部分(Data)包含着发送者要发送的信息。下面是
    RFC 894数据帧封装格式,也是常用格式,可以参考下,有兴趣可以去查询下以太网协议的详细说明。在这里插入图片描述
     这里会产生疑问,为什么要固定标头18个字节,帧的长度不固定,当发送每一帧到另一端时,另一端收到的数据,怎么知道你的标头是18个字节,所以约定成俗,定制规则,就是为了解决某种需求,大家公认它就是18个字节,以后读取就按照这个标准来。

      那么帧是如何确定要达到的计算机的,ABCD计算机,A向C传数据,怎么知道C的地址?这时就出现了MAC物理硬件地址在这里插入图片描述
     每一台携带网络网卡接口的,都有一个唯一的地址,由48个字节组成,这个地址叫做MAC地址,计算机的数据传送就是通过MAC地址来查找目的地的。在这里插入图片描述
     有了这些,现在让A知道了C的MAC地址,A想要给C传数据,那么又出现一个问题,A同时还连接了B和D,A要通过那条线路发送数据呢,知道目的地,不知道怎么走的问题,这时就出现了广播,A向所有线路发送的数据,BCD收到数据后,提取其中的MAC地址与自身的作比较,如果相同就是它要接收的。
     以为这就完事了,没有,上面的情况只是假设,因为假设A知道了C的MAC地址,那么A是如何知道目的的MAC地址呢,这时就出现了ARP协议了。

    • ARP协议
       通过一段特殊的数据包广播获取MAC地址,并记录到缓存中,缓存有期限,例如A端发送特殊的数据包(包含目的IP地址),C端识别IP地址是发送给它,并且是要MAC地址的,就会把自己的网络地址(MAC地址,IP地址)回馈过去,A端就收到了并记录起来。相似的路由器也是,当设备接入到路由器中,路由器会通过APR协议收集端口的MAC地址。IP地址后续网络层讲到。在这里插入图片描述
  • 网络层

     数据链路层,让计算机能够读懂传送的数据,假设知道MAC地址,现在,想个问题,世界很大,计算机成千上万,如果你把据广播出去后,那么每一台计算机都收到了数据包,那还得了。为了解决这类问题,对区域进行了划分,产生了子网概念,同个区域内的计算机属于同个子网,这样广播的数量从上千级别缩减到子网内的计算机,这样就很小了。在这里插入图片描述
     那么又有问题来了,怎么规划子网?这时就出现IP协议了。
    IP协议有两种,一种是IPv4,一种是IPv6,目前绝大多数还在用IPv4。

     现在就讲讲IPv4这个版本的协议,这个IP地址共有32位二进制组成,我们一般把它分为4段十进制表示,每一段的位数是8位,范围为0,0,0,0-~255.255.255.255。

     有了这个IP地址,例如一个A端的IP地址是192.168.43.1,那么怎么判断它是属于哪个子网下的呢,这时就把IP地址端划分为网络部分以及主机部分,网络部分表示的是所属的子网区域,主机部分表示计算机所属子网的那个位置。

     例如A端192.168.43.1,假设网络部分为192.168.43,可见前24位为网络部分,还剩下8位为主机部分,注意网络部分以及主机部分长度不固定,目前有几类IPv4地址,常用的是C类。在这里插入图片描述

     又出现一个问题,假设你知道A端的地址为192.168.43.1,由于网络部分长度不固定,如何知道它的网络部分以及主机部分,这时就引入了子网掩码

    子网掩码,子网掩码与IP地址一样是32位二进制,不过它的网络部分都是1,主机部分都是0,例如24位网络部分,8位主机的话,子网掩码都为
    11111111.11111111.11111111.00000000,即255.255.255.0。

      有了子网掩码,就可以把IP地址的网络部分与主机部分区分开来在这里插入图片描述
      192.168.43.1与子网掩码255.255.255.0做与运算,得到网络部分为192.168.43,主机部分为1.

     这样,当一个数据从A端发送到B端时,经过路由器时,路由器根据子网掩码与目的Ip地址,计算它是不是要发送到当前的子网的,如果相同就进入到子网,如果不同就转发到网关,跳转到下一个路由器,直到匹配到相同的子网,也就是网络部分,进入到该区域的子网进行广播派发。在这里插入图片描述
     路由器收到这个数据包后,查询转发表(ARP协议获取,也称为ARP表),看看这个Ip地址对应的是那个MAC地址,有对应的MAC地址,就会通过MAC地址发送到对应计算机B内。

  • 传输层

     通过物理层、数据链路层以及网络层的互相帮助,已经把数据成功从计算机A传送到计算机B了,可是计算机B内运行着各种各样的程序,这个数据要交给谁呢?为了解决这个问题,引入的端口(Port)这个家伙。

      端口就是程序关注的对象,端口到端口的传输,就是程序与程序之间的通讯,相比于网络层的主机与主机之间的通讯更加细化,你可以想象成一根水管,链接的两台计算机的程序,计算机程序就关注着这根水管流动的水量。

     这样当程序发送数据时,不仅携带目的地址,还要携带端口,指明往那条水管发送,计算机PC大概有65535个端口。

     所以,有了端口与IP地址才能通讯,有些时候你输入一个ip地址没有指明端口,其实已经设定了默认的端口了,例如Http传输默认端口为80,这些端口默认在数据包里的。

     在传输层最常见的有两个协议,TCP与UDP协议,其中TCP提供可靠的数据传输,因为是面向流传输,有严谨节操精神,保证数据快速到达另一个计算机的传输层,保持数据一致。UDP就不一样了,提供不可靠传输,收到就收到,收不到也不就不要了,态度随意。

  • 应用层

      经过前面四层的服务,程序收获了一系列数据,这些数据各种各样,因此需要编写一些能识别这些数据的程序,用户自定义层级。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨守星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值