本文引用图片均来自 高军: 计算机网络
定义及分类
计算机网络这个概念其实并没有一个精确的统一的定义
简单定义
计算机网络是一些互相连接的、自治的计算机的集合
复杂定义
计算机网络就是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用
当然,其实定义不重要,相信各位读者都清楚自己想了解的是计算机网络的什么内容
计算机网络大致可以从交换技术、使用者、传输介质、覆盖范围和拓扑结构
进行分类
- 交换技术:电路交换网络、报文交换网络、分组交换网络
- 使用者:公用网、专用网
- 传输介质:有线网络、无线网络
- 覆盖范围:广域网WAN、城域网MAN、局域网LAN、个域网PAN
- 拓扑结构:总线型网络、星型网络、环形网络、网状型网络
一般我们讨论的网络属于分组交换网络、广域网和网状型网络——我们的数据以分组
的形式经路由器
转发在多个小网络组成的巨大网络
上流动
网络体系结构
在计算机网络的体系结构中,OSI
7层结构是法律上
的国际标准而TCP/IP
4层结构则是事实上
的国际标准,没办法,在OSI
制定好的时候TCP/IP
标准早已占领了市场。一般地,我们在讲解网络体系结构时常采用最右边所示的5层结构
接下来自底向上简单介绍每层的作用
物理层
物理层解决如何传输数据
的问题,比如采用什么介质(光纤、双绞线等),什么接口以及什么样的信号(电频等)来表示比特0和1
数据链路层
在解决物理层的问题后,数据已经可以在一个网络内流通,那么网络中的主机如何知道数据是传给自己的呢?这一串比特流里面哪些才是有用的数据内?
数据链路层解决主机编址以及数据分组的格式问题
网络层
解决数据链路层的问题后,数据已经可以在一个网络内有目的性的流动。但是,当数据需要跨网络流动时应该怎么办呢?
网络层解决网络和主机共同编址以及路由如何转发分组
的问题
如上图中192.168.1
和192.168.0
分别是两个网络号
,网络号后边的蓝色字体则是主机号
,网络号和主机号共同组成IP
地址实现网络和主机的共同编址
运输层
解决网络层的问题后,数据已经可以在多个网络组成的大网络中流动。但是,如果某台主机有多个不同的进程需要和目的主机的同一个进程进行通信,如何确定目的主机返回的数据应该给哪个进程呢?如果进程之间的数据分组在流动过程中出现丢失、错误等情况要如何处理呢?
运输层解决进程之间基于网络的通信以及传输出现错误时如何处理
的问题
网络层
在解决前面所有层的问题之后,只需在它们的基础上建立各种协议
并按照协议编写程序,程序之间按照协议进行通信便可完成各种网络应用,例如
- 万维网的HTTP协议
- 电子邮件的SMTP协议
- 文件传输的FTP协议
分层思想实例
以打开网页
的例子来探究网络中各层到底做了什么,我们打开浏览器,输入网址,按下回车,然后可以看到一个个页面展示出来
这其中的过程其实是主机上的浏览器进程
向目的主机上的服务进程
发送请求,请求数据被路由器
转发在网络
上流通最后到达目的主机被服务进程接收,服务进程返回响应数据
,响应数据同样经过网络流通后被浏览器进程接收然后渲染出来
源主机
首先位于应用层
的浏览器进程按照HTTP协议
构造报文
请求获取某个网页资源,报文格式如下
运输层
给HTTP报文
增加TCP首部
使之成为TCP报文
,TCP首部
用于区分应用进程和实现可靠传输
,TCP首部
格式如下:
网络层
给TCP报文
增加IP首部
使之成为IP报文
,IP首部
使得IP数据报
可以被路由器
转发进而可以在网络上传输,IP首部
格式如下:
数据链路层
给IP报文
增加首部
和尾部
使之成为帧
,此例中是以太网帧
,以太网帧首部
使得帧可以在一个网络上传输,能被相应的主机接收,以太网帧尾部
可以让目的主机检查接收的帧是否有误。以太网帧首部和尾部格式如下:
物理层
将以太网帧
看作比特流
并且增加前导码
,增加前导码是为了让目的主机做好接收
帧的准备,前导码格式如下:
然后将增加了前导码的比特流转换
成相应的信号(如电信号)并发送出去
路由器
数据分组沿着传输介质流动到达路由器
路由器的物理层将信号转换为比特流并去掉前导码,然后把数据交给链路层,实际上是交付了以太网帧
链路层收到以太网帧后将首部和尾部去掉并将数据向上交付给网络层,实际上是交付了IP数据报
网络层提取IP首部
中的目的地址
并查询自身路由表
确定转发端口
,然后交付给链路层...
目的主机
目的主机各层做的事情和源主机正好相反,源主机中自顶向下数据每往下流经一层就添加上该层的标志数据,目的主机中自底向上数据每往上一层就除去该层的标志数据,最后在应用层中相应的服务进程解析HTTP报文
服务进程返回响应数据的过程其实和接受请求的过程是一样的,只是源主机和目的主机身份互换,不再赘述
专用术语
这节简单介绍实体、协议和服务
三个术语
实体
实体指任何可发送或接收信息的硬件或软件进程,对等实体则是收发双方中相同层次的实体
如上图中浏览器进程和服务器进程属于对等实体,两张网卡也属于对等实体
协议
协议是指控制两个对等实体进行逻辑通信的规则的集合
如上图应用层的进程与进程间通过HTTP等协议
通信,网络层使用IP协议
进行通信,这些通信行为看上去
是对等实体之间的直接通信,但是实际上它们的通信遵守第三节 分层思想实例 所述流程,所以称为逻辑通信
协议包含三要素:语法、语义、同步
语法定义所交换信息的格式
如下图是IP数据报
的格式,其中的小格子称为字段或域
,数字表示字段长度(位)
,语法就是定义了这些小格子的长度和顺序
语义定义收发双方所要完成的操作
浏览器发出HTTP
请求,服务器就知道寻找所请求的资源并返回,这正是因为服务器通过HTTP协议的语义
知道了浏览器想干什么,所以服务器知道应该怎么做
同步定义收发双方的时许关系
比如经典的三次握手
服务
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务
例如物理层使用物理层协议进行通信,向链路层提供
服务,链路层享受
物理层提供的服务,实现链路层协议并进行通信。每一层协议的实现都依赖于
底下的层提供的服务
协议是水平的,服务是垂直的,实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议,也就是说,下面的协议对上面的实体是透明的
服务访问点指同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型
例如数据链路层的服务访问点位帧的“类型”字段
、网络层的访问点位IP数据报首部中
的“协议字段”
服务原语指上层为了使用下层所提供的服务而与下层交换的命令
对等层次之间传送的数据包称为该层的协议数据单元 PDU,层与层之间交换的数据包称为服务数据单元 SDU
最后,本节涉及的概念可总结为下图
参考文献
- 【1】高军: 计算机网络