网络通信与TCP/IP五层模型

网络通信与TCP/IP五层模型

文章目录

一、网络通信

1.通信标识

1.1五元组

1.1.1IP地址

1.1.2端口号

1.1.3协议类型

1.2MAC地址

2.网络范围

2.1局广域网

2.2本地子网

网1主0

2.2.1子网掩码

2.2.2前缀长度

2.3默认网关

3.通信交接

3.1共地发接

3.2接力转发

4.网络设备

4.1网线、光纤、WiFi

4.2网卡

4.3交换机

4.4路由器

4.5防火墙

二、协议分层

1.各层作用

2.分层特点

3.行动轨迹

4.数据演化

5.TCP/IP五层模型

5.1物理层

5.1.1封装

5.1.1.1二进制帧转物理信号

5.1.2分用

5.1.2.1物理信号转二进制帧

5.2数据链路层

5.2.1协议

5.2.2数据包

5.2.3封装

5.2.3.1填装

5.2.4分用

5.2.4.1校验

5.3网络层

5.3.1协议

5.3.2数据包

5.3.3封装

5.3.3.1填装

5.3.3.2路由

5.3.3.3传参

5.3.3.4拆片

5.4传输层

5.4.1协议

5.4.2数据包

5.4.3封装

5.4.3.1建立传输

5.4.3.2填装

5.4.3.3TCP拆段

5.4.4分用

5.4.4.1校验

5.4.4.2照交

5.5应用层

5.5.1协议

5.5.2数据包

5.5.3封装

5.3.3.1填装

5.3.3.2传参


一、网络通信

1.通信标识

1.1五元组

源IP目的IP源端口目的端口协议类型 确定一次唯一的网络通信

唯一性
每个Socket对应连接一个唯一的五元组:
”new Socket(目的IP, 目的端口)、源IP-本机、源端口-操作系统空闲分配、创建TCP连接“ 是一次唯一通信

1.1.1IP地址

标识设备在网络中的唯一位置IPv4格式 由点分4个 8bit位的十进制数 组成


1.1.2端口号

区分应用,标识 应用单层占据的网络通信端点


1.1.3协议类型

标识载荷 由上层哪个协议遵守而成的数据包

一次单类:
在传输层 有无连接的传输方式 分隔单开在两类通信


1.2MAC地址

MAC地址是网络硬件的 唯一标识符


2.网络范围

2.1局广域网

局域网:单个路由器内部创建的网络

广域网:多个路由器连接组合的网络


2.2本地子网

IP能本地访问的本地子网的网络地址 = IPv4 & 网1主0

网1主0
2.2.1子网掩码

采用IPv4格式 整体的32位先网络前缀的连续1-对应划分IP的网络位后接口标识符的连续0-对应划分IP的主机位

2.2.2前缀长度

/网络位位数划分IP的网络位剩下的主机位


2.3默认网关

默认网关 访问的本地子网 重合叠在 IP设备的本地子网内,共地地发接设备IP,是用于帮转的接壤出口IP


3.通信交接

两个IP出机的本地子网重合互通 —> 直接通信

两个IP出机的本地子网没有重合 —> 网关转发

3.1共地发接

IP出机访问共地一发一接

3.2接力转发

IP设备 自访最广本地 地通信驻内网关访他的最广本地转发


4.网络设备

4.1网线、光纤、WiFi

物理层传输物理信号


4.2网卡

物理层+数据链路层转化信号

转化物理信号与二进制数据

10
高电平低电平
高频光低频光
高频电磁波低频电磁波

4.3交换机

物理层+数据链路层二层转发

物理层接收物理信号转化成帧 and 数据链路层 分用校验封装填装设置的目标MAC


4.4路由器

物理层+数据链路层+网络层三层转发

物理层 接收物理信号转化成帧 and 数据链路层 分用校验 and 网络层 分用不拆读取目的IP 路由下一跳IP 解析下一站MAC


4.5防火墙

传输层安全防护

按规则过滤上传的某源端口访问下传的某目的IP前往


二、协议分层

1.各层作用

