协议就是一种由某一方制定出来的,大家共同遵守的标准
OSI七层模型是一个开放性的通信系统互联参考模型,从下到上依次为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,其主要的功能就是帮助不同类型的主机实现数据传输,它最大的优点就是将服务、接口和协议这三个概念明确地区分出来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
这是早期的标准,我们现在使用更加广泛的是TCP/IP五层模型
层 | 名称 | 主要功能 | 协议及设备举例 |
---|---|---|---|
7 | 应用层 | 为应用程序提供网络服务,直接与用户和应用程序交互,负责处理特定的应用程序协议,如文件传输、电子邮件、远程登录等 | HTTP、FTP、SMTP、DNS;网关 |
6 | 表示层 | 处理数据的表示、转换和加密等,确保不同系统之间能够正确地理解和处理数据,包括数据格式转换、数据加密和解密、数据压缩和解压缩等功能 | ASCII、JPEG、SSL/TLS |
5 | 会话层 | 建立、维护和管理会话,负责在不同主机上的应用程序之间建立、维持和终止会话连接,并提供会话同步和检查点功能,以确保数据传输的可靠性和连续性 | NetBIOS、RPC |
4 | 传输层 | 提供端到端的通信服务,负责在不同主机上的应用程序之间进行数据传输,确保数据的可靠传输和流量控制,主要功能包括分段和重组数据、确认和重传、流量控制等 | TCP、UDP;四层交换机 |
3 | 网络层 | 负责网络之间的数据路由和寻址,将数据从源主机传输到目标主机,主要功能包括寻址、路由选择、分组转发等 | IP、ICMP、IGMP;路由器 |
2 | 数据链路层 | 将物理层接收到的信号转换为数据帧,并进行错误检测和纠正,负责在相邻节点之间传输数据帧,主要功能包括成帧、差错控制、流量控制、介质访问控制等 | Ethernet、PPP、HDLC;网桥、交换机 |
1 | 物理层 | 负责处理物理介质上的信号传输,定义了设备与物理介质之间的电气、机械、功能和规程特性,包括电缆、连接器、信号的传输与接收等 | RS-232、RJ45、光纤;集线器、中继器 |
TCP/IP五层模型从下到上依次为物理层、数据链路层、网络层、传输层、应用层
层 | 名称 | 主要功能 | 协议及设备举例 |
---|---|---|---|
5 | 应用层 | 为用户提供网络应用服务,直接与用户和应用程序交互,负责处理特定的应用程序协议,如文件传输、电子邮件、远程登录等 | HTTP、FTP、SMTP、DNS、SNMP;网关 |
4 | 传输层 | 提供端到端的通信服务,负责在不同主机上的应用程序之间进行数据传输,确保数据的可靠传输和流量控制,主要功能包括分段和重组数据、确认和重传、流量控制等 | TCP、UDP;四层交换机 |
3 | 网络层 | 负责网络之间的数据路由和寻址,将数据从源主机传输到目标主机,主要功能包括寻址、路由选择、分组转发等 | IP、ICMP、IGMP、ARP、RARP;路由器 |
2 | 数据链路层 | 将物理层接收到的信号转换为数据帧,并进行错误检测和纠正,负责在相邻节点之间传输数据帧,主要功能包括成帧、差错控制、流量控制、介质访问控制等 | Ethernet、PPP、HDLC、SLIP;网桥、交换机 |
1 | 物理层 | 负责处理物理介质上的信号传输,定义了设备与物理介质之间的电气、机械、功能和规程特性,包括电缆、连接器、信号的传输与接收等 | RS-232、RJ45、光纤、同轴电缆;集线器、中继器 |
由于物理层我们考虑地比较少,所以有时候又把第一层和第二层看作一层,叫网络接口层,这也是有说法说TCP/IP四层模型的依据
下图是操作系统结构图和TCP/IP五层模型相对应的图
在网络传输时数据在每一层都要添加报头,以让该层知道这个数据可以在本层被解析
本层的整个数据叫做报文,报文=报头+有效载荷
发送数据时自上而下,也就是从应用层到链路层(硬件),由硬件发出 解析数据时自下而上,也就是从链路层(硬件)到应用层,由硬件接收
每个计算机上的网络模型一致,对应的层与层的协议是一致的,这也是保证我们能够正确解析报文的原因之一
封装:几乎任何层的协议,都要提供将报头和有效载荷分离的能力 分用:几乎任何层的协议,都要在报头中提供决定将自己的有效载荷交付给上层哪一个协议的能力
我们直接看图,对称分为两边,假设一个情境,左边用户1用着1号电脑(客户)给用着2号电脑的用户2(服务器)发了一个hello world,首先信息要到应用层,给上报头之后传到传输层,给上报头,以此类推到达链路层,以太网驱动程序(在网卡上)通过以太网的连接将数据发送到用户2(服务器)的网卡上,然后向上解析,通过报头找到对应的层,然后丢掉报头,最后解析出发出的内容
我们这里只是想演示出不同类型的局域网之间的跨网通信的可行性,彰显网络设计结构的强大
首先还是类似上面的,一个用户发送一个hello world,信息向下而行,发送到以太网当中,路由器连接在以太网中,通过以太网驱动程序将该信息捕捉,然后去掉以太网报头转移到IP层,再将有效载荷加上令牌环网报头通过令牌环驱动程序发送到令牌环网中(路由器只有第一层和第二层),然后被另一个用户的令牌环驱动程序接收并向上传递,最终传递到用户手中,这样就实现了不同用户跨网段的交流,以后所有局域之间的网络就算是不同的,我们通过路由器也是可以将用户发送的数据获取到,所以IP协议通过工作在IP层的路由器屏蔽了底层网络的差异化
MAC 地址是固化在网络设备硬件(如网卡)中,用于在数据链路层唯一标识网络设备的一组物理地址,在相同局域下MAC地址保持它的唯一性
以太网驱动程序发送数据的时候所带的紫色四角星报头,其实是一个结构体,实际上,几乎所有层的报头都是结构体,偶尔在轻量化的网络通信中报头的设计可能是一个类似int
的内置类型,这个结构体中有两个信息,一个是发送数据网卡的MAC地址,一个是将要接收数据网卡的MAC地址,数据在以太网中是共享的,但是通过这个报头就可以实现定向发送,只有字段相同的网卡才可以接收该数据