导言
要学习计算机网络,我们首先要了解什么是计算机网络,计算机网络都做了哪些事情以及我们可以用计算机网络来做些什么。
什么是计算机网络
计算机网络,简称网络。Internet是世界上最大的计算机网络。
对于计算机网络,一个比较通用的定义是:利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。
简而言之,计算机网络的主要目的就是连接各地的计算机,传输信息,实现空间上的跨越。
功能
数据通信
数据通信是依照一定的通信协议,利用数据传输技术在两个终端之间传递数据信息的一种通信方式和通信业务。
数据通信的重点在于数据。数据就是数值,也就是我们通过观察、实验或计算得出的结果。数据有很多种,最简单的就是数字。数据也可以是文字、图像、声音等。其典型应用有:文件传输、电子信箱、话音信箱、可视图文、目录查词、智能用户电报及遥测遥控等。
资源共享
计算机网络中可以共享的资源包括:硬件、软件、数据、通信信道。硬件资源的共享可以提高设备的利用率,避免设备的重复投资;软件资源和数据资源的共享可以充分利用已有的信息资源,减少软件开发过程中的劳动,避免大型数据库的重复建设。
典型的硬件共享是现在网上随处可见的云计算与云服务,
典型的信息资源共享例如:代码托管网站GitHub
集中管理
目前,已经有了许多管理信息系统、办公自动化系统等,通过这些系统可以实现日常工作的集中管理,提高工作效率,增加经济效益。
分布式处理
在计算机网络体系的帮助下,将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息 处理 任务的计算机系统。
负荷均衡
负荷均衡是指工作被均匀的分配给网络上的各台计算机系统。网络控制中心负责分配和检测,当某台计算机负荷过重时,系统会自动转移负荷到较轻的计算机系统去处理。
三种数据交换技术
能够实现数据传输的技术主要有三种
计算机网络比较常见的是分组交换,其余两种电路交换和报文交换了解即可。
分组交换也称为包交换,将要传输的数据按一定长度分成很多组,为了准确的传送到对方,每个组都打上标识,在每个数据段的前面加上必要的控制信息作为数据段的首部,每个带有首部的数据段就构成了一个分组。首部指明了该分组发送的地址许多不同的数据分组在物理线路上以动态共享和复用方式进行传输,为了能够充分利用资源,当数据分组传送到交换机时,会暂存在交换机的存储器中,然后根据当前线路的忙闲程度,交换机会动态分配合适的物理线路,继续数据分组的传输,直到传送到目的地。到达目地之后的数据分组再重新组合起来,形成一条完整的数据。
优点:
可靠性高。分组交换中每个分组可以自由选择传输途径当网中发生故障时,分组仍能自动选择一条避开故障地点的迂回路由传输,不会造成通信中断。
可实现分组多路通信。由于每个分组都含有控制信息,所以,分组型终端尽管和分组交换机只有一条用户线相连,但可以同时和多个用户终端进行通信。
经济性好。在网内传输、交换的是一个个被规范化了的分组,这样可简化交换处理,不要求交换机具有很大的存储容量,降低了网内设各的费用。
计算机网络体系结构
计算机网络体系的关键就只有两个词:层次和协议
在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。只有提前规定好通信时的数据格式以及有关的同步问题。
我们都知道,计算机是用二进制来表示信息的。同样的,计算机网络在传输信息的时候,也是用一些事先约定好的东西来表示0或者1(例如高低电平)。为了将这些0或者1作为信息的载体,同时发送到正确的目的地,我们需要相互规定好格式,否则他们就只是一些无意义的数字。举个例子:在考试的时候,你会和你的同学约定好摸鼻子表示选a,摸桌子表示选b,这也算是一种协议。
这些为进行网络中的数据交换而建立的规则,标准或约定成为网络协议。协议主要由三个要素组成:语法,语义,同步。
计算机网络是个非常复杂的系统。要传输的数据大多是软件应用层面的数据,为了进行超远距离传输,我们需要将其转换为为物理信号,通过电缆或者光纤完成传输,到达目的地再转换为文件交付给用户。这个过程中有很多任务需要完成。例如
连接建立和释放。交换数据前先建立一条逻辑连接,告诉对面你要准备发消息了。数据传送结束后释放连接。
分段和重装。为了分组转发更高效的完成任务,发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
流量控制。传输时两端的速率应大致一致。发送端的发送速率不要太快,要使接收端来得及接收。
复用和分用。并非每次每刻都需要发送消息,为了节省资源,一般发送端几个高层会话会复用一条低层的连接,在接收端再进行分用。
差错控制 使得和网络对等端的相应层次的通信更加可靠。
因此,为了将复杂的问题简单化,我们将计算机网络划分成几个层次,每个层次负责一个或者多个功能。各层之间是独立的,每一层向上和向下通过层间接口提供服务,无需暴露内部实现。这样每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能。
比较常见的是OSI模型和TCP/IP模型
两者的具体结构划分如下
其中OSI模型是一个理想模型,实际应用价值较低。目前的互联网是基于TCP/IP模型建立的,所以我们将重心放在这一部分上。
五个层次从上往下依次是应用层,传输层,网络层,数据链路层,物理层。
应用层:
应用层的任务是通过应用进程间的交互来完成特定网络应用,应用层交互的数据单元称为报文或消息。
应用层协议很多,如域名系统DNS,支持Web应用的HTTP协议,支持电子邮件的SMTP协议等等。
传输层:
传输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务,传输层的数据单位称为数据段或报文段。
传输层主要使用两种协议:传输控制协议TCP,用户数据协议UDP
网络层:
在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。这一层的数据单位称为数据包。
互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Intert Prococol)和许多路由选择协议,因此互联网的网络层也叫做「网际层」或「IP层」。
网络接口层:
我们可以把网络接口层看作是数据链路层和物理层的合体。这一层偏向于物理硬件的封装使用,偏向底层,在软件开发时较少用到。
数据链路层的作用是将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。这一层的数据单位为帧。
物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。物理层的数据单位是代表比特率的物理信号。
在发送数据的流程中,数据如下图被一层层打包并发送,到达目的地再层层解封
每一层的详细协议如下
其中软件开发者主要学习的是网络层往上的部分
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。