计算机网络——计算机网络体系结构(2 4)-分层的必要性(五层协议原理体系结构

假设,我们已经解决了物理层的问题,也就是说,主机间可以发送信号来传输比特0或者1了。

我们来看看,在这样一个总线型的网络上,还面临什么需要解决的问题。

  • 如何标识网络中的各主机(主机编址问题,例如MAC地址)

如图所示,主机A要给主机C发送数据,

但是,表示数据的信号会通过总线传播到总线上的每一个主机。那么主机C如何知道该数据是发送给自己的,自己要接受呢?而主机B、D、E又如何知道该数据并不是发送给自己的,自己应该拒绝呢?

这就很自然地引出了如何标识网络中各主机的问题,也就是主机编址问题。

网卡上的MAC地址,它就是主机在网络中的地址。

主机在发送数据时,应该给数据附加上目的地址,根据目的地址和自身地址,来决定是否接受数据。

这就又引出了一个问题:

  • 如何从信号所表示的一连串比特流中区分出地址和数据

目的主机如何从信号中区分呢?也就是解决分组的封装格式问题。

  • 如何协调各主机争用总线

另外,对于总线型的网络,还会出现下面这种典型的问题。

例如,某个时刻,总线总是空闲的,也就是没有主机使用总线来发送数据。片刻之后,主机B和D同时向总线发送数据,这必然会造成信号碰撞,因此,如何协调各主机争用总线,也是必须要解决的问题。

需要说明的是,这种总线型的网络早已淘汰,现在常用的是使用以太网交换机将多台主机互连形成的交换式以太网。

那么,以太网交换机是如何实现的呢?

我们将这些问题,全部划分到数据链路层。

到这里,我们可能会发现,只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在一个网络上传输了。

但是,我们每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题,还是不能正常工作。

网络层

  • 如何标识各网络以及网络中的各主机(网络和主机共同编址的问题,例如IP地址)
  • 路由器如何转发分组,如何进行路由选择

  • 如何标识各网络以及网络中的各主机(网络和主机共同编址的问题,例如IP地址)

我们来看这个例子,这是一个由三个路由器,四个网络互连起来的小型互联网。我们可以把它看做是因特网中很小的一部分。

在之前的例子中,仅有一个网络,我们不需要对网络进行标识。而在本例中,有多个网络。很显然,我们面临着如何标识各网络以及网络中各主机的问题。

换句话说,也就是网络和主机共同编址的问题。例如,IP地址。

这是网络N1中各设备的IP地址。该类IP地址的前三个十进制数用来标识网络,第四个十进制数用来标识主机。

同理,这是网络N2上各设备的IP地址:

  • 路由器如何转发分组,如何进行路由选择

我们再来看另一个问题,源主机与目的主机之间的传输路径往往不止一条。分组从源主机到目的主机可走不同的路径。这样就引出了路由器如何转发分组的问题,以及如何进行路由选择的问题。

我们将这些问题全部划归到网络层。

至此,我们解决了物理层、数据链路层以及网络层各自的问题,则可以实现分组在网络间传输的问题。

但是,对于计算机网络应用而言,这仍然不够。

运输层

  • 如何解决进程之间基于网络的通信问题
  • 出现传输错误时,如何处理

  • 如何解决进程之间基于网络的通信问题

例如,假设这台主机中运行着两个与网络通信相关的应用进程,一个是浏览器进程,另一个是QQ进程。这台服务器中,运行着与网络通信相关的服务器进程。

某个时刻,主机收到了来自服务器的分组,那么,这些分组,应该交给浏览器进程处理呢,还是应该交给QQ进程处理呢?

这就引出了我们如何标识与网络通信相关的应用进程,进而解决进程之间基于网络的通信问题。

  • 出现传输错误时,如何处理

另外,如果某个分组在传输过程中出现了误码,或者由于路由器繁忙,导致路由器丢弃分组。换句话说,若出现传输错误,应该如何处理。

我们将这些问题,全部划分到运输层。

至此,我们解决了物理层、数据链路层、网络层以及运输层各自的问题,则可以实现进程之间基于网络的通信。

应用层

在此基础上,只需制定各种应用层协议,并按协议标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。

  • 通过应用进程间的交互来完成特定的网络应用

例如,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等。

我们将这些问题全部划归到应用层。

至此,我们将实现计算机网络所需要解决的各种主要问题,分别划归到了物理层、数据链路层、网络层、运输层和应用层,进而构成了五层协议体系的原理体系结构。


END


2021年Java中高级面试必备知识点总结

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。

本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。

目录:

(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

部分内容:

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

F36W4K-1714797633609)]

[外链图片转存中…(img-Jq6IK5ta-1714797633609)]

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值