计算机网络传输分层模型


对于互联网数据传送的分层模型,有分成七层的,有分成5层的,还有分成4层的。例如分成七层模型的如下(从上到下):

七层中,越往下越靠近计算机底层,越往上越靠近用户。

不过,我们今天要讲的,是以分成五层的模型来讲。其分层如下图:

下面,我们从下往上讲解每层的作用以及每层涉及的相关的协议

一. 物理层


一台计算机与另一台计算机要进行通信,第一件要做的事是什么?当然是要把这台计算机与另外的其他计算机连起来啊。

例如可以通过光纤啊,电缆啊,双绞线啊等物体把他们联起来。然后才能进行通信,也就是说,物理层负责把两台计算机连起来,然后在计算机之间传送0,1这样的电信号。

二. 数据链路层


前面说了,物理层它只是单纯着负责在计算机之间传输0,1这样的电信号。假如这些0,1组合的传送毫无规则,计算机是解读不了的。因此,我们需要制定一套规则来进行0,1的传送。例如多少个电信号为一组啊,每一组信号应该如何标识才能让计算机读懂啊等。

数据链路层工作在物理层之上,负责给这些0,1制定传送的规则,然后另一方再按照相应的规则来进行解读。

1. 以太网协议

以太网协议规定,一组电信号构成一个数据包,把这个数据包称之为“”。每一个桢由标头(Head)数据(Data)两部分组成。

这个桢的最大长度是1518个字节,最小长度为64字节。假如需要传送的数据很大的话,就分成多个桢来进行传送。

对于表头和数据这两个部分,他们存放的都是一些什么数据呢?我猜你眯着眼睛都能想到他们应该放什么数据。 毫无疑问,我们至少得知道这个桢是谁发送,发送给谁的等这些信息吧?

所以标头部分主要是一些说明数据,例如发送者,接收者等信息。而数据部分则是这个数据包具体的,想给接收的内容。

大家想一个问题,一个桢的长度是64~1518个字节,也就是说桢的长度不是固定的,那你觉得标头部分的字节长度是固定的吗?

它当然是固定的啊,假如不是固定的,每个桢都是单独发的,那计算机怎么知道标头是几个字节,数据是几个字节。所以标头部分的字节是固定的,并且固定为18个字节。

2. MAC地址(交换机基于mac地址表)

把一台计算的的数据通过物理层和链路层发送给另一台计算机,究竟是谁发给谁的,计算机与计算机之间如何区分,你总得给他们一个唯一的标识吧?

这就是MAC地址,连入网络的每一个计算机都会有网卡接口,每一个网卡都会一个地址,这个地址就叫做MAC地址。

计算机之间的数据传送,就是通过MAC地址来唯一寻找、传送的。MAC地址在网卡生产是就被唯一标识了。

3.广播与ARP协议

假如计算机A知道了计算机B的MAC地址,然后计算机A想要给计算机B传送数据,虽然计算机A知道了计算机B的MAC地址,可是它要怎么给它传送数据呢?

计算机A不仅连着计算机B,而且计算机A也还连着其他的计算机。 虽然计算机A知道计算机B的MAC地址,可是计算机A是无法知道计算机B是分布在哪边路线上的。

实际上,计算机A是通过广播的方式把数据发送给计算机B。在同一个子网中,计算机A要向计算机B发送一个数据包,这个数据包包含接收者的MAC地址。

这个时候同一个子网中的计算机C,D也会收到这个数据包的,然后收到这个数据包的计算机,会把数据包的MAC地址取出来,与自身的MAC地址对比,如果两者相同,则接受这个数据包,否则就丢弃这个数据包。这种发送方式我们称之为广播,就像我们平时在广场上通过广播的形式呼叫某个人一样。

那么问题来了,计算机A是如何知道计算机B的MAC地址的呢?这个时候就得由ARP协议这个家伙来解决了,不过ARP协议会涉及到IP地址,不过我们下面才会扯到IP地址。

因此我们先放着,就当作是有这么一个ARP协议,通过它我们可以知道子网中其他计算机的MAC地址。

三. 网络层


上面我们有说到子网这个关键词,实际上我们所处的网络,是由无数个子网络构成的。广播的时候,也只有同一个子网里面的计算机能够收到。

假如没有子网这种划分的话,计算机A发一个数据包给计算机B,其他所有计算机也都能收到这个数据包,然后进行对比再舍弃。世界上有那么多计算机,每一台计算机都能收到其他所有计算机的数据包,那就不得了了。那还不得奔溃。 因此产生了子网这么一个东西。

那么问题来了,我们如何区分哪些MAC地址是属于同一个子网的呢?假如是同一个子网,那我们就用广播的形式把数据传送给对方,如果不是同一个子网的,我们就会把数据发给网关,让网关进行转发。

