如果说计算机把我们从工业时代带到了信息时代,那么计算机网络就可以说把我们带到了网络时代。随着使用计算机人数的不断增加,计算机也经历了一系列的发展,从大型通用计算机 -> 超级计算机 -> 小型机 -> 个人电脑 -> 工作站 -> 便携式电脑 -> 智能手机终端等都是这一过程的产物。计算机网络也逐渐从独立模式
演变为了 网络互联模式
。
可以看到,在独立模式下,每个人都需要排队等待其他人在一个机器上完成工作后,其他用户才能使用。这样的数据是单独管理的。
现在切换到了网络互联模式,在这种模式下,每个人都能独立的使用计算机,甚至还会有一个服务器,来为老大哥、cxuan 和 sonsong 提供服务。这样的数据是集中管理的。
计算机网络按规模进行划分,有 WAN(Wide Area Network, 广域网)
和 LAN(Local area Network, 局域网)
。如下图所示
上面是局域网,一般用在狭小区域内的网络,一个社区、一栋楼、办公室经常使用局域网。
距离较远的地方组成的网络一般是广域网。
最初,只是固定的几台计算机相连在一起形成计算机网络。这种网络一般是私有的,这几台计算机之外的计算机无法访问。随着时代的发展,人们开始尝试在私有网络上搭建更大的私有网络,逐渐又发展演变为互联网,现在我们每个人几乎都能够享有互联网带来的便利。
计算机网络发展历程
批处理
就和早期的计算机操作系统一样,最开始都要先经历批处理(atch Processing)
阶段,批处理的目的也是为了能让更多的人使用计算机。
批处理就是事先将数据装入卡带或者磁带,并且由计算机按照一定的顺序进行读入。
当时这种计算机的价格比较昂贵,并不是每个人都能够使用的,这也就客观暗示着,只有专门的操作员才能使用计算机,用户把程序提交给操作员,由操作员排队执行程序,等一段时间后,用户再来提取结果。
这种计算机的高效性并没有很好的体现,甚至不如手动运算快。
分时系统
在批处理之后出现的就是分时系统了,分时系统指的是多个终端与同一个计算机连接,允许多个用户同时使用一台计算机。分时系统的出现实现了一人一机
的目的,让用户感觉像是自己在使用计算机,实际上这是一种 独占性
的特性。
分时系统出现以来,计算机的可用性得到了极大的改善。分时系统的出现意味着计算机越来越贴近我们的生活。
计算机通信
计算机网络的诞生
电子邮件(E-mail)
、
万维网(WWW,World Wide Web)
等信息传播方式如雨后春笋般迎来了前所未有的发展,使得互联网从大到整个公司小到每个家庭内部,都得以广泛普及。
计算机网络的高速发展
高潮
,近年来 3G、4G、5G 通信技术的发展更是互联网高速发展的产物。
IP(Internet Protocol)
网所取代,IP 也是互联网发展的产物。
网络安全
互联网协议
协议
,比如你应聘成功了,企业会和你签订劳动合同,这种双方的雇佣关系也是一种
协议
。注意自己一个人对自己的约定不能成为协议,协议的前提条件必须是多人约定。
|
|
|
|
|
|
|
|
|
接口
,同一层之间的交互所遵守的约定叫做
协议
。
OSI 标准模型
-
应用层
:应用层是 OSI 标准模型的最顶层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。包括文件传输、电子邮件远程登录和远端接口调用等协议。
-
表示层
: 表示层向上对应用进程服务,向下接收会话层提供的服务,表示层位于 OSI 标准模型的第六层,表示层的主要作用就是将设备的固有数据格式转换为网络标准传输格式。
-
会话层
:会话层位于 OSI 标准模型的第五层,它是建立在传输层之上,利用传输层提供的服务建立和维持会话。
-
传输层
:传输层位于 OSI 标准模型的第四层,它在整个 OSI 标准模型中起到了至关重要的作用。传输层涉及到两个节点之间的数据传输,向上层提供可靠的数据传输服务。传输层的服务一般要经历传输连接建立阶段,数据传输阶段,传输连接释放阶段 3 个阶段才算完成一个完整的服务过程。
-
网络层
:网络层位于 OSI 标准模型的第三层,它位于传输层和数据链路层的中间,将数据设法从源端经过若干个中间节点传送到另一端,从而向运输层提供最基本的端到端的数据传送服务。
-
数据链路层
:数据链路层位于物理层和网络层中间,数据链路层定义了在单个链路上如何传输数据。
-
物理层
:物理层是 OSI 标准模型中最低的一层,物理层是整个 OSI 协议的基础,就如同房屋的地基一样,物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
TCP/IP 协议簇
TCP/IP 协议簇
,它并不特指单纯的 TCP 和 IP 协议,而是容纳了许许多多的网络协议。
-
应用层、表示层、会话层三个层次提供的服务相差不是很大,所以在 TCP/IP 协议中,它们被合并为应用层一个层次。
-
由于数据链路层和物理层的内容很相似,所以在 TCP/IP 协议中它们被归并在网络接口层一个层次里。
IP 协议
互联网协议(Internet Protocol)
,位于网络层。IP是整个 TCP/IP 协议族的核心,也是构成互联网的基础。IP 能够为运输层提供数据分发,同时也能够组装数据供运输层使用。它将多个单个网络连接成为一个互联网,这样能够提高网络的可扩展性,实现大规模的网络互联。二是分割顶层网络和底层网络之间的耦合关系。
ICMP 协议
Internet Control Message Protocol
, ICMP 协议主要用于在 IP 主机、路由器之间传递控制消息。ICMP 属于网络层的协议,当遇到 IP 无法访问目标、IP 路由器无法按照当前传输速率转发数据包时,会自动发送 ICMP 消息,从这个角度来说,ICMP 协议可以看作是
错误侦测与回报机制
,让我们检查网络状况、也能够确保连线的准确性。
ARP 协议
地址解析协议
,即
Address Resolution Protocol
,它能够根据 IP 地址获取物理地址。主机发送信息时会将包含目标 IP 的 ARP 请求广播到局域网络上的所有主机,并接受返回消息,以此来确定物理地址。收到消息后的物理地址和 IP 地址会在 ARP 中缓存一段时间,下次查询的时候直接从 ARP 中查询即可。
TCP 协议
传输控制协议
,也就是
Transmission Control Protocol
,它是一种面向连接的、可靠的、基于字节流的传输协议,TCP 协议位于传输层,TCP 协议是 TCP/IP 协议簇中的核心协议,它最大的特点就是提供可靠的数据交付。
UDP 协议
用户数据报协议
,也就是
User Datagram Protocol
,UDP 也是一种传输层的协议,与 TCP 相比,UDP 提供一种不可靠的数据交付,也就是说,UDP 协议不保证数据是否到达目标节点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP 是一种无连接的协议,传输数据之前源端和终端无需建立连接,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序等现象。但是 UDP 具有较好的实时性,工作效率较 TCP 协议高。
FTP 协议
文件传输协议
,英文全称是
File Transfer Protocol
,应用层协议之一,是 TCP/IP 协议的重要组成之一,FTP 协议分为服务器和客户端两部分,FTP 服务器用来存储文件,FTP 客户端用来访问 FTP 服务器上的文件,FTP 的传输效率比较高,所以一般使用 FTP 来传输大文件。
DNS 协议
域名系统协议
,英文全称是
Domain Name System
,它也是应用层的协议之一,DNS 协议是一个将域名和 IP 相互映射的分布式数据库系统。DNS 缓存能够加快网络资源的访问。
SMTP 协议
简单邮件传输协议
,英文全称是
Simple Mail Transfer Protocol
,应用层协议之一,SMTP 主要是用作邮件收发协议,SMTP 服务器是遵循 SMTP 协议的发送邮件服务器,用来发送或中转用户发出的电子邮件
SLIP 协议
串行线路网际协议(Serial Line Internet Protocol)
,是在串行通信线路上支持 TCP/IP 协议的一种
点对点(Point-to-Point
)式的链路层通信协议。
PPP 协议
Point to Point Protocol
,即点对点协议,是一种链路层协议,是在为同等单元之间传输数据包而设计的。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
网络核心概念
传输方式
-
面向连接型中,在发送数据之前,需要在主机之间建立一条通信线路。
-
面向无连接型则不要求建立和断开连接,发送方可用于任何时候发送数据。接收端也不知道自己何时从哪里接收到数据。
分组交换
报文(Message)
,报文是一个集大成者,它可以包括你想要的任何东西,比如文字、数据、电子邮件、音频、视频等。为了从源目的地向端系统发送报文,需要把长报文切分为一个个小的数据块,这种数据块称为
分组(Packets)
,也就是说,报文是由一个个小块的分组组成。在端系统和目的地之间,每个分组都要经过
通信链路(communication links)
和
分组交换机(switch packets)
,分组要在端系统之间交互需要经过一定的时间,如果两个端系统之间需要交互的分组为 L 比特,链路的传输速率为 R 比特/秒,那么传输时间就是 L / R秒。
存储转发传输
存储转发传输
排队时延和分组丢失
顺序到达
和
排队
的问题。事实上,对于每条相连的链路,该分组交换机会有一个
输出缓存(output buffer)
和
输出队列(output queue)
与之对应,它用于存储路由器准备发往每条链路的分组。如果到达的分组发现路由器正在接收其他分组,那么新到达的分组就会在输出队列中进行排队,这种等待分组转发所耗费的时间也被称为
排队时延
,上面提到分组交换器在转发分组时会进行等待,这种等待被称为
存储转发时延
,所以我们现在了解到的有两种时延,但是其实是有四种时延。这些时延不是一成不变的,其变化程序取决于网络的拥塞程度。
丢包(packet loss)
,到达的分组或者已排队的分组将会被丢弃。
转发表和路由器选择协议
IP
地址,当原主机发送一个分组时,在分组的首部都会加上原主机的 IP 地址。每一台路由器都会有一个
转发表(forwarding table)
,当一个分组到达路由器后,路由器会检查分组的目的地址的一部分,并用目的地址搜索转发表,以找出适当的传送链路,然后映射成为输出链路进行转发。
路由选择协议
的,用于自动设置转发表。
电路交换
电路交换(circuit switching)
。电路交换在
资源预留
上与分组交换不同,什么意思呢?就是分组交换不会预留每次端系统之间交互分组的缓存和链路传输速率,所以每次都会进行排队传输;而电路交换会预留这些信息。一个简单的例子帮助你理解:这就好比有两家餐馆,餐馆 A 需要预定而餐馆 B 不需要预定,对于可以预定的餐馆 A,我们必须先提前与其进行联系,但是当我们到达目的地时,我们能够立刻入座并选菜。而对于不需要预定的那家餐馆来说,你可能不需要提前联系,但是你必须承受到达目的地后需要排队的风险。
端到端的链接(end-to-end connection)
。
分组交换和电路交换的对比
分组交换网的时延、丢包和吞吐量
吞吐量
用来控制数据丢失。如果在端系统之间引入时延,也不能保证不会丢失分组问题。所以我们从时延、丢包和吞吐量三个层面来看一下计算机网络
分组交换中的时延
节点总时延(total nodal delay)
。
时延的类型
节点处理时延
分为两部分,第一部分是路由器会检查分组的首部信息;第二部分是决定将分组传输到哪条通信链路所需要的时间。一般高速网络的节点处理时延都在微妙级和更低的数量级。在这种处理时延完成后,分组会发往路由器的转发队列中
排队时延
。排队时延的长短取决于先于该分组到达正在队列中排队的分组数量。如果该队列是空的,并且当前没有正在传输的分组,那么该分组的排队时延就是 0。如果处于网络高发时段,那么链路中传输的分组比较多,那么分组的排队时延将延长。实际的排队时延也可以到达微秒级。
队列
是路由器所用的主要的数据结构。队列的特征就是先进先出,先到达食堂的先打饭。传输时延是理论情况下单位时间内的传输比特所消耗的时间。比如分组的长度是 L 比特,R 表示从路由器 A 到路由器 B 的传输速率。那么传输时延就是 L / R 。这是将所有分组推向该链路所需要的时间。真实情况下传输时延通常也在毫秒到微妙级
传播时延
。该比特以该链路的传播速率传播。该传播速率取决于链路的物理介质(双绞线、同轴电缆、光纤)。如果用公式来计算一下的话,该传播时延等于两台路由器之间的距离 / 传播速率。即传播速率是
d/s
,其中 d 是路由器 A 和 路由器 B 之间的距离,s 是该链路的传播速率。
传输时延和传播时延的比较
传输时延
是路由器推出分组所需要的时间,它是分组长度和链路传输速率的函数,而与两台路由器之间的距离无关。而
传播时延
是一个比特从一台路由器传播到另一台路由器所需要的时间,它是两台路由器之间距离的倒数,而与分组长度和链路传输速率无关。从公式也可以看出来,传输时延是
L/R
,也就是分组的长度 / 路由器之间传输速率。传播时延的公式是
d/s
,也就是路由器之间的距离 / 传播速率。
排队时延
La/R
被称为
流量强度(traffic intensity)
,如果 La/R > 1,则比特到达队列的平均速率超过从队列传输出去的速率,这种情况下队列趋向于无限增加。所以,设计系统时流量强度不能大于1。
周期性
到达的,即每 L / R 秒到达一个分组,则每个分组将到达一个空队列中,不会有排队时延。如果流量是
突发性
到达的,则可能会有很大的平均排队时延。一般可以用下面这幅图表示平均排队时延与流量强度的关系
丢包
丢弃(drop)
该分组,即分组会
丢失(lost)
。
计算机网络中的吞吐量
端到端的吞吐量
。假如从主机 A 向主机 B 传送一个大文件,那么在任何时刻主机 B 接收到该文件的速率就是
瞬时吞吐量(instantaneous throughput)
。如果该文件由 F 比特组成,主机 B 接收到所有 F 比特用去 T 秒,则文件的传送
平均吞吐量(average throughput)
是 F / T bps。
单播、广播、多播和任播
单播(Unicast)
广播(Broadcast)
广播体操
,这就是广播的一个事例,主机和与他连接的所有端系统相连,主机将信号发送给所有的端系统。
多播(Multicast)
任播(Anycast)
物理媒介
物理媒介(phhysical medium)
,物理媒介有很多种,比如双绞铜线、同轴电缆、多模光纤榄、陆地无线电频谱和卫星无线电频谱。其实大致分为两种:引导性媒介和非引导性媒介。
双绞铜线
双绞铜线
,多年以来,它一直应用于电话网。从电话机到本地电话交换机的连线超过 99% 都是使用的双绞铜线,例如下面就是双绞铜线的实物图
无屏蔽双绞线
一般常用在局域网(LAN)中。
同轴电缆
借助于这种结构以及特殊的绝缘体和保护层,同轴电缆能够达到较高的传输速率,同轴电缆普遍应用在在电缆电视系统中。同轴电缆常被用户引导型共享媒介。
光纤
陆地无线电信道
卫星无线电信道
后记
- END -
最近整理一份面试资料《Java技术栈学习手册》,覆盖了Java技术、面试题精选、Spring全家桶、Nginx、SSM、微服务、数据库、数据结构、架构等等。 获取方式:点“ 在看,关注公众号 Java后端 并回复 777 领取,更多内容陆续奉上。 推 荐 阅 读 1. 今年的 1024 注定不平凡! 2. Spring Boot 接入 GitHub 第三方登录 3. 用命令行管理你的 GitHub 项目,不必再开网页 4. 怎么去掉 IDEA 中 XML 显示的屎黄色 5. 程序员需知的 58 个网站
喜欢文章,点个 在看
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。