网络体系结构
计算机网络协议介绍
通信协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合,他使网络中不同类型的计算机能够相互通信。
计算机要进行通信,简单来说就是:连接在网络上的两台计算机要互相传送文件。
很显然,两台计算机之间必须有一条传送数据的通道。但这还远远不够,至少还有以下几项工作需要去完成。
- 发起通信的计算机必须将数据通信的通路进行激活,也就是要发出一些命令,保证要传送的计算机数据能在这条通路上正确发送和接收。
- 要告诉网络如何识别接收数据的计算机。
- 发起通信的计算机必须查明对方计算机是否已开机,并且与网络连接正常。
- 发起通信的计算机中的应用程序必须弄清楚,在对方计算机中的文件管理程序是否已做好接收文件和存储文件的准备工作。
- 若计算机的文件格式不兼容,则至少其中一台计算机应完成格式转换功能。
- 对出现的各种差错和意外事故,如数据传送错误、重复或丢失,网络中某个结点交换机出现故障等,应当有可靠的措施保证对方计算机最终能够收到正确的文件。
为了协调这样复杂的计算机网络,早在 ARPAnet 设计时就提出了分层的方法。分层可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
早期的计算机网络是封闭的,为了使不同体系结构的计算机网络都能互联,国际标准化组织 ISO 于 1977 年提出了一个试图使计算机在世界范围内互连成网的标准框架,即著名的开放系统互联基本参考模型 OSI/RM(Open System Interconnection Reference Model),简称 OSI。
OSI/RM 模型七层协议简介
OSI 七层模型通过七个层次化的结构模型使不同的系统、不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输。
完成中继功能的节点通常称为中继系统。在 OSI 七层模型中,处于不同层的中继系统具有不同的名称。
物理层(Physical Layer)
物理层是参考模型中的最底层,主要定义了系统的电气、机械、过程和功能标准。如:电压、物理数据速率、最大传输距离、物理联接器和其他的类似特性。
物理层主要功能:利用传输介质为数据链路层提供物理联接,负责数据流的物理传输工作。
物理层传输的基本单位是比特流,即 0 和 1,也就是最基本的电信号或光信号,是最基本的物理传输特征。
物理层主要设备:网卡、网线、集线器、中继器、调制解调器。
常用协议:IEEE 802.2、Ethernet v.2、Internetwork。
数据链路层(Data Link Layer)
负责在通信实体间建立和管理节点间的链路。通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
- MAC 子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
- LLC 子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为 bit 流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
传输的基本单位为“帧”。
数据链路层主要设备:网桥、交换机。
常用协议:MTU、SLIP、CSLIP、PPP
网络层(Network Layer)
网络层是以路由器为最高节点俯瞰网络的关键层,它负责把分组从源网络传输到目标网络的路由选择工作。
其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。
在实现网络层功能时,需要解决的主要问题如下:
- 寻址:数据链路层中使用的物理地址(如 MAC 地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如 IP 地址)。
- 交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。
- 路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端,从而实现拥塞控制、网络互联等功能。
- 连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。
网络层主要设备:路由器。
常用协议:IP、ICMP、RIP、OSPF、BGP、IGMP、ARP、RARP
传输层
该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。
传输层是网络体系结构中高低层之间衔接的一个接口层。传输层不仅仅是一个单独的结构层,而是整个分析体系协议的核心。
传输层主要为用户提供 End—to—End (端到端)服务,处理数据包错误、数据包次序等传输问题。它向高层屏蔽了下层数据的通信细节,使用户完全不用考虑物理层、数据链路层和网络层工作的详细情况。传输层使用网络层提供的网络联接服务,依据系统需求可以选择数据传输时使用面向联接的服务或是面向无联接的服务。
常用协议:TCP、UDP
会话层(Session Layer)
是用户应用程序和网络之间的接口,会话层负责向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
会话层的主要功能是负责维护两个节点之间的传输联接,确保点到点传输不中断,以及管理数据交换等功能。
表示层(Presentation Layer)
它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
表示层以下各层主要完成的是从源端到目的端可靠地的数据传送,而表示层更关心的是所传送数据的语法和语义。表示层的主要功能是处理在两个通信系统中交换信息的表示方式,主要包括数据格式变化、数据加密与解密、数据压缩与解压等。
在网络带宽一定的前提下数据压缩的越小其传输速率就越快,所以表示层的数据压缩与解压被视为掌握网络传输速率的关键因素。表示层提供的数据加密服务是重要的网络安全要素,其确保了数据的安全传输,也是各种安全服务最为重视的关键。表示层为应用层所提供的服务包括:语法转换、语法选择和联接管理。
应用层(Application Layer)
是直接面向用户的一层,用户的通信内容要由应用进程解决,这就要求应用层采用不同的应用协议来解决不同类型的应用要求,并且保证这些不同类型的应用所采用的低层通信协议是一致的。
应用层中包含了若干独立的用户通用服务协议模块,为网络用户之间的通信提供专用的程序服务。需要注意的是应用层并不是应用程序,而是为应用程序提供服务。
常用协议:TFTP、HTTP、SNMP、FTP、SMTP、DNS、Telnet
总结
在 7 层模型中,每一层都提供一个特殊的网络功能。发送端自上而下传输(直到物理层),接收端自下而上传输(直到发送端发起通信的层次),低 3 层由网络设备(包括计算机网卡)和传输介质完成,涉及到将 2 台计算机连接在一起所使用的数据通信网络的相关协议,实现通信子网功能。高 3 层通常是由主机和传输介质完成,涉及到允许 2 个终端应用进程交互作用的协议。而中间的传输层为面向应用的上三层屏蔽了与网络相关的下三层的详细操作。实质上,传输层建立在由下三层提供给服务的基础上,为面向应用的上三层提供网络无关的信息交换服务。如下图所示:
各层物理设备介绍
网络设备按照其主要用途可以分为三大类:
- 接入设备:用于计算机与计算机网络连接的设备,常见的有网卡和调制解调器等
- 网络互联设备:用于实现网络之间的互联,主要设备有中继器、交换机和路由器等
- 网络服务设备:用于提供远程网络服务的设备如网络服务器和网络打印机等。
物理层的主要设备有:网卡、网线、集线器、中继器、调制解调器。
数据链路层主要设备有:网桥、交换机。
网络层主要设备有:路由器。
以下主要介绍集线器、交换机、路由器。
集线器
集线器的英文称为 “Hub”。“Hub” 是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于 OSI 参考模型的物理层。
集线器是物理层设备,采用广播的形式来传输信息。
以太网交换机
以太网交换机是基于以太网传输数据的交换机,以太网采用共享总线型传输媒体方式的局域网。以太网交换机的结构是每个端口都直接与主机相连,并且一般都工作在全双工方式。交换机能同时连同许多对端口,使每一对相互通信的主机都能像独占通信媒体那样,进行无冲突地传输数据
交换机在端口上接受计算机发送过来的数据帧,根据帧头的目的 MAC 地址查找 MAC 地址表,然后将该数据帧从对应端口上转发出去,从而实现数据交换。如下图所示。
路由器
路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。
工作在 OSI 参考模型的网络层,路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议,但是在我国绝大多数路由器运行 TCP/IP 协议。
路由器通常连接两个或多个由 IP 子网或点到点协议标识的逻辑端口,至少拥有 1 个物理端口。路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据包。路由器通过动态维护路由表来反映当前的网路拓扑,并通过网络上其他路由器交换路由和链路信息来维护路由表。如下图所示。
总体来说,路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率。
网关
网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。网关主要工作在第四层传输层及其以上。
交换机和路由器的区别
(1)功能不同:交换机的功能相当于增加网线接口,同时供多人上网,但路由器的功能是自动拨号并且传输无线信号,两者功能完全不同。
(2)分类不同:交换机可以分类为普通的局域网交换机和运营商的广域交换机,而路由器可以分为有线连接和无线连接。
(3)层级不同:交换机所在的是数据链路层,而路由器所在的是网络层。路由器有自主的 IP 地址,能把网络分流,接入互联网。
集线器与路由器在功能上有什么不同?
首先说 HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同。但是两者在性能上有区别:集线器采用的是共享带宽的工作方式,而交换机是独享带宽。这样在机器很多或数据量很大时,两者将会有比较明显的区别。
而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径。
路由器与交换机的主要区别体现在以下几个方面:
(1)工作层次不同 最初的的交换机是工作在数据链路层,而路由器一开始就设计工作在网络层。由于交换机工作在数据链路层,所以它的工作原理比较简单,而路由器工作在网络层,可以得到更多的协议信息,路由器可以做出更加智能的转发决策。
(2)数据转发所依据的对象不同 交换机是利用物理地址或者说 MAC 地址来确定转发数据的目的地址。而路由器则是利用 IP 地址来确定数据转发的地址。IP 地址是在软件中实现的,描述的是设备所在的网络。MAC 地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而 IP 地址则通常由网络管理员或系统自动分配。
(3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域 由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有 VLAN 功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。
(4)路由器提供了防火墙的服务 路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。
TCP/IP协议简介
TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/因特网互联协议,也叫做网络通讯协议。它是 Internet 最基本的协议,也是 Internet 国际互联网络的基础。它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
它简化了 OSI/RM 模型七层协议,包含四层协议,每层封装上层数据的方式也不一样。
TCP/IP 协议的好处是,它隐藏了通信底层的细节,有利于提高效率。程序员只需要与高级协议打交道,不必花时间去配置硬件的细节问题。最主要的是它是一个真正的开放系统,好多配置细节都不用花钱,所以普及很快。
从字面意思上讲,TCP 和 IP 分别是指两种协议,实际也确实如此,但在很多情况下,它是利用 IP 进行通信时所必须用到的协议群的统称。里面包括了 IP 协议、ICMP 协议、TCP 协议、以及 http、ftp、pop3 协议等。网络中的计算机都采用这套协议族进行互联。
TCP/IP 协议四层主要包括:网络接口层(数据链路层)、网络层、传输层、应用层这四层。TCP/IP 四层模型和 ISO/RM 七层模型之间有很明确的对应关系。
可见 TCP/IP 被分为 4 层,每层承担的任务不一样,各层的协议的工作方式也不一样,每层封装上层数据的方式也不一样:
- 应用层:应用程序通过这一层访问网络,常见 FTP、HTTP、DNS 和 TELNET 协议;
- 传输层:TCP 协议和 UDP 协议;
- 网络层:IP 协议,ARP、RARP 协议,ICMP 协议等;
- 网络接口层:网络接口层又称为数据链路层,是 TCP/IP 协议的基层,负责数据帧的发送和接收。
实验步骤
IP 地址
网络上每一个节点都必须有一个独立的 IP 地址,通常使用的 IP 地址是一个 32 bit 的数字,被 .
分成 4 组,例如,255.255.255.254
就是一个 IP 地址。有了 IP 地址,用户的计算机就可以发现并连接互联网中的另外一台计算机。
在 Linux 终端输入 ifconfig -a
命令查看自己的 IP 地址:
ifconfig -a
结果如下:
在 Windows 下查询 IP 地址
在 Windows 的 CMD 窗口中可以使用 ipconfig
查询自己电脑的 IP 地址。
ipconfig
该命令用于显示所有当前的 TCP/IP 网络配置,刷新动态主机配置协议(DHCP)和域名关系(DNS)设置,使用不带参数的 ipconfig 命令可以显示所有适配器的 IP 地址、子网掩码和默认网关等。
ipconfig 命令的相关参数,及其作用如下:
ipconfig /all:显示详细信息
ipconfig /release:释放当前 IP 地址
ipconfig /renew:重新申请 IP
ipconfig /flushdns:刷新 dns 缓存
ipconfig /registerdns:重新载入 dns 服务器上注册自己
域名
用 12 位数字组成的 IP 地址很难记忆,在实际应用时,用户一般不需要记住 IP 地址,互联网给每个 IP 地址起了一个别名,习惯上称作域名。
域名与计算机的 IP 地址相对应,并把这种对应关系存储在域名服务系统 DNS(Domain Name System) 中,这样用户只需记住域名就可以与指定的计算机进行通信了。
常见的域名包括 com、net 和 org 三种顶级域名后缀,除此之外每个国家还有自己国家专属的域名后缀(比如我国的域名后缀为 cn)。
我们可以使用命令 nslookup
或者 ping
来查看与域名相对应的 IP 地址
在 Windows 下使用 ping 命令
在 Windows 下 ping 命令的用法和 Linux 下相同。ping 命令是用来测试 TCP/IP 网络是否畅通或者网络连接速度的命令。
其原理是根据计算机唯一指示的 IP 地址,当用户给目的地址发送一个数据包时,对方就会返回一个同样大小的数据包,根据返回的数据包,用户可以确定目的主机的存在,并初步判断目的主机的操作系统。
如判断网络是否连接:
ping www.baidu.com
在工作中,通常需要判断自己的主机与服务器的连接状态,这时,通常需要通过 ping 命令来判断,格式为:
ping 198.1.245.224(服务器的地址)
ping 命令及其参数详解如下:
- ping :向目标主机发送 4 个 icmp 数据包,测试对方主机是否收到并响应,一般常用于做普通网络是否通畅的测试,但是 ping 不通不一定就代表网络不通,也可能是主机安装了防火墙。
- ping -t:不停的向目标主机发送数据包,这些数据包都很小。但有些居心叵测的人就自己写了一些类似于 ping 命令的程序,不停的发送很大的数据包,以阻塞目标主机的网络连接。
- ping /n 5:只发送 5 次。
MAC 地址
MAC(Media Access Control)地址,或称为物理地址、硬件地址,用来定义互联网中设备的位置,它是网卡的唯一标识身份证。
在 TCP/IP 层次模型中,网络层管理 IP 地址,链路层则负责 MAC 地址。因此每个网络位置会有一个专属于它的 IP 地址,而每个主机会有一个专属于它的 MAC 地址。(虚拟机中的 MAC 地址不是真实 MAC 地址,所以可能会产生冲突,也有些网卡支持用户配置 MAC 地址)。
MAC 地址在网卡出厂时就确定了,不能修改。MAC 地址长度为 48 位、6 个字节,一般用 16 进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。
数据的封装和分用
封装:当应用程序发送数据的时候,数据在协议层次当中自顶向下通过每一层,每一层都会对数据增加一些首部或尾部信息,这样的信息称之为协议数据单元(Protocol Data Unit,缩写为 PDU),在分层协议系统里,在指定的协议层上传送的数据单元,包含了该层的协议控制信息和用户信息。如下图所示:
- 物理层(一层)PDU 指数据位(Bit)
- 数据链路层(二层)PDU 指数据帧(Frame)
- 网络层(三层)PDU 指数据包(Packet)
- 传输层(四层)PDU 指数据段(Segment)
- 第五层以上为数据(data)
分用:当主机收到一个数据帧时,数据就从协议层底向上升,通过每一层时,检查并去掉对应层次的报文首部或尾部,与封装过程正好相反。
RFC
RFC(Request for Comment)文档是所有以太网协议的正式标准,并在其官网上面公布,由 IETF 标准协会制定。大量的 RFC 并不是正式的标准,出版的目的只是为了提供信息。RFC 的篇幅不一,从几页到几百页不等。每一种协议都用一个数字来标识,如 RFC 3720 是 iSCSI 协议的标准,数字越大意味着 RFC 的内容越新或者是对应的协议(标准)出现的比较晚。
PDU 指数据段(Segment)
- 第五层以上为数据(data)
分用:当主机收到一个数据帧时,数据就从协议层底向上升,通过每一层时,检查并去掉对应层次的报文首部或尾部,与封装过程正好相反。
RFC
RFC(Request for Comment)文档是所有以太网协议的正式标准,并在其官网上面公布,由 IETF 标准协会制定。大量的 RFC 并不是正式的标准,出版的目的只是为了提供信息。RFC 的篇幅不一,从几页到几百页不等。每一种协议都用一个数字来标识,如 RFC 3720 是 iSCSI 协议的标准,数字越大意味着 RFC 的内容越新或者是对应的协议(标准)出现的比较晚。
所有的 RFC 文档都可以从网络上找到,其官网为 IETF。在网站上面可以通过分类以及搜索快速找到目标协议的 RFC 文档。目前在 IETF 网站上面的 RFC 文档有数千个,但是我们不需要全部掌握,在工作或学习中如果遇到可以找到对应的解释,理论与实际结合会有更好地效果,单纯阅读 RFC 的效果一般。