OSI模型
OSI(开放系统互联)模型是由国际标准化组织(ISO)创建,目的是为了使计算机系统之间的通信标准化
也就是我们常说的OSI七层模型
网络主要作用于下四层:
- 传输层
- 网络层
- 数据链路层
- 物理层
层级 | 名称 | 协议 | 数据传输形式 | 功能 | 注意事项 |
---|---|---|---|---|---|
7 | 应用层(Application Layer) | HTTP, FTP, SMTP, DNS等 | 报文 | 为应用程序提供网络服务,如数据传输、编码、压缩等 | 与具体应用和用户需求相关,可能涉及数据格式、安全等问题 |
6 | 表示层(Presentation Layer) | MIME, XDR, ASN.1等 | 报文 | 数据格式转换、加密解密、压缩解压缩 | 现代网络体系结构中常与应用层合并,不单独实现 |
5 | 会话层(Session Layer) | ASAP, SSH, SSL等 | 报文 | 建立、管理和终止应用程序之间的会话,同步数据 | 现代网络体系结构中常与应用层合并,不单独实现 |
4 | 传输层(Transport Layer) | TCP, UDP, SCTP等 | 段(Segment)数据报(Datagram) | 提供端到端的可靠或不可靠数据传输,如流量控制、差错控制、多路复用等 | TCP提供可靠有连接服务,UDP提供不可靠无连接服务,选择依赖于应用需求 |
3 | 网络层(Network Layer) | IP, ICMP, IGMP, IPSec等 | 分组(Packet) | 提供点到点的数据包路由和转发,如逻辑编址、拥塞控制等 | IP是网络层的核心协议,提供尽最大努力的数据报传输服务 |
2 | 数据链路层(Data Link Layer) | Ethernet, PPP, HDLC, STP等 | 帧(Frame) | 提供相邻节点间的可靠数据传输,如成帧、差错检测、流量控制等 | 数据链路层分为LLC子层和MAC子层,其中MAC子层负责介质访问控制 |
1 | 物理层(Physical Layer) | WiFi、SONET/SDH等标准规范的物理层部分 | 电磁信号 | 定义物理接口、传输介质、信号编码等,实现比特流传输 | 物理层负责传输比特流,但不保证可靠性,上层协议需要处理差错和丢失 |
同一个网络协议可以作用在不同的层级
物理层
涉及到的概念:
- 位
- 数字信号
- 电磁信号
- 传输介质
物理层的作用
- 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输
- 接收数据链路层的比特流(数字信号),并将其转换为电磁信号(二进制数据,也称为模拟信号),然后通过介质(有线或无线)发送
- 物理层之间通过电磁信号进行通信,是不可靠的,因为存在比特差错
数字信号(数据链路层的信号)进过物理层一系列的编码、调制成为电磁信号,电磁信号经过传输介质(双绞线、同轴电缆等)传输到另一个物理层(物理层确认是发送发给它的信息)后,接收信息的物理层对此电磁信号解码为数字信号,再传输给这个物理层的数据链路层
物理层传输方式
- 单工:数据只能单向传输
- 半双工:数据可以双向传输,但不能同时进行
- 全双工:数据可以同时双向传输
编码方式:
数据链路层传下来比特流转化为物理层之间的电磁信号需要经过编码
编码方式的选择取决于传输介质、传输速率、距离、成本、可靠性等因素
物理层的编码方式可以组合,如以太网1000BASE-T同时使用4D-PAM5和TCC编码
- 不归零编码(NRZ, Non-Return-to-Zero)
- 特点:高电平表示1,低电平表示0,电平在比特持续期间保持不变
- 优点:简单易实现,频谱利用率高
- 缺点:直流分量大,易受干扰,时钟同步困难
- 适用介质:低速短距离传输,如RS-232C串口
- 曼彻斯特编码(Manchester Encoding)
- 特点:每个比特周期中,电平在中间跳变。跳变方向表示数据,正跳变表示0,负跳变表示1
- 优点:内置时钟同步,没有直流分量,抗干扰能力强
- 缺点:频谱利用率低,占用带宽大
- 适用介质:以太网10BASE-T(双绞线)
- 差分曼彻斯编码(Differential Manchester Encoding)
- 特点:在每个比特开始处发生跳变,比特中间的跳变表示数据。维持电平表示0,跳变电平表示1
- 优点:内置时钟同步,没有直流分量,抗干扰能力强
- 缺点:频谱利用率低,占用带宽大
- 适用介质:令牌环网(双绞线)
- 多电平编码(如PAM, QAM)
- 特点:使用多个电平或相位来表示数据,提高频谱利用率
- 优点:高速传输,抗衰减和失真
- 缺点:编码/解码电路复杂,对信噪比要求高
- 适用介质:ADSL(双绞线),Cable Modem(同轴电缆),无线通信
- 光编码(如RZ, NRZ, NRZI)
- 特点:使用光脉冲的有无或极性来表示数据
- 优点:高速远距离传输,抗电磁干扰
- 缺点:光电转换电路复杂,成本较高
- 用介质:光纤(如100BASE-FX,SONET/SDH)
物理层传输介质
- 双绞线
- 同轴电缆
- 光纤
- 无线信道
数据链路层
涉及到的概念:
- 分组
- 帧
- 数字信号
- 局域网
- MAC地址
数据链路层的作用
- 在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法
- 数据链路层用于在同一网络上的两台设备进行数据传输
- 数据链路层将网络层传下来的分组(Packet)封装成帧(Frame)并交给物理层进行传输。这些帧实际上就是一串由0和1组成的比特流,也就是数字信号(每个比特代表一个固定的时间间隔)
- 数据链路层会在封装数据帧时添加校验码,接收方凭此检测传输过程是否出现差错,保证数据可靠性,同时帧中还会有帧定界符,用于让接收方识别比特流中帧的起始位置和结束位置,还会添加MAC地址
层级 | 名称 | 协议 | 数据传输形式 | 功能 | 注意事项 |
---|---|---|---|---|---|
3 | 网络层(Network Layer) | IP, ICMP, IGMP, IPSec等 | 分组(Packet) | 提供点到点的数据包路由和转发,如逻辑编址、拥塞控制等 | IP是网络层的核心协议,提供尽最大努力的数据报传输服务 |
2 | 数据链路层(Data Link Layer) | Ethernet, PPP, HDLC, STP等 | 帧(Frame) | 提供相邻节点间的可靠数据传输,如成帧、差错检测、流量控制等 | 数据链路层分为LLC子层和MAC子层,其中MAC子层负责介质访问控制 |
1 | 物理层(Physical Layer) | WiFi、SONET/SDH等标准规范的物理层部分 | 电磁信号 | 定义物理接口、传输介质、信号编码等,实现比特流传输 | 物理层负责传输比特流,但不保证可靠性,上层协议需要处理差错和丢失 |
数据链路层接收来自网络层的分组(Packet),数据链路层在分组前面添加帧头(Header),在后面添加帧尾(Trailer),形成帧(帧头包含了同步信息、地址信息、类型信息等,帧尾通常包含差错校验码如CRC),数据链路层将帧序列化为比特流,形成数字信号,数据链路层将数字信号(比特流)传递给物理层
数据链路层帧结构
示例:以太网数据帧
- 帧头(Frame Header):包含帧同步码、源MAC地址、目的MAC地址、类型字段等信息
- 帧同步吗由前同步码帧真开始界定符(SFD)两部分组成,让接收方识别帧的开始位置并与发送方同步时钟
- 源MAC地址,发送帧网卡的物理地址,识别局域网内帧的发送方
- 目的MAC地址,接收方网卡的物理地址,识别局域网内帧的接收方
- 类型字段,让接收方数据链路层知道应该将数据字段中的数据递交给哪个上层协议进行处理
- 数据部分(Data):来自网络层的分组
- 帧尾(Frame Trailer):包含校验序列,用于接收方进行差错检测
- FCS字段,用于帧的差错检验
上述阐述中带来了一个重要的问题
数据帧如何在不同局域网内传输
MAC地址是数据链路层使用的地址,MAC地址只在同一局域网内是唯一的(不同局域网中可能存在相同的MAC地址),同一局域网内的两台主机的帧(由物理层转换–>发送–>转换)可以直接根据目的MAC地址发送到目的主机,
但是,当源主机与目的主机不在同一局域网内时,仅凭目的MAC地址无法将帧直接发送到目的主机,此时源主机会将帧发送到默认网关(路由器)的MAC地址(路由器收到帧后将帧上升到网络层,根据 IP 进行路由选择,然后重新封装帧发送到下一跳,这也就造成了没经过一个路由器,帧头的MAC地址都会改变),使得帧在不同的局域网内传输,
帧在 Internet 上的传输:
- Internet 由大量局域网通过路由器互联而成
- 帧在 Internet 上传输实际上是在一系列局域网之间跳跃
- 在同个局域网内,帧使用本局域网内的 源MAC地址 和 目的MAC地址
- 在不同局域网内,帧的目的MAC地址为下一跳路由器的MAC地址
不同数据链路层的协议,封装成的帧的结构有所不同,比如以下 5 种帧:
- 以太网帧(Ethernet Frame)
- 点对点协议帧(PPP Frame)
- HDLC帧(HDLC Frame)
- 帧中继帧(Frame Relay Frame)
- 令牌环帧(Token Ring Frame)
数据链路层相关设备
- 二层交换机
- 网卡(有线网卡、无线网卡)
数据链路层的重要协议
- Ethernet(以太网) - 规定以太网帧格式
- Token Ring(令牌桶) - 控制节点发送权,复杂度高,所以现在很少用
- PPP(点对点) - 点到点链路上进行数据封装和传输的协议
- HDLC(高级数据链路控制) - 面向比特的数据链路层协议,在同步串行链路上传输数据
- ATM(异步传输) - 面向连接,提供高速、低延时数据传输服务并可传输语音、视频等实时信息
网络层
网络层相关概念:
- 路由
- 分组
- IP协议
- IP地址
- 子网掩码
- IP数据包
网络层的作用
- 在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接,将数据设法从源端经过若干个中间节点传送到目的端(点到点),从而向传输层提供最基本的端到端的数据传输服务
- 接收传输层的数据段,并将其封装在 IP 数据包中(网络层封装数据时地址来自传输层,数据链路层封装数据的地址需要它自己取获取)
- 将每个局域网互相连接,形成一个全球(大型)的通信网络,网络层允许不同类型的网络(如以太网、WiFi、蜂窝网络等)互相连接和通信。它提供了一种统一的方式来寻址和路由(路由相当于网络中的地图)数据,使得数据能够在异构网络之间无缝传输
- 核心功能是为数据包选择从源到目的地址的最佳路径
(数据链路层可以让数据在同一局域网内两台相连的主机通信,网络层就是想办法让不同局域网的主机之间通信,可以让数据在不同主机传输交换时负责做路径选择)
网络层的数据包
在网络层中,数据包(Packet)也常被称为分组(Datagram)
特点:
- 独立性,每个分组都是独立的,包含了传输所需的源地址、目的地址等完整信息
- 无连接,分组在网络连接中是无连接的,每个分组独立选择路由,不同分组可能经过不同的路径到达目的地
- 不可靠,网络层不保证分组的可靠传输,分组可能在传输过程中丢失、重复或失序
网络层的数据传输
- 端到端的数据传输
- 网络互连
- 路由选择(最重要的一条)
- 逻辑寻址(IP等)
- 异构网络通信
- 服务质量
- 不可靠性
生活上的事例:
网络层的数据传输比作邮政系统的信件投递:
- 端到端的数据传输:当你在北京写了一封信,寄给在纽约的朋友,邮政系统负责将这封信从北京送到纽约,你和你的朋友只需要关注信件的内容,而不用关心信件是如何跨越大洋的。这类似于网络层提供端到端的逻辑通信
- 网络互连:信件从北京到纽约,可能需要经过多个不同的邮政网络,如中国邮政、国际邮政、美国邮政等。这些不同的邮政网络互相连接,共同完成信件的全程投递,类似于网络层将多个异构网络连接起来
- 路由选择:邮政系统会根据信件的目的地址,选择最优的投递路线。比如从北京寄信到纽约,可以走北京-上海-旧金山-纽约的路线,也可以走北京-广州-洛杉矶-纽约的路线。邮政系统会综合考虑距离、时间、成本等因素,选择最佳路线。这类似于网络层的路由选择功能
- 逻辑寻址:每封信件都有源地址和目的地址,用于标识寄信人和收信人。这些地址与具体的物理位置无关,即使寄信人或收信人搬家了,只要更新了地址,邮政系统就能正确投递。这类似于网络层使用IP地址等逻辑地址,与物理地址分离
- 异构网络互通:中国邮政和美国邮政可能使用不同的投递标准和技术,但通过国际邮政的协调,它们能够相互交换和转发信件。这类似于网络层实现不同网络协议之间的互通
- 服务质量:邮政系统提供了不同级别的服务,如普通邮件、挂号信、EMS特快专递等,以满足用户对时间、可靠性等方面的不同需求。这类似于网络层支持差异化的服务质量
- 不可靠性:邮政系统并不能保证每一封信都能按时送达,信件有可能丢失、延误或损坏。这一点类似于网络层服务的不可靠性
IP地址的表示与分类
IP协议属于OSI参考模型的第三层(网络层)协议,IP协议下的地址也被称为 IP地址 或 三层寻址,依靠IP地址实现的寻址叫三层寻址
IP地址与三层寻址
为什么需要IP地址?
MAC地址在一个小型局域网内很好用,但是,MAC地址受网卡影响,当一个用户更换网卡时,其他主机想通过MAC地址与这个用户通信就必须重新确定这个用户的MAC地址,如果用户规模继续扩大,通信的难度将大大增加,
MAC地址只在同一局域网内是唯一的,不同局域网中可能存在相同的MAC地址。当数据包离开本地网段时,MAC地址会失去意义
为了实现跨局域网通信,我们就需要使用逻辑的、可按需规划的地址
IP协议
- 提供一种层次化、与硬件无关的寻址方法,提供在复杂网络下的路由功能
- 支持ICP/IP协议的网卡可以配置IP地址,比如我们日常使用的PC机
IP地址的作用
- 类似于邮编和门牌号的作用的组合
- 邮编提示包裹的目的地,如城市、社区、街道
- 门牌号提示包裹属于这个街区的哪户人家
IP地址的组成
- 网络ID(邮编):指明这个数据包要去哪个网络
- 主机ID(门牌号):指明这个数据包去往该网络下的哪个主机
IP地址的表示
- 二进制 32 位,每 8 位一分
- 点分十进制
- 十六进制
IP地址的分类
IP地址可以分为A、B、C、D四类
( 1 字节 8 位)
IP地址实际上是二进制数据,此处以十进制数表示
IP地址由网络位与主机位组成
A类地址
- 第一个字节的二进制数以0开头,即第一个字节的取值范围为1-126(0和127被保留)。
- 网络号占一个字节,主机号占三个字节。
- 默认子网掩码为255.0.0.0。
- 可用的IP地址范围:1.0.0.1 ~ 126.255.255.254。
用途:大型网络,如大型企业、政府机构
示例:10.0.0.1,其中10为网络号,0.0.1为主机号。
B类地址
- 第一个字节的二进制数以10开头,即第一个字节的取值范围为128-191。
- 网络号占两个字节,主机号占两个字节。
- 默认子网掩码为255.255.0.0。
- 可用的IP地址范围:128.0.0.1 ~ 191.255.255.254。
用途:中等规模网络,如中型企业、学校等
示例:172.16.0.1,其中172.16为网络号,0.1为主机号。
C类地址
- 第一个字节的二进制数以110开头,即第一个字节的取值范围为192-223。
- 网络号占三个字节,主机号占一个字节。
- 默认子网掩码为255.255.255.0。
- 可用的IP地址范围:192.0.0.1 ~ 223.255.255.254。
用途:小型网络,如家庭、小型办公室
示例:192.168.1.1,其中192.168.1为网络号,1为主机号。
D类地址
- 第一个字节的二进制数以1110开头,即第一个字节的取值范围为224-239。
- D类地址用于多播(Multicast),不分网络号和主机号。
用途:组播,如视频会议、在线直播
示例:224.0.0.1,这是一个保留的多播地址,用于网络设备发现协议(如路由器发现)。
IP地址分类对比
实际可以使用的IP地址
- TCP/IP协议规定,主机位全取0的IP地址表示网络本身(主机所连接到的网络地址),主机位全取1的IP地址表示该网咯的IP地址
- 网络地址和广播地址无法配置到网络适配器上,因此每个网络实际的主机IP地址(可以配置到网络适配器上)需要减去 2
特别的IP地址
除了上述四类地址外,还有一些特别的IP地址:
- 127.0.0.1 - 本地回环地址(Loopback Address),指本机(也就是常用的默认
localhost
,例如启动本地Tomcat应用后可访问http://127.0.0.1
来查看Web应用) - 0.0.0.0 - 未指定地址,可以表示任意地址
- 255.255.255.255 - 广播地址,用于向同一网络中的所有主机发送数据包
- 169.254.*.* - 如果主机使用 DHCP 获取地址,那么当 DHCP 服务端发生故障或响应请求超时时,Windows系统的主机会为主机自动分配这个地址,这个地址可以用于故障排除
什么是DHCP?
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种网络管理协议,用于自动为加入网络的设备分配IP地址和其他网络配置参数(简化网络管理和配置)。它工作在应用层,使用UDP协议传输数据,端口号为67(服务器)和68(客户端)
私有地址:
为了缓解IP地址资源趋近枯竭带来的问题,A、B、C 3类地址中各取出一部分地址用作私有地址。私有地址可以重复使用但是只能在组织内部工作,且不能直接与国际互连网IP地址进行通信
私有地址范围内的IP不能直接用于 Internet 通信,一般用于内部网络通信,如果内部地址想访问 Internet ,则需要通过 NAT(网络地址转换)将私有地址转换为公有地址
类别 | 私有地址范围 |
---|---|
A类 | 10.0.0.0 ~ 10.255.255.255 |
B类 | 172.16.0.0 ~ 172.31.255.255 |
C类 | 192.168.0.0 ~ 192.168.255.255 |
D类 | 无 |
IP数据包
IP数据包也可以称为IP数据报
- IP数据报是网络层(特指IP协议)传输的数据单元,是分组的一种具体类型。它遵循IP协议的格式和传输机制,由IP头部和数据部分组成
- 在IP网络中,上层协议(如TCP、UDP)的数据被封装在IP数据报中进行传输。IP数据报通过网络在源主机和目标主机之间独立传输,可以经过不同的路由器
- IP数据报在传输过程中,每经过一个路由器,头部的生存时间(TTL)字段就减1。当TTL减为0时,数据报被丢弃,防止数据报在网络中无限循环
- 如果IP数据报过大,超过了网络的最大传输单元(MTU),它会被分片(Fragmentation)成多个更小的IP数据报进行传输。这些分片在目标主机处重新组装成原始的IP数据报
- 应用程序通过调用API(如socket)发送数据。
- 传输层(如TCP、UDP)将数据分段,添加端口号等控制信息,形成传输层的数据单元(如TCP段、UDP数据报)。
- 网络层接收传输层的数据,添加IP头部,形成IP数据包。
- 数据链路层将IP数据包封装成帧,添加物理地址(如MAC地址),通过物理网络发送。
IP数据报的结构
(实在太难画了,交给Claude了)
湖科大计网对这一部分讲的特别好
4.7 IPv4数据报的首部格式_哔哩哔哩_bilibili
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL | DSCP |ECN| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| Payload |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP数据报由两部分组成:
- 头部(Header)
- 负载(Payload)
头部部分组成
字段名称 | 字段长度(bits) | 说明 |
---|---|---|
Version | 4 | IP协议的版本,对于IPv4,该值为4。 |
IHL (Internet Header Length) | 4 | 头部长度,以4字节为单位。 |
DSCP (Differentiated Services Code Point) | 6 | 差分服务代码点,用于服务质量控制。 |
ECN (Explicit Congestion Notification) | 2 | 显式拥塞通知,用于网络拥塞控制。 |
Total Length | 16 | IP数据报的总长度,包括头部和负载。 |
Identification | 16 | 用于标识分片的数据报。 |
Flags | 3 | 控制分片,如是否允许分片、是否有更多分片等。 |
Fragment Offset | 13 | 指示分片在原始数据报中的位置。 |
Time to Live (TTL) | 8 | 数据报在网络中的最大跳数。 |
Protocol | 8 | 指示数据报携带的上层协议,如TCP(6)、UDP(17)等。 |
Header Checksum | 16 | 用于检验IP头部的完整性。 |
Source Address | 32 | 发送方的IP地址。 |
Destination Address | 32 | 接收方的IP地址。 |
Options | 可变长度 | 附加的可选信息,如源路由、时间戳等。长度必须是4字节的整数倍,不够填充0。 |
负载部分组成
来自上层协(如TCP、UDP)的数据
IPv4与IPv6两者的区别
IPv4(第四版互连网协议)头部由固定的20字节和可选的扩展部分组成,而IPv6(第六版互联网协议)头部则有不同的结构
IPv4与IPv6:
IPv4(Internet Protocol version 4)是第四版互联网协议,也是当前Internet上广泛使用的版本。它使用32位(4字节)地址空间,可以提供约43亿个唯一地址。IPv4地址通常以点分十进制表示,如192.168.0.1。
IPv6(Internet Protocol version 6)是最新版本的互联网协议,旨在解决IPv4地址枯竭的问题。它使用128位(16字节)地址空间,可以提供足够数量的唯一地址,满足未来Internet的发展需求。IPv6地址通常以冒号十六进制表示,如2001:0db8:85a3:0000:0000:8a2e:0370:7334
特性 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32位(4字节) | 128位(16字节) |
地址空间 | 约43亿个唯一地址 | 约3.4×10^38 个唯一地址,相当于每平方米地球表面有2^52个地址 |
地址表示 | 点分十进制,如192.168.0.1 | 冒号十六进制,如2001:0db8:85a3:0000:0000:8a2e:0370:7334 |
头部长度 | 20字节固定长度,最大60字节 | 40字节固定长度 |
头部校验和 | 有头部校验和字段 | 移除头部校验和字段,以提高处理效率 |
服务质量(QoS) | 使用服务类型(TOS)字段 | 使用流标签(Flow Label)和通信类(Traffic Class)字段 |
安全性 | 需要使用额外的安全协议,如IPsec | 支持内置的身份验证和隐私功能 |
地址配置 | 需要手动配置或使用DHCP | 支持无状态自动配置(SLAAC),简化配置过程 |
分片 | 允许在传输过程中对数据包进行分片 | 只允许在源主机上进行分片,简化了路由器的处理 |
广播 | 支持广播地址 | 取消广播,使用组播(Multicast)替代 |
网络层相关设备/应用
- 三层交换机
- 防火墙(一套系统)
- 路由器
网络层的重要协议
- IP
- ICMP - 用于传输控制和错误信息,以支持IP协议的运行
- IPsec - IPsec是一组协议,用于为IP通信提供安全服务,如数据加密、身份验证和完整性保护
- ARP(地址解析协议) - 将IP地址解析为对应的MAC地址,ARP协议通常在局域网内工作,不能跨网段使用
- Netware IPX/SPX
- OSPF - 用于在IP网络中交换路由信息,使用Dijkstra算法计算最短路径,并支持负载均衡和快速收敛
传输层
涉及到的概念
- 报文
- TCP
- UDP
传输层的作用
- 向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输,同时向高层屏蔽下层数据通信的细节,即向用户透明地传送报文
- 它为应用层提供了端到端的通信服务,实现了数据在主机间的可靠或不可靠传输
- 传输层允许多个应用程序同时使用网络,通过端口号实现数据的 复用 和 分用 。复用是指将多个应用程序的数据复用到一个传输层连接;分用是指将传输层接收到的数据分发给相应的应用程序
- 传输层会进行流量控制,发送方发送数据速率过快会导致接收方的缓存区溢出(前提接收方全部接收到此数据),为解决此问题,通过接收方反馈发送方的机制,控制发送方的发送速率(接收方会告诉发送方不要发这么快),常用流量控制机制有滑动窗口协议
TCP协议
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接、可靠、基于字节流的、Internet上使用最广泛的传输层协议之一,为应用层提供可靠的端到端通信服务
面向连接:
在 TCP 传输数据之前,需要在源主机和目的主机之间建立一个虚拟的连接。这个虚拟连接是全双工的
可靠:
TCP 通过以下机制确保数据的可靠传输
数据分段:TCP将应用层数据划分为合适大小的数据段进行传输。
序号:TCP为每个数据段分配一个唯一的序号,以确保数据的有序传输和重组。
确认:接收方接收到数据段后,向发送方发送确认(ACK),告知已成功接收数据(TCP的第三次握手)
重传:如果发送方在一定时间内没有收到确认,会重新发送数据段,确保数据的可靠传输。
校验和:TCP使用校验和来检测数据在传输过程中是否损坏,如果检测到错误,会请求重传。
流量控制(避免拥塞的措施):
TCP使用滑动窗口机制进行流量控制,防止发送方发送数据过快,导致接收方缓存溢出。接收方通过通告自己的窗口大小(即可接收的数据量),来控制发送方的发送速率
拥塞控制(如果出现了拥塞):
TCP使用拥塞控制机制,防止网络拥塞。当网络拥塞时,TCP会减小发送窗口的大小,降低发送速率;当网络恢复正常时,TCP会逐步增大发送窗口的大小,提高发送速率
字节流:
TCP将应用层数据看作一个连续的字节流,不关心数据的具体格式和边界。TCP负责将字节流分段、传输和重组,屏蔽了下层网络的细节
建立TCP连接
三报文握手建立TCP连接
三次握手的目的是同步客户端和服务器的序列号(Sequence Number)和确认号(Acknowledgment Number),并交换 TCP 窗口大小信息,为后续的数据传输做准备(TCP可靠的基础)
- TCP客户端向TCP服务器发送TCP连接请求
- TCP服务器收到TCP客户端发送的TCP连接请求后向TCP客户端发送TCP连接确认请求,并进入同步已接收状态
- TCP客户端收到TCP服务器的连接确认请求后,再向TCP服务器发送一个TCP连接确认请求的确认请求,并进入连接以建立状态
- TCP服务器收到TCP客户端的TCP连接确认请求的确认请求后也进入连接已建立状态
(TCP服务器与TCP客户端共计发送 3 次请求)
建立好TCP连接后就可以进行可靠的数据传输了
建立TCP连接的三次请求一次都不能少,不然必定会出现服务器资源的浪费
同步序列号和确认号:
- 三次握手允许客户端和服务器交换初始序列号(ISN),并确保双方都知道对方的初始序列号。
- 如果只有两次握手,客户端发送的第一个 SYN 报文可能会丢失,服务器就无法获知客户端的初始序列号,后续的数据传输就无法正常进行。
避免历史连接的混淆:
- 如果只有两次握手,可能会出现这样的情况:客户端发送的 SYN 报文在网络中延迟了很长时间,当它最终到达服务器时,服务器可能已经关闭了原来的连接,并重新打开了一个新的连接。
- 此时,如果服务器直接发送 SYN-ACK 报文,客户端就无法区分这个响应是针对原来的连接还是新的连接,导致连接的混淆。
- 三次握手中的第三次握手(客户端发送 ACK 报文)可以避免这种情况,因为客户端发送的 ACK 报文表明它已经收到了服务器对新连接的确认。
防止资源浪费:
- 如果只有两次握手,恶意的客户端可以不断发送 SYN 报文,但是不响应服务器的 SYN-ACK 报文,导致服务器为每个连接请求分配资源,最终耗尽服务器的资源。
- 三次握手中的第三次握手(客户端发送 ACK 报文)表明客户端确实有能力接收服务器的响应,从而避免了服务器资源的浪费。
可靠性保证:
- 三次握手可以确保客户端和服务器都有发送和接收数据的能力,为后续的可靠数据传输奠定了基础。
- 如果只有两次握手,无法确认客户端是否具有接收数据的能力,可能会导致数据传输的不可靠。
释放TCP连接
四报文挥手释放TCP连接
- seq 报文序列号
- ack 确认号
- FIN 关闭请求连接的报文
客户端发送FIN报文,表示数据发送完毕,请求关闭连接,seq=x。
服务器收到FIN报文后,发送ACK确认,ack=x+1。此时客户端到服务器方向的连接关闭。
服务器继续发送之前未发完的数据,数据发送完毕后,服务器发送FIN报文,请求关闭连接,seq=y。
客户端收到服务器的FIN报文后,发送ACK确认,ack=y+1。至此,服务器到客户端方向的连接也关闭,整个TCP连接关闭。
释放TCP连接的四次次请求一次都不能少,不然必定会出现服务器资源的浪费
TCP的应用场景
- HTTP(万维网)
- FTP(文件传输)
- SMTP(电子邮件)
HTTP 与 HTTPS 的区别
区别项 | HTTP | HTTPS |
---|---|---|
安全性 | 明文传输,数据容易被窃听、篡改和冒充 | 使用加密技术(如TLS或SSL)对数据进行加密,确保数据在网络中的安全传输,防止窃听、篡改和冒充 |
端口号 | 默认使用端口号80 | 默认使用端口号443 |
URL前缀 | 以"http://“开头,如"http://www.example.com” | 以"https://“开头,如"https://www.example.com” |
身份验证 | 不提供身份验证机制,无法验证通信方的身份 | 使用数字证书进行身份验证,确保通信方的身份真实可信 |
SEO影响 | 搜索引擎优先索引和排名HTTPS网站,认为HTTPS网站更安全可信 | 使用HTTPS可以提高网站的搜索引擎排名和可信度 |
性能影响 | 性能较高,无需加密和解密的开销 | 由于加密和解密的开销,性能略低于HTTP;但是现代计算机和网络设备的性能提升,以及HTTPS优化技术的应用,使得HTTPS的性能影响越来越小 |
数据完整性 | 无法保证数据在传输过程中不被篡改 | 通过加密和数字签名,可以检测并防止数据在传输过程中被篡改 |
隐私保护 | 数据在网络中以明文形式传输,容易被窃听和泄露用户隐私 | 通过加密技术,保护数据在网络中的隐私,防止用户隐私被窃听和泄露 |
成本 | 无需购买和维护数字证书,成本较低 | 需要购买和维护数字证书,成本较高 |
应用场景 | 适用于对安全性要求不高的Web应用,如普通网站、博客等 | 适用于对安全性要求较高的Web应用,如电子商务、在线支付、社交网络等 |
UDP协议
UDP(User Datagram Protocol,用户数据报协议)是一种传输层协议,与TCP协议并列在IP协议之上
UDP协议传输数据的特点
-
无连接:因为使用UDP协议不需要像TCP那样三次握手、四次挥手释放连接
-
无拥塞控制:流量控制:发送端的发送速率不受接收端的接收能力控制,容易造成网络拥塞
-
首部开销小:UDP的首部开销小,只有8个字节,相比TCP的20个字节要少得多
UDP的适用场景
实时性要求高,可靠性要求相对较低的场景(UDP很简单高效)
- 视频会议
- 在线游戏
- DNS
传输层的重要协议
- TCP - TCP是一种面向连接、可靠、基于字节流的传输协议。它提供了可靠的数据传输服务,具有流量控制、拥塞控制、错误检测和纠正等功能,广泛用于对可靠性要求高的应用,如HTTP、FTP、SMTP等
- UDP - UDP是一种无连接、不可靠、基于数据报的传输协议。它提供了简单、高效的数据传输服务,但不保证数据的可靠性、有序性和流量控制。UDP适用于对时延敏感但对可靠性要求不高的应用,如DNS、SNMP、RTP等
- SSL/TLS - 提供安全的通信通道,也提供了一些会话层和表示层的功能
会话层
涉及到的概念:
- 会话管理
- 令牌管理
会话层的作用
- 组织和协调两个会话进程之间的通信 ,并对数据交换进行管理
- 承上启下,会话层为 表示层 提供服务访问点(Session Service Access Point, SSAP),为 传输层 提供服务访问点(Transport Service Access Point, TSAP)
- 会话层允许用户在两个或多个应用程序之间建立会话
- 提供了与传输层之间的接口,可以选择适当的传输协议(如TCP或UDP),并设置传输参数
- 会话层提供令牌管理服务,用于防止两个实体同时进行关键操作。令牌是一种临界资源,只有拥有令牌的实体才能进行某些操作
会话层的重要协议
- RPC - 远程过程调用,允许一台计算机上的程序调用另一台计算机上的子程序,应用程序服务拆分,一个服务调用另一个服务的接口
- NFS - 网络文件系统,允许一台计算机访问另一台计算机上的文件(这个和 Linux 中的scp不一样,scp命令是基于SSH协议来完成数据安全传输,SSH协议位于应用层)
表示层
涉及到的概念:
- 数据格式转换
- 数据加密
表示层的作用
- 处用户信息的表示问题,如编码、数据格式转换和加密解密等,确保来自应用层的数据能够被正确地传输和解释
表示层的协议
- XDR - 数据序列化格式,用于在不同的计算机体系结构之间交换数据
- MIME - 一种标准,用于在Internet上传输非ASCII数据,特别是在电子邮件
应用层
涉及到的概念:
- 网络服务
- 应用程序
直接接触的一层,应该是我们最熟悉的一层,应用层可以使用许多常见协议,基本其他 OSI 层级的协议应用层都可以使用(前面所有的步骤都可以理解为是为应用层服务)
应用层的作用
- 直接向用户提供网络服务,完成用户希望在网络上完成的各种工作
- 就是我们常见的应用程序
应用层中的重要协议
- URL、URN - 用于定位和寻址网络资源
- DNS - 将容易记忆的域名(如www.example.com)转换为IP地址(如93.184.216.34),这个过程称为域名解析,DNS协议使用UDP或TCP协议(传输层)来传输数据
- HTTP - 用于Web浏览器和服务器之间的通信
- FTP - 用于Web浏览器和服务器之间的通信
- SMTP - 用于发送电子邮件
- POP3 - 用于接收电子邮件
- SSH - 用于安全的远程登录和其他网络服务
- DHCP - 用于动态分配IP地址
- NTP - 用于在Internet上同步计算机的时钟
还有其他超多重要协议,随之时间的推进,应用层的协议会越来越多
OSI 模型在生活中事例
比如写一封信
- 应用层:写信的人决定写一封信,就像应用程序决定发送数据。
- 表示层:写信人选择使用什么语言(比如中文),就像数据选择使用什么格式编码(比如ASCII)。
- 会话层:写信人写上称呼"亲爱的xxx",就像建立通信会话。
- 传输层:信封上写上收信人的姓名,就像数据传输给特定端口。
- 网络层:信封上写上收信人的地址,就像数据包写入目的IP地址。
- 数据链路层:信封盖上邮戳,表明来源,就像数据帧写入MAC地址。
- 物理层:把信件投递到邮筒,实现物理传输,就像数据在物理介质中传输。
当收信人收到信时,会按相反的顺序处理:
- 物理层:从邮筒取出信件
- 数据链路层:确认邮戳来源
- 网络层:确认收信地址正确
- 传输层:确认收信人姓名正确
- 会话层:阅读信件开头的称呼
- 表示层:阅读信的语言内容
- 应用层:理解信件内容
比如点一单外卖
- 应用层:你决定在手机外卖App上订一份毛血旺,就像应用程序准备发送订单数据。
- 表示层:外卖App将你的订单转换为标准格式如JSON,就像数据选择统一的编码格式。
- 会话层:外卖App与外卖平台服务器建立会话,就像在通信前先打招呼。
- 传输层:订单数据被分割成小段,并打上标记,就像写上收货人电话,以便餐厅接收。
- 网络层:订单数据段被打包,写上外卖平台服务器的IP地址,就像写上收货地址。
- 数据链路层:数据包被封装成帧,加上手机的物理地址,就像订单上盖上发货的邮戳。
- 物理层:数据帧通过无线电波发送到基站,就像骑手取走订单。
当外卖平台服务器收到订单,再通过互联网发送到餐厅,餐厅收到订单后按以下顺序处理:
- 物理层:餐厅电脑接收到数据帧
- 数据链路层:确认数据帧来源无误
- 网络层:确认IP地址是外卖平台没错
- 传输层:确认订单完整,来自正确用户
- 会话层:记录与用户的订单会话
- 表示层:将JSON数据转换为可读的订单信息
- 应用层:餐厅员工根据订单信息制作毛血旺
比如从银行汇款
- 应用层:你在银行APP上发起一笔汇款,就像应用程序发起一个数据传输请求。
- 表示层:银行APP将汇款信息转换为标准格式如XML,就像数据选择统一的编码。
- 会话层:银行APP与银行服务器建立安全连接,就像在传输前先确认身份。
- 传输层:汇款数据被分割成小段,并打上序号,就像在信封上写上回执地址。
- 网络层:数据段被打包,写上银行服务器的IP地址,就像在信封上写收款行地址。
- 数据链路层:数据包被封装成帧,加上手机网卡的MAC地址,就像盖上邮戳。
- 物理层:数据帧通过WiFi或蜂窝网发送,就像信件被投递到邮筒。
当银行服务器收到汇款请求,会按以下顺序处理:
- 物理层:服务器网卡接收到数据帧
- 数据链路层:确认数据帧来源真实可靠
- 网络层:确认IP地址是该银行服务器无误
- 传输层:按序号重组汇款数据,确保完整无遗漏
- 会话层:验证与用户的安全连接,保证数据不被窃取
- 表示层:将XML数据转换为可处理的汇款信息
- 应用层:银行核心系统处理汇款,修改账户余额
OSI七层模型及各层功能概述_osi参考模型分为哪几层?各层的功能是什么?-优快云博客
阿里云数据中心IT初级运维工程师认证培训课程_学习资源库_阿里云培训中心-阿里云 (aliyun.com)