1.计算机网络基本概念
计算机网络是通过通信线路和通信设备连接的许多的分散独立工作的计算机系统,遵从一定的协议用软件实现资源共享的系统
计算机网络组成分为硬件、软件、协议三部分
协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合
2.计算机网络分类与模型
网络按照拓扑结构分类:总线型、环型、星型、树形、网状型
OSI七层模型:
七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。
应用层
应用层(Application Layer)是OSI参考模型的最高层
它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
应用层的主要功能
- 用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系
- 实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务
表示层
表示层(Presentation Layer)是OSI模型的第6层
它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。
表示层的具体功能
- 数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异
- 数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能
- 压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复
- 数据的加密和解密:可以提高网络的安全性
会话层
会话层(Session Layer)是OSI模型的第5层
是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。
因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理
用户可以按照半双工、单工和全双工的方式建立会话
会话层的具体功能
- 会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短
- 会话流量控制:提供会话流量控制和交叉会话功能
- 寻址:使用远程地址建立会话连接
- 出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误
传输层
OSI下3层的主要任务是数据通信,上3层的任务是数据处理
传输层(Transport Layer)是OSI模型的第4层
因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。
该层的主要任务是:
向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。
传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。
传输层的主要功能
- 传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。
- 处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。
- 监控服务质量
网络层
网络层(Network Layer)是OSI模型的第3层
它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。
其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
网络层的主要功能
- 寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)
- 交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术
- 路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端
- 连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测
数据链路层
数据链路层(Data Link Layer)是OSI模型的第2层
负责建立和管理节点间的链路。
数据链路层的主要功能
- 通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
- MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
- LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
物理层
在OSI参考模型中
物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第1层
物理层的主要功能
- 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
- 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。
“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路是看不见的
TCP/IP四层模型:
因为OSI协议栈比较复杂,且TCP/IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型
TCP/IP网络模型适用于不同设备上进程间的通信,共分为四层分,从上到下分别是应用层、传输层、网络层、网络接口层
TCP/IP四层模型_tcpip4层模型_muggle啊的博客-CSDN博客
应用层
应用层是最上层的,我们能直接接触到的层,我们日常所使用的软件都是在应用层上实现的。
应用层不关心数据是如何传输的,就和我们寄快递的时候只需要把包裹交给快递员,我们不关心包裹是如何运输的。
应用层的协议包括HTTP、FTP、Telnet、DNS、SMTP等
传输层
传输层是为应用层提供网络支持的,在传输层有两个传输协议,分别是TCP和UDP。
TCP(Transmission Control Protocol)
TCP的全称是传输控制协议,大部分应用传输层协议使用的都是TCP,TCP为了保证数据能够可靠的传输到目的地,有流量控制、超时重传、拥塞控制等特性。
UDP(User Datagram Protocol)
UDP全称是用户报文协议,UDP相对TCP来说就很简单,只负责发送数据包,至于数据包能否正常抵达目的地,UDP不能保证;但是换一个角度来说,UDP少干了这么多,那他的实时性相对TCP来说更好,传输效率也更高。
通常来说一台设备上会运行多个应用进程,为了区分数据要发送的具体进程,传输层中需要指定端口号来区分不同的进程和应用。
网络层
负责将数据从一个设备发送到另一个设备的并不是传输层,传输层设计的理念是,简单、高效、专注,实际场景中的网络环节错综复杂,网络层就来是负责数据实际传输。
网络层最常用的是IP协议(Internet Protocol),IP协议会将传输层的报文作为数据部分,再加上IP数据包组装成IP报文。
网络层负责将数据从一个设备传输到另一个设备,而为了确定目标设备,网络层需要有区分设备单的编号,这个编号就是IP地址。
对于IPv4协议,IP地址共32位(32个bit),共分成四段(例如:192.168.1.1),每段8位。如果只有单纯的IP地址,虽然做到了设备区分,但是殉职起来就特别麻烦,世界上那么多设备,一个个去匹配显然是非常不科学的
因此需要借助子网掩码来将IP地址分为两种意义:
- 一个是网络号,负责标识IP地址是属于哪一个[子网]的
- 一个是主机号,负责标识同一子网下的不同主机
比如192.168.1.1/24,后面的/24表示的就是子网掩码255.255.255.0,255.255.255.0 二进制是「11111111 11111111 11111111 00000000」,其中共有24个1,为了简化子网掩码的表示,就用/24来代替。
- 网络号=IP地址按位与子网掩码
- 主机号=IP地址按位与子网掩码取反
关于子网以及子网掩码的知识,我们后续文章会说明
网络接口层
网络层生成完IP头部之后,接下来要交给网络接口层在IP头前面加上MAC头,并封装成数据帧(Data Frame)发送到网络上。
IP头中的接收方IP表示网络包的目的地,通过这个地址我们就可以判断要将包发送到那里,但是在以太网的世界中,这个思路行不通!
以太网是一种在局域网内,把附近的设备连接起来,使其可以互相通讯的技术。我们电脑上的以太网口、WiFi接口,以太网交换机、路由器上的千兆、万兆网口,还有网线,都是以太网的组成部分。
以太网判断网络包目的地的方式和IP不同,不需要采用互相匹配的方式才能在以太网中将包发往目的地,而MAC头就是干这个用的,所以在以太网进行通讯需要用到MAC地址。
MAC头是以太网使用的头,包含了发送方和接收方的MAC地址等信息,我们可以通过ARP协议获取对方的MAC地址。
所以网络接口层主要为网络提供链路级别的传输服务,负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来别试网络中的设备。
五层模型
部分资料中还出现了一个五层模型,物理层和数据链路层并没有合并
有关五层模型的知识可以到这里去了解:
计算机网络模型(TCP五层模型) - 知乎 (zhihu.com)
四层的数据传输
每一层的封装结构如下图
- 网络接口层的传输单位是帧(frame)
- IP层的传输单位是包(package)
- TCP层的传输单位是段(segment)
- HTTP的传输单位则是消息或报文(message)
这些单位其实并没有本质上的区别,可以统称为数据包。