应用层HTTP报文->贴说明书的货物
传输层端口号->单类货物间的进入门号;协议类型->顺丰/中通
网络层IP地址->发往的站点地址
数据链路层MAC地址->与快递员的交接地点
物理层物理信号->司机的运输传送

2.分层特点

任务多位单位轻捷
单位铺蚀,扔传交流单位互独

3.行动轨迹

数据包 = 头部 + 载荷,头部置理载荷,载荷装载现作数据



主数据流程并行辅助控制流程

4.数据演化

   网卡               反序列化
物理信号 <—> 二进制数据数据包参数
  转化                 序列化

数据包参数 序列化成 头部的二进制数据封装进 二进制数组

头部的二进制数据 反序列化成 数据包参数分用出 二进制数组

参数配,二进制数组还
参数装↓裹数据包               拆数据包参数卸
参数剩,二进制数组已


5.TCP/IP五层模型

5.1物理层

转化物理信号与二进制数据

5.1.1封装
5.1.1.1二进制帧转物理信号
  1. 网卡接收指针指向的数据链路层数据包的字节数组
  2. 拆成每字节8位的二进制比特流
  3. 01转化成能在介质中运送的电子/光/电磁波的物理信号
  4. 网线/光纤/WiFI的硬件后传输

5.1.2分用
5.1.2.1物理信号转二进制帧
  1. 网卡接收物理信号
  2. 解码还原成二进制帧

5.2数据链路层

局域网内前访设备、损坏检测

5.2.1协议

以太网有线传输、802.11无线传输


5.2.2数据包
帧 = 帧头 + 网络层数据包 + 帧尾
以太网帧头源+目的MAC地址、网络层IP/ARP协议类型
802.11帧头帧控制字段、持续时间、4个MAC地址、序号控制
网络层数据包IP包/ARP报文
帧尾校验和

5.2.3封装
5.2.3.1填装

按照以太网协议:

  1. 对以太网帧头填装传下来源MAC,目的MAC协议类型
  2. 对以太网帧尾填装校验和

5.2.4分用
5.2.4.1校验
  1. 校验帧尾的校验和确认数据有无传输损坏,校验和出错则上传网络层 查看载荷协议类型 如果是TCP就发起ARP重传请求
  2. 对比帧头的MAC地址 确认数据有无发对

5.3网络层

局域网内瞄选设备、网络诊断

5.3.1协议

IP标识主机、ARP解得MAC、ICMP网络诊断


5.3.2数据包
IP包 = IP包头 + 传输层数据包
IP包头版本、首部长度、源+目的IP、TTL生存时间、传输层TCP/UDP协议类型、校验和
传输层数据包TCP段/UDP报文
ARP报文 = ARP报头 + ARP数据体
ARP报头硬件类型、协议类型、硬件地址长度、协议地址长度、请求/响应操作类型
ARP数据体源+目的IP源+目的MAC地址

5.3.3封装
5.3.3.1填装

按照IP协议 对IP报头填装传下来源IP,目的IP、TTL、协议类型


5.3.3.2路由
  1. 按照IP协议 不拆地读取IP报头的目的IP
  2. 路由本地路由表匹配出下一跳IP
  3. 按照ARP协议 解析下一跳IP出目的MAC

5.3.3.3传参

解析出的目的MAC本机网卡的MAC为源MAC下传直到数据链路层


5.3.3.4拆片

MTU 限制传输层数据包作载荷的长度拆分IP分片


5.4传输层

设备里照选应用建立传输

5.4.1协议

TCP面向连接的可靠传输、UDP无连接的不可靠传输


5.4.2数据包
TCP段/UDP报 = 包头 + 应用层报文
TCP包头源+目的端口号、序列号、确认号、控制位、窗口大小、校验和
UDP包头源+目的端口号、报文总长度、校验和
应用层报文HTTP/HTTPS/FTP/MySQL协议报文

5.4.3封装
5.4.3.1建立传输
  • 调用SocketAPI接收应用层数据包 建立TCP有确认机制、有序、有连接、数据完整、速度慢可靠传输(文件传输、聊天、HTTP请求、数据库连接)
  • 调用DatagramSocketAPI接收应用层数据包 建立UDP无确认机制、无序、无连接、数据残缺、速度快不可靠传输(视频、语言、直播)