为了解决这个问题我们引入了一套新的地址协议,这个地址协议能够帮助我们区分MAC地址是否处于同一个子网中。这也是网络层负责解决的问题。

1. IP协议(路由器基于IP地址转发数据)

这个协议就是IP协议,它所定义的地址,我们称之为IP地址。IP协议有两种版本,一种是IPv4,另一种是IPv6。不过我们目前大多数用的还是IPv4,我们现在也只讨论IPv4这个版本的协议。

这个IP地址由32为的二进制数组成,我们一般把它分成4段的十进制表示,地址范围为0.0.0.0~255.255.255.255

每一台想要联网的计算机都会有一个IP地址。这个IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分的二进制位数是不固定的。

假如两台计算机的网络部分是一模一样的,我们就说这两台计算机是处于同一个子网中。

例如192.168.43.1和192.168.43.2,假如这两个IP地址的网络部分为24位,主机部分为8位。那么他们的网络部分都为192.168.43,所以他们处于同一个子网中。

可是问题来了,你怎么知道网络部分是占几位。也就是说,单单从两台计算机的IP地址,我们是无法判断他们的是否处于同一个子网中的。

这就引申出了另一个关键词—子网掩码。子网掩码和IP地址一样也是32位二进制数,不过它的网络部分规定全部为1,主机部分规定全部为0。

也就是说,假如上面那两个IP地址的网络部分为24位,主机部分为8位的话,那他们的子网掩码都为11111111.11111111.11111111.00000000,即255.255.255.0。

那有了子网掩码,如何来判端IP地址是否处于同一个子网中呢?显然,知道了子网掩码,相当于我们知道了网络部分是几位,主机部分是几位。

我们只需要把IP地址与它的子网掩码做与(and)运算,然后把各自的结果进行比较就行了,如果比较的结果相同,则代表是同一个子网,否则不是同一个子网。

例如,192.168.43.1和192.168.43.2的子网掩码都为255.255.255.0,把IP与子网掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中。

2.ARP协议

有了上面IP协议的知识,我们回来讲一下ARP协议。

有了两台计算机的IP地址,我们就可以判断出它们是否处于同一个子网之中。 假如他们处于同一个子网之中,计算机A要给计算机B发送数据时。我们可以通过ARP协议来得到计算机B的MAC地址。

ARP协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的IP地址)。对方收到这个数据包之后,会取出IP地址与自身的对比,如果相同,则把自己的MAC地址回复给对方,否则就丢弃这个数据包。

这样,计算机A就能知道计算机B的MAC地址了。

可能有人会问,知道了MAC地址之后,发送数据是通过广播的形式发送,询问对方的MAC地址也是通过广播的形式来发送,那其他计算机怎么知道你是要传送数据还是要询问MAC地址呢?

其实在询问MAC地址的数据包中,在对方的MAC地址这一栏中,填的是一个特殊的MAC地址,其他计算机看到这个特殊的MAC地址之后,就能知道广播想干嘛了。

假如两台计算机的IP不是处于同一个子网之中,这个时候,我们就会把数据包发送给网关,然后让网关让我们进行转发传送。

3.DNS服务器

这里再说一个问题,我们是如何知道对方计算机的IP地址的呢?

这个问题可能有人会觉得很白痴,心想,当然是计算机的操作者来进行输入了。这没错,当我们想要访问某个网站的时候,我们可以输入IP来进行访问,但是我相信绝大多数人是输入一个网址域名的。

例如访问百度是输入www.baidu.com这个域名。其实当我们输入这个域名时,会有一个叫做DNS服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的IP给我们的。

四. 传输层


虽然我们已经把数据成功从计算机A传送到计算机B了,可是,计算机B里面有各种各样的应用程序,计算机该如何知道这些数据是给谁的呢?

这个时候,端口(Port)这个家伙就上场了,也就是说,我们在从计算机A传数据给计算表B的时候,还得指定一个端口,以供特定的应用程序来接受处理。

也就是说,传输层的功能就是建立端口到端口的通信。相比网络层的功能是建立主机到主机的通信。

也就是说,有了IP和端口,我们就可以进行通信了。这个时候可能有人会说,我输入IP地址的时候并没有指定一个端口啊。其实呢,对于有些传输协议,已经有设定了一些默认端口了。

例如http的传输默认端口是80,https的传输默认端口是443,这些端口信息也会包含在数据包里的。

五.应用层


终于说到应用层了,应用层这一层最接近我们用户了。

虽然我们收到了传输层传来的数据,可是这些传过来的数据五花八门,有html格式的,有mp4格式的,各种各样。你确定你能看的懂?

因此我们需要指定这些数据的格式规则,收到后才好解读渲染。而应用层的功能,就是用来规定应用程序的数据格式的。

