网络核心|OSI七层、TCP/IP五层模型,封装和分用详解

网络核心|OSI七层、TCP/IP五层模型,封装和分用详解

标签:#计算机网络 #OSI七层 #TCPIP五层 #封装分用 #网络分层

上一篇我们了解网络发展,IP、端口、五元组、协议的基础概念。本篇聚焦网络协议分层,这是计算机网络最核心的思想。

一、什么是协议分层?为什么要分层?

复杂的网络通信,如果全部做成一大套规则,代码会无比庞大,修改一个功能,可能牵动全部逻辑。于是人们想到分层设计

类比打电话的例子:分成两层------语言层、通信设备层。

  • 两个人说汉语沟通(语言层),底层设备可以换成座机、对讲机,上层语言逻辑不用改动。
  • 底层设备不变,两个人换成说英语,底层通信硬件也不用改动。

分层的核心好处,和面向接口编程思想一模一样:

  1. 层与层之间只定义接口规范,下层对上层隐藏内部实现细节;
  2. 上层只调用下层提供的服务,不用关心下层怎么实现;
  3. 某一层技术升级替换,其他层不受影响,便于维护、扩展。

二、OSI七层参考模型

OSI全称开放系统互连模型,它是一套理论规范,没有真正落地实现,但是是所有网络的理论框架。

分层 名称 核心功能
7 应用层 针对应用的协议:邮件、文件传输、远程登录
6 表示层 数据格式转换,做编解码、加密解密
5 会话层 建立、管理、断开通信会话连接
4 传输层 两台主机之间进程的数据传输,保障可靠性
3 网络层 IP地址管理,路由选择,决定数据走哪条路
2 数据链路层 在相邻设备之间传输帧,差错校验
1 物理层 传输0/1比特流;网线、光纤、电信号硬件规格

OSI七层模型过于复杂,现实网络没有直接使用,实际工程使用TCP/IP五层模型。

三、TCP/IP五层模型(工程实际使用)

TCP/IP协议簇,分为五层,很多教材把物理层去掉,称为TCP/IP四层模型。

分层 核心作用 典型协议 典型设备
应用层 应用程序之间交互;网络编程主要就是写这一层 HTTP、HTTPS、FTP、SMTP、SSH 主机(软件层面)
传输层 端到端进程通信,可靠/不可靠传输 TCP、UDP 操作系统内核
网络层 IP寻址,路由选路 IP、ICMP、ARP 路由器(工作在网络层)
数据链路层 相邻设备传输帧,帧校验 以太网协议 传统二层交换机
物理层 传输比特流,网线、光纤、电磁波 硬件电气规范 集线器Hub

设备工作在哪一层(传统设备)

  1. 主机:实现全部五层(内核实现传输层到物理层,应用程序实现应用层)
  2. 路由器:网络层、链路层、物理层(下三层)
  3. 交换机(二层):数据链路层 + 物理层(下两层)
  4. 集线器Hub:只工作在物理层

注意:现代有三层交换机、四层路由器,已经突破传统分层,面试一般考察传统设备。

四、数据包的一生:封装与分用

数据包每经过一层,都要做处理:发送端封装,接收端分用(解封装)

1. 封装 Encapsulation(发送主机,从上到下)

应用程序生成原始用户数据,交给应用层;

每往下传递一层,当前层在数据前面加上自己的头部Header(部分层还有尾部)

各层数据包名字:

  • 传输层:TCP段(segment)
  • 网络层:IP数据报(datagram)
  • 数据链路层:帧(frame)

流程简单梳理:

用户数据 →(加应用层头部)→(加TCP头部)TCP段 →(加IP头部)IP数据报 →(加以太网头部+尾部)以太网帧 → 变成比特流,通过网线发出

2. 分用(解封装,接收主机,从下往上)

数据包到达目标主机,从物理层往上传递:

每一层,剥掉属于本层的头部,读取头部信息,根据头部记录的上层协议类型,把剩下的数据交付给上一层。

  • 以太网链路层:根据帧头部的帧类型,交给IP/ARP等上层;
  • IP层:根据IP头部协议字段,交给TCP、UDP、ICMP;
  • TCP/UDP层:根据端口号,把数据交给主机上对应的应用进程。

跨网段通信场景:数据包会经过路由器。路由器只会处理到网络层,剥掉链路层头部,重新封装新链路层头部转发,不会改动传输层、应用层内容。

五、总结

  1. 分层是网络的灵魂:解耦,方便维护迭代;OSI七层是理论,TCP/IP五层是现实工程实现。
  2. 记住设备分层:路由器工作网络层,二层交换机链路层,集线器物理层。
  3. 封装:发送方自上而下每层加头部;分用:接收方自下而上剥头部,分发数据给上层。

理解分层、封装分用之后,再去学习TCP协议三次握手、四次挥手,就不会觉得抽象难懂。后续博客,我们继续拆解传输层TCP与UDP。

相关推荐
llilian_162 小时前
标准时间间隔发生器应用解决方案 脉冲发生器 时间测量仪
大数据·网络·人工智能·功能测试·单片机·嵌入式硬件·51单片机
AKA__Zas2 小时前
网络速通之网络通信
网络
ao-weilai2 小时前
Linux网络编程:网络知识基础
linux·网络·php
浅念-3 小时前
C++ Protobuf 入门实战:基于通讯录项目吃透proto3语法与序列化
linux·服务器·网络·c++·protobuf·proto·proto3
2401_868534783 小时前
网络环境规划核心考点全梳理
网络·设计模式
M158227690553 小时前
ModbusTCP 转 Profinet 网关:上位机控制 PN 伺服方案
服务器·网络·tcp/ip
宵时待雨3 小时前
linux笔记归纳18:传输层协议TCP
linux·网络·笔记·网络协议·tcp/ip
疯狂打码的少年4 小时前
【计算机网络】UDP协议与TCP/UDP对比(面向连接vs无连接)
笔记·tcp/ip·计算机网络·udp