5.4.3.2填装

按照TCP协议 对TCP报头填装系统分配空闲端口的源端口下传的目的端口、序列号、确认号


5.4.3.3TCP拆段

TCP 限制应用层报文作载荷在MSS最大段长度内拆分TCP分段避免IP分片

UDP 一次接收完整应用层报文 付交给IP分片


5.4.4分用
5.4.4.1校验
  1. TCP保证可靠:
    下传参数指令 原路径反发源IP填本机目的IP填对方ACK确认报文 保证数据的可靠传输
  2. 序列号:
    检查序列号正确无数据丢失

5.4.4.2照交

根据目的端口 把载荷交给对应应用


5.5应用层

应用里处置数据

5.5.1协议
HTTP/HTTPS网页访问+接口调用
DNS解析域名
FTP文件传输
SMTP/POP3邮件发送+接收
MySQL协议数据库连接
应用内部协议构造结构化数据

5.5.2数据包

应用层报文 = 处置报头 + 结构化数据(载荷)

HTTP请求报文 = HTTP请求头(请求行+请求头部字段) + 空行分隔符 + HTTP请求体
HTTP请求行请求方法、请求URL、HTTP版本
HTTP请求体可选的表单、JSON、文件等业务数据
HTTP响应报文 = HTTP响应头(状态行+响应头部字段)+空行分隔符+HTTP响应体
HTTP状态行状态码、状态描述、HTTP版本
HTTP响应体必选的HTML页面、JSON、图片、视频等返回的业务数据

5.5.3封装
5.3.3.1填装
  1. 按照应用内部协议构造结构化数据 填装载荷
  2. 按照HTTP协议构造网页访问参数 填装报头

5.3.3.2传参
  1. 按照DNS协议解析域名目的IP操作系统配置的本机内网IP为源IP下传直到网络层
  2. 应用里输入目的端口下传直到传输层

Read more

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

摘要:本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求,帮助开发者真正实现OpenClaw从“能用”到“放心用”的跨越。 优质专栏欢迎订阅! 【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】【YOLOv11工业级实战】 【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】【数字孪生与仿真技术实战指南】 【AI工程化落地与YOLOv8/v9实战】【C#工业上位机高级应用:高并发通信+性能优化】 【Java生产级避坑指南:

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、实验基础说明 1.1、互斥体简介 1.2 本次实验设计思路 二、硬件原理分析(看过之前博客的可以忽略) 三、实验程序编写 3.1 互斥体 LED 驱动代码(mutex.c) 3.2.1、设备结构体定义(28-39

By Ne0inhk
Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 后端工程师扔给你一个 Swagger (OpenAPI) 文档地址,你会怎么做? 1. 对着文档,手写 Dart Model 类(容易写错字段类型)。 2. 手写 Retrofit/Dio 的 API 接口定义(容易拼错 URL)。 3. 当后端修改了字段名,你对着报错修半天。 这是重复劳动的地狱。 swagger_dart_code_generator 可以将 Swagger (JSON/YAML) 文件直接转换为高质量的 Dart 代码,包括: * Model 类:支持 json_serializable,带 fromJson/

By Ne0inhk
Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

文章目录 * 前言 * make/makefile * 文件的三个时间 * Linux第一个小程序-进度条 * 回车和换行 * 缓冲区 * 程序的代码展示 * git指令 * 关于gitee * Linux调试器-gdb使用 * 作业部分 前言 做 Linux 开发时,你是不是也遇到过这些 “卡脖子” 时刻?写 makefile 时,明明语法没错却报错,最后发现是依赖方法行没加 Tab;想提交代码到 gitee,记不清 git add/commit/push 的 “三板斧”,还得反复搜教程;用 gdb 调试程序,输了命令没反应,才想起编译时没加-g生成 debug 版本;甚至连写个进度条,都搞不懂\r和\n的区别,导致进度条乱跳…… 其实这些问题,

By Ne0inhk