前言:打算更系统地学习一下计算机网络,听的网课是湖科大教书匠的课程。
这篇文章将在宏观上介绍一下计算机网络的体系结构
1.常见的计算机网络体系结构
1.OSI七层模型
OSI参考模型并没有提供一个可以实现的方法,而是描述了一些概念,用来协调进程间通信标准的制定。即OSI参考模型并不是一个标准,而是一个在制定标准时所使用的概念性框架。(维基百科)这个模型并未在市场上真正的使用,因为其实现起来周期太长,而且复杂。
2.事实上的国际标准
事实上计算机网络体系结构是TCP/IP体系结构。这个是市场上真正使用的标准
其中网络接口层指有线的以太网接口和无线的局域网的WIFI接口。
ip协议是网际层最重核心的协议,对下可以将不同的网络接口进行互连,对上可以对TCP协议和UDP协议提供网络互联服务。 其中TCP协议对应用层的HTTP协议和SMTP协议等提供可靠传输的服务。UDP协议对应用层的DNS 和RTP协议提供不可靠的服务。
这里的可靠服务是指有连接,有反馈。你给人家发了信息,你能知道对方有 没有收到你的信息,信息是否准确无误。就像打电话一样,你是能判断出对 方有没有收到信息的,因为你会收到反馈。而现在在微信发消息就是不可靠 的服务,因为你把信息发了过去,你并不知道对方有没有看到这一条消息。
3.适合学习的网络协议
对于初学者,需要一个适合学习的体系模型,需要结合OSI七层模型和TCP/IP协议的优点,这个就是后面要学的五层结构
2.计算机网络各层的概述
下面对各层在计算机网络通信过程中要做的事做一个概述
1.物理层
物理层中涉及的主要问题是
1.采用怎样的传输介质,例如双绞线
2.采用怎样的物理接口例如RJ45以太网接口
3.怎样用比特流表示0和1
例如用高低电平表示0和1.
0表示低电平,1表示高电平
2.数据链路层
在以前总线型网络的时候,会面临一些问题
比如说,有一个总线型网络,将主机A,B,C,D,E连接在一起。主机A打算向主机B发送信息,那么主机A怎么知道这个数据是发送给自己的呢,主机C,D,E又怎么知道这个数据不是发送给自己的。总结一下,就是:
1.如何表示网络中的各主机,也就是主机编址问题,例如mac地址
对于这一个问题,有一个方法:将这些信息,给它加上地址信息
有一个问题出现了:2.如何从信号所表示的一连串比特流中区分出地址和数据3.如果两个主机同时发送信息,发生比特流的碰撞怎么办,即:
如何协调主机征用网线。这种总线型的网络已经被淘汰 ,现在已经是交换机的方式。这种方式又是怎么实现的呢,这就是数据链路层要处理的东西。
3.网络层
1.如果有多个网络,我们该怎么标识各网络和各网络中的主机,我们该怎么进行标识(例如IP地址)
2.路由器怎么转发分组,以及路由选择的问题。
4.运输层
如何解决进程之间的通信问题。例如一个主机运行着两个与网络通信有关的应用进程例如:qq.火狐浏览器。服务器,进行着apache服务。这个时候服务器对主机进行分组,是分给qq还是火狐浏览器呢。
5.应用层
应用进程间的交互来完成特定的网络应用
比如
支持万维网应用的HTTP协议
支持电子邮件的SMTP协议
支持文件传送的FTP协议。
3.应用进程间基于网络的通信
在谷歌浏览器输入www.souhu.com以后,就会进入搜狐的主页,那么在这个过程,计算机网络之间的传输过程是什么样的呢?
首先应用层按HTTP协议创建一个报文,
然后该HTTP报文传送给传输层,并添加一个TCP首部。
这个首部是为了区分应用进程和实现可靠传输。然后传递给网络层,
并添加一个ip首部,成为ip数据报,而可以被路由器分组转发。
然后交付给数据链路层,添加一个首部和一个尾部,使之成为一个帧。
然后交付给物理层,物理层将数据看成比特流。然后加入前导码使之可以通过介质进行传输。传输到路由器,然后逐层去掉首部尾部,最后传输到服务器,去掉首部尾部。