计算机网络是通过通信线路和通信设备连接的许多的分散独立工作的计算机系统,遵从一定的协议用软件实现资源共享的系统
计算机网络组成分为硬件、软件、协议三部分
协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合
网络按照拓扑结构分类:总线型、环型、星型、树形、网状型
七层模型,亦称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参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。
其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
数据链路层(Data Link Layer)是OSI模型的第2层 负责建立和管理节点间的链路。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
在OSI参考模型中
物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第1层
“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路是看不见的
因为OSI协议栈比较复杂,且TCP/IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型
TCP/IP网络模型适用于不同设备上进程间的通信,共分为四层分,从上到下分别是应用层、传输层、网络层、网络接口层
TCP/IP四层模型_tcpip4层模型_muggle啊的博客-CSDN博客
应用层是最上层的,我们能直接接触到的层,我们日常所使用的软件都是在应用层上实现的。
应用层不关心数据是如何传输的,就和我们寄快递的时候只需要把包裹交给快递员,我们不关心包裹是如何运输的。
协议
应用层的协议包括HTTP、FTP、Telnet、DNS、SMTP等
传输层是为应用层提供网络支持的,在传输层有两个传输协议,分别是TCP和UDP。
TCP的全称是传输控制协议,大部分应用传输层协议使用的都是TCP,TCP为了保证数据能够可靠的传输到目的地,有流量控制、超时重传、拥塞控制等特性。
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地址分为两种意义:
比如192.168.1.1/24,后面的/24表示的就是子网掩码255.255.255.0,255.255.255.0 二进制是「11111111 11111111 11111111 00000000」,其中共有24个1,为了简化子网掩码的表示,就用/24来代替。
关于子网以及子网掩码的知识,我们后续文章会说明
网络层生成完IP头部之后,接下来要交给网络接口层在IP头前面加上MAC头,并封装成数据帧(Data Frame)发送到网络上。
IP头中的接收方IP表示网络包的目的地,通过这个地址我们就可以判断要将包发送到那里,但是在以太网的世界中,这个思路行不通!
以太网是一种在局域网内,把附近的设备连接起来,使其可以互相通讯的技术。我们电脑上的以太网口、WiFi接口,以太网交换机、路由器上的千兆、万兆网口,还有网线,都是以太网的组成部分。
以太网判断网络包目的地的方式和IP不同,不需要采用互相匹配的方式才能在以太网中将包发往目的地,而MAC头就是干这个用的,所以在以太网进行通讯需要用到MAC地址。
MAC头是以太网使用的头,包含了发送方和接收方的MAC地址等信息,我们可以通过ARP协议获取对方的MAC地址。
所以网络接口层主要为网络提供链路级别的传输服务,负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来别试网络中的设备。
部分资料中还出现了一个五层模型,物理层和数据链路层并没有合并
有关五层模型的知识可以到这里去了解:
计算机网络模型(TCP五层模型) - 知乎 (zhihu.com)
每一层的封装结构如下图
这些单位其实并没有本质上的区别,可以统称为数据包。