计算机网络传输分层模型相关推荐

  1. 计算机网络-网络分层模型及基本网络协议

    1. 网络分层模型 1.1 分层模型图示 1.2 七层模型及各层含义 1 物理层(Physical Layer) 激活.维持.关闭通信端点之间的机械特性.电气特性.功能特性以及过程特性.该层为上层协议 ...

  2. 【计算机网络】分层结构(OSI 7层模型、TCP/TP 4层模型、5层参考模型)

    [计算机网络]分层结构 一 概述 1.1 为什么要分层? 计算机网络是一个复杂的系统,采取分层的结构,可以将庞大而复杂的问题分为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理. 1.2 ...

  3. 【计算机网络】OSI参考模型与TCP/IP分层模型详解(超级详细,三张图完整说明)

    目录 1  基本介绍 2  OSI七层参考模型 3 TCP/IP协议分层模型 4 模型映射关系 5 参考文献 1  基本介绍 OSI(Open System Interconnection)参考模型将 ...

  4. 使用分层网络模型的两个优点是什么_从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了...

    从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了​mp.weixin.qq.com 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就 ...

  5. 计算机设计思想 —— 分层模型

    勿在浮沙筑高台. 分层模型中,不同的层次意味着不同的抽象级别: 抽象也是一种凝聚 附庸的附庸不是附庸: 每一层只需考虑与其相邻的上下两层,而无需考虑更高或者更低的层次: 不考虑,也即不关心(仅考虑自身 ...

  6. 网络基础知识 | 协议 | TCP/IP分层模型

    目录 网络基础知识 网络互联 互联网基础知识 网络的构成要素 网卡 中继器 网桥/2层交换机 路由器/3层交换机 4-7层交换机 网关 协议 分组交换协议 谁来规定协议 协议的标准化 协议的分层 分层 ...

  7. 计算机网络学习笔记-计算机网络体系结构-分层思想以及必要性

    文章目录 前言 一.常见的计算机网络体系结构 二.计算机网络体系结构分层的必要性 三.计算机网络体系结构分层思想举例 总结 前言 如果你是计算机专业相关学生,你一定听过OSI模型,它可能无数次让你奔溃 ...

  8. 074.JAVA网络编程_网络概述和分层模型

    1. 计算机网络 1.1. 计算机网络的概念 1.2. 网络分层 1.3. 网络各层常用协议 1.3.1. OSI 分层模型 1.4. 分层模型各层含义 1.4.1. 应用层 1.4.2. 表示层 1 ...

  9. (chap2 TCP/IP基础知识) TCP/IP协议分层模型

    1. TCP ( Transmission Control Protocol)和IP( lnternet Proto-col )通信协议群 1.1 Internet互联网 互联网中的每个网络都是由骨干 ...

最新文章

  1. c# 自然序号,在C#中的自然排序
  2. DIY混合BCI刺激系统:SSVEP-P300 LED刺激
  3. Android查看挂载的分区(如oem)
  4. 大象公会:如何做万人传播的原创内容?
  5. 基于Git rebase修改历史提交信息
  6. 【英语学习】【Level 08】U03 My Choice L6 Stories that make an impact
  7. 新手配置 Jetty + Eclipse (Hot code debugging)
  8. 数据库扩容 mysql_mysql数据库怎么扩容
  9. KVM(五)libvirt 介绍
  10. 计算机编程—必备基础知识点
  11. Crack内网通积分规则(基于版本3.4.3035)
  12. dp怎么接显示器和主机_怎样设置显示器DP接口信号优先?
  13. 前端自检梳理——Vue.js项目实战开发
  14. 学习AngularJS摘抄的笔记,方便以后查看(摘自菜鸟教程)
  15. 从《虎嗅》改版说说小作坊如何做产品和项目管理
  16. 谷歌404页面html,简洁404页面HTML好看的404错误页源码
  17. 人生感悟,心灵的独白
  18. 傍上区块链大腿,e签宝恐仍难高枕无忧?
  19. linux ipv6模块,有关Linux ipv6模块加载失败的问题
  20. 数学之美--分形几何与建筑形式美

热门文章

  1. 写给太阳村张老师及其员工的公开信
  2. 12、数据系统内置功能(字符串、数组、时间、Math、遍历器、对象成员检测、Object静态方法、对象序列化、正则表达式)
  3. 新手小白如何选择入门第一把吉他,注意这几点不踩坑,初学者入门吉他推荐
  4. VTK+Qt使用BoxWidget包围盒对三维模型进行手动交互切割
  5. html怎么给边框加投影,【uniapp 开发】如何给边框添加阴影效果
  6. 7-9 人以群分 (25 分)
  7. 远距距离、大文件传输的选择
  8. Ubuntu20.04安装anaconda
  9. iOS matrix
  10. 忘记计算机准考证号怎么查成绩