[ 计算机网络 ] 深入理解TCP/IP协议
🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨
🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖
🎉希望我们在一篇篇的文章中能够共同进步!!!
🌈个人主页:AUGENSTERN_dc
🔥个人专栏:C语言 |Java | 数据结构 | 算法 | MySQL | RabbitMQ | Redis
⭐个人格言:
一重山有一重山的错落,我有我的平仄
一笔锋有一笔锋的着墨,我有我的舍得
目录
1. OSI七层模型
1.1 OSI七层模型
1.2 为什么要分成七个层次?
1.3 各层分别的职责:
1.3.1 应用层
1.3.1.1 主要功能:
1.3.1.2 常见应用层的协议:
1.3.1.3 总结
1.3.2 表示层
1.3.2.1 主要功能:
1.3.2.2 常见表示层协议:
1.3.2.3 总结
1.3.3 会话层
1.3.3.1 主要功能
1.3.3.2 常见会话层协议
1.3.3.3 总结
1.3.4 传输层
1.3.5 网络层
1.3.5.1 主要功能:
1.3.5.2 常用协议:
1.3.5.3 总结:
1.3.6 数据链路层
1.3.6.1 主要功能:
1.3.6.2 常见协议
1.3.6.3 总结:
1.3.7 物理层
1.3.7.1 主要功能:
1.3.7.2 常见协议:
1.3.7.3 总结:
1. OSI七层模型
1.1 OSI七层模型
OSI(Open Systems Interconnection)七层模型是一个概念性的网络通信模型,将网络通信过程分为七个层次,每一层负责特定的功能。OSI模型的主要目的是提供一个标准化的框架,以便不同厂商的设备和软件能够互操作。
1.2 为什么要分成七个层次?
说到分层,我们可以联想一下平时我们开发一个SpringBoot后台程序时的分层,我们往往会按照每一层做不同的事情的原则,将系统分为三层(若系统复杂,则会有更多的层级) :
<1> Controller (负责前后端的数据交互)
<2> Service (负责业务操作逻辑)
<3> Repository (负责与数据库进行交互)
复杂的系统需要进行分层,因为每一层都需要专注于一类事情,就像设计模式中的 <单一责任原则>
网络分层的原理也是一样,每一层只专注于做一件事情
话说回来,我认为分层的原因主要有三点:
1. 各层之间需要相互独立: 各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。
2. 提高了灵活性和可替换性:每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。并且,每一层都可以根据需要进行修改或替换,而不会影响到整个网络的结构。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。
3. 大问题化小:分层可以将复杂的网络问题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义.
1.3 各层分别的职责:
在OSI七层模型中,每一层的模型都会对上一层的数据进行封装(除了物理层外,物理层对数据进行转换而不是封装)
接下来我们简单介绍一下,每一层的不同的职责
1.3.1 应用层
将用户上传的数据发送给表示层做处理,或接收表示层传来的数据展示给用户
1.3.1.1 主要功能:
<1> 提供用户接口: 应用层为用户提供直接的交互界面,使得用户能够方便的使用各种网络服务
<2> 数据格式化: 应用层负责将用户数据转换为合适的网络传输格式,以及将接受到的数据解析为用户可以理解的格式
<3> 提供网络服务: 应用层提供了多种网络服务,满足用户的不同需求
1.3.1.2 常见应用层的协议:
<1> HTTP/HTTPS
<2> SMTP/POP3/IMAP
<3> FTP/SFTP
<4> DNS
1.3.1.3 总结
总的来说,应用层主要是用来服务于用户,与用户直接进行交互的,同时应用层是通过调用下层提供的服务来实现其功能
1.3.2 表示层
表示层会对来自于应用层的数据进行封装,传输给会话层,或接收会话层的数据,解封后传输给应用层
1.3.2.1 主要功能:
<1> 数据表示和转换: 表示层负责将数据转换为适合网络传输的格式,以及将接收到的数据转换为应用程序可以理解的格式。
例如:将ASCII转换为Unicode编码格式,将图像音频等转换成合适的传输形式
<2> 数据加密和解密: 表示层提供数据加密和解密服务,确保数据在传输过程中的安全性和隐私性。
例如在HTTP的基础上,通过SSL/TLS协议对数据进行加密,确保数据在传输过程中不被窃取或篡改
<3> 数据压缩和解压缩: 表示层提供数据压缩和解压缩服务,减少数据传输的大小,提高传输效率。
例如: 将文件压缩成ZIP文件进行传输,压缩文件大小,提高传输效率
1.3.2.2 常见表示层协议:
SSL/TLS(Secure Sockets Layer/Transport Layer Security)
1.3.2.3 总结
表示层主要负责处理应用层数据的表示,转换,加密和压缩,确保数据在不同的系统之间能够正确的理解和处理
1.3.3 会话层
会话层接收表示层的数据并进行封装,发送给传输层,或接收传输层的数据解封发送给表示层
1.3.3.1 主要功能
<1> 建立会话: 会话层负责在通信双方之间建立会话
<2> 管理会话: 会话层负责管理会话的整个生命周期,包括数据传输、会话恢复和会话终止。
<3> 同步和检查点: 会话层在数据传输过程中设置同步点和检查点,确保数据的完整性和一致性。
<4> 对话控制: 会话层支持双向通信,并可以控制会话的方向。
1.3.3.2 常见会话层协议
<1> RPC (Remote Procedure Call)
<2> NetBIOS (Network Basic Input/Output System)
<3> SMB(Server Message Block)
1.3.3.3 总结
会话层主要负责管理和协调通信双方之间的会话,通过各种协议实现其功能,确保数据在会话期间正确、有序地传输。
1.3.4 传输层
传输层的主要职责是提供端到端的可靠或不可靠数据传输服务,确保数据能够在网络中正确、完整地传输。
1.3.4.1 主要功能
<1> 端到端的通信: 传输层负责在源主机和目标主机之间建立和管理端到端的通信。
<2> 可靠传输: 传输层提供可靠的数据传输服务,确保数据能够完整、无误地到达目的地。
<3> 不可靠传输: 传输层也提供不可靠的数据传输服务,不保证数据的可靠传输,但提供快速传输。
<4> 多任务管理: 传输层可以同时管理多个应用程序的通信,每个应用程序使用不同的端口号。
1.3.4.2 常见协议
<1> TCP (Transmission Control Protocol)
<2> UDP(User Datagram Protocol)
1.3.4.3 总结
传输层通过TCP和UDP两种协议实现其功能,确保数据能够在网络中正确、完整地传输。
1.3.5 网络层
1.3.5.1 主要功能:
<1> 路由选择: 网络层负责选择最佳路径,将数据报从源主机传输到目标主机。
<2> 逻辑地址处理: 网络层使用逻辑地址(如IP地址)来标识网络中的设备。IP地址是网络层的核心,用于路由选择和数据报的传输。
<3> 数据报传输: 网络层将传输层的数据(如TCP段或UDP数据报)封装成网络层的数据报(如IP数据报),接收方的网络层将接收到的数据报解封装,提取出传输层的数据并传递给上层。
<4> 错误检测: 网络层在数据报中添加校验和,用于检测数据在传输过程中是否发生错误。如果检测到错误,网络层会丢弃错误的数据报,由传输层负责重传。
1.3.5.2 常用协议:
<1> IP(Internet Protocol): IP是网络层的核心协议,负责将数据报从源主机传输到目标主机。
<2> ICMP(Internet Control Message Protocol):ICMP用于发送错误消息和控制消息,帮助网络层更好地管理数据报的传输。
<3> IGMP(Internet Group Management Protocol):IGMP用于管理多播组成员关系,支持多播通信。
1.3.5.3 总结:
网络层通过IP协议、ICMP协议等实现其功能,确保数据能够在复杂的网络环境中高效、可靠地传输。
1.3.6 数据链路层
1.3.6.1 主要功能:
<1> 帧的封装与解封装: 数据链路层将网络层的数据(如IP数据报)封装成帧。帧是数据链路层的数据单元,包含帧头、数据部分和帧尾。
<2> 可靠传输: 数据链路层通过校验码(如CRC)检测传输过程中是否发生错误。某些数据链路层协议(如HDLC)可以纠正单比特错误。数据链路层可以通过确认应答(ACK)和超时重传机制确保数据的可靠传输。
<3> 介质访问控制: 数据链路层负责管理多个设备共享同一物理介质(如以太网电缆)时的访问控制。
<4> 流量控制: 数据链路层可以通过流量控制机制(如滑动窗口协议)控制发送方的数据流量,避免接收方缓冲区溢出
1.3.6.2 常见协议
<1> 以太网(Ethernet)
<2> Wi-Fi(IEEE 802.11)
<3> PPP(Point-to-Point Protocol)
1.3.6.3 总结:
数据链路层主要负责将物理层传输的原始比特流封装成帧,并提供可靠的数据传输服务。
1.3.7 物理层
1.3.7.1 主要功能:
<1> 物理连接: 物理层负责建立和维护物理连接,确保数据能够在物理介质上传输。
<2> 比特流传输: 物理层负责在物理介质上透明地传输原始的比特流。
<3> 信号编码: 物理层将数据编码为适合物理介质传输的信号。
1.3.7.2 常见协议:
<1> 以太网(Ethernet)
<2> 光纤通信
<3> 无线通信
1.3.7.3 总结:
物理层通过各种协议和标准(如以太网、光纤通信、无线通信)实现其功能,确保数据能够在物理介质上正确传输。
相关文章:

[ 计算机网络 ] 深入理解TCP/IP协议
🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ 🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖 🎉希望我们在一篇篇的文章中能够共同进步!!&…...

微软开放代理网络愿景
🌐 Microsoft的开放式智能代理网络愿景 2025年05月20日 | AI日报  欢迎各位人工智能爱好者 微软刚刚在Build 2025大会上开启了备受期待的AI周活动,通过发布大…...
UDP三种通信方式
单播(Unicast) 单播是最常见的通信方式,数据从一个发送方传输到一个特定的接收方。发送方将数据包发送到接收方的IP地址和端口号,接收方通过监听指定的端口接收数据。单播适用于一对一的通信场景。 import java.net.DatagramPac…...

4-5月份,思科,华为,微软,个别考试战报分享
一定要看正版学习资料,在资料上省的钱可能变成后面的补考费,#网络工程师 #华为考试题库 #HCIP题库 #HCIA题库 #HCSP题库 #HCSE题库 #HCSA题库 #华为电力题库 #华为金融题库 #正版题库#思科考试 #CCNP题库 #CCNA题库 #HCIA考试 #CCIE题库 #CCDE题库 #电信…...

计算机网络-HTTP与HTTPS
文章目录 计算机网络网络模型网络OSITCP/IP 应用层常用协议HTTP报文HTTP状态码HTTP请求类型HTTP握手过程HTTP连接HTTP断点续传HTTPSHTTPS握手过程 计算机网络 网络模型 为了解决多种设备能够通过网络相互通信,解决网络互联兼容性问题。 网络模型是计算机网络中用于…...

信号波形发生器电路Multisim仿真
一、电路 二、示波器 三、示波器波形 四、所遇到的问题 1、只是把电路仿真出来了,具体原理没有理解。 解: 第一个波形是正弦波,是由电阻和电容的振荡电路产生的。 第二个波形是方波,产生的正弦波通过电压比较器输出一个方波。…...
深入解析Java微服务架构:Spring Boot与Spring Cloud的整合实践
深入解析Java微服务架构:Spring Boot与Spring Cloud的整合实践 引言 随着云计算和分布式系统的快速发展,微服务架构已成为现代软件开发的主流模式。Java作为企业级应用开发的核心语言,结合Spring Boot和Spring Cloud的强大生态,…...
医学影像辅助诊断系统开发教程-基于tensorflow实现
源码下载地址: https://download.csdn.net/download/shangjg03/90873910 1. 简介 医学影像辅助诊断系统是利用计算机视觉和深度学习技术,帮助医生分析医学影像(如X光、CT、MRI等)并提供诊断建议的系统。本教程将指导你开发一个基于深度学习的胸部X光肺炎检测系统。 2. 准备…...
前端单点登录
前端实现单点登录(SSO) 单点登录(Single Sign-On,简称 SSO)是一种认证机制,允许用户在多个系统之间只需登录一次,就可以访问所有相关系统,而不需要重复输入账号和密码。它的目标是提…...

Spring AI 介绍
Python一直是AI领域的主要语言, 主要原因是因其语法简洁易学、拥有丰富且强大的AI专用库及框架、具备跨平台兼容性且社区生态活跃,能高效支撑AI算法开发、数据处理及模型部署。 Spring开发了AI开发的框架Spring AI,对于Java的开发者来说,也可以快速入手AI相关的开发了。 S…...

onlyoffice 源码 调试说明 -ARM和x86双模式安装支持
很多用户在调试onlyoffice源码最大的问题是如何搭建环境,这个难度很高,下面提供一键安装的方式,让普通用户也能快速调试源码。 OnlyOffice Document Server 基于源码运行的容器调试模式,凭借 Docker 容器化技术的核心优势,为开发者提供了跨平台、高兼容性…...

EXCEL在一列数据前统一添加负号
1.全选数据列 2.右键,设置单元格格式。输入-0,要保留三位小数就输入-0.000. 3.添加完成效果。...
从零开始打造个人主页:HTML/CSS/JS实战教程
本教程分为环境搭建、HTML 结构编写、CSS 样式布局、JavaScript 交互实现、部署上线等五大部分,覆盖从基础到进阶的核心知识点,并结合示例代码与最佳实践,帮助你快速上手并掌握前端开发基本技能。 介绍 个人主页是展示自我、分享作品的重要…...

UEFI Spec 学习笔记---33 - Human Interface Infrastructure Overview---33.2.6 Strings
33.2.6 Strings UEFI 环境中的 string 是使用 UCS-2 格式定义,每个字符由 16bit 数据表示。对于用户界面,strings 也是一种可以安装到 HIIdatabase 的一种数据。 为了本土化,每个 string 通过一个唯一标识符来识别,而每一个标识…...

高等数学基础(牛顿/莱布尼茨公式)
牛顿/莱布尼茨公式主要是为定积分的计算提供了高效的方法, 其主要含义在于求积分的函数( f ( x ) f(x) f(x))连续时候总是存在一条积分面积的函数( F ( x ) F(x) F(x))与之对应, 牛顿莱布尼茨公式吧微分和积分联系了起来, 提供了这种高效计算积分面积的方法 参考视频理解: http…...
Node.js路径处理指南:如何安全获取当前脚本目录路径
本文适用于 Node.js 14.x及以上版本,同时覆盖 CommonJS 和 ES Modules 模块系统 文章目录 一、为什么需要关注路径问题?二、三种核心方法详解方法1:经典方案 __dirname (CommonJS)方法2:ES Modules 解决方案方法3:动态…...
RK3588 ArmNN CPU/GPU ResNet50 FP32/FP16/INT8 推理测试
RK3588 ArmNN CPU/GPU ResNet50 FP32/FP16/INT8 推理测试 **背景与目标** 一.性能数据【INT8模型在CPU上推理的结果已经不对,暂未分析原因】二.操作步骤2.1 在x86-Linux上生成onnx模型,以及tflite量化模型(避免在RK3588上安装过多依赖)2.1.1 创建容器2.1.2 安装依赖2.1.3 下载推…...

2025年渗透测试面试题总结-华顺信安[实习]安全服务工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 华顺信安[实习]安全服务工程师 1. 自我介绍 2. 红蓝队经验 3. Shiro漏洞知识体系 4. APP渗透测试方法…...
按键精灵ios/安卓辅助工具高级函数OcrEx文字识别(增强版)脚本开发介绍
函数名称 OcrEx文字识别(增强版) 函数功能 返回指定区域内所有识别到的字符串、左上角坐标、区域宽高、可信度,无需自制字库,识别范围越小,效率越高,结果越准确 注意:安卓版按键APP需在设置…...
Unity3D HUD UI性能优化方案
前言 在Unity3D中实现高性能的HUD UI需要综合考虑渲染效率、CPU开销和内存管理。以下是分步的优化方案: 对惹,这里有一个游戏开发交流小组,大家可以点击进来一起交流一下开发经验呀! 1. 降低Draw Call:合批与图集 …...

掌握Git:版本控制与高效协作指南
一、初始Git 提出问题:无论是在工作还是学习,我们在编写各种文档的时候,更改失误,失误后恢复到原来版本,不得不复制出一个副本。 每个版本由各自的内容,但最终只有一个报告需要被我们使用。 但在此之前的…...

VsCode和AI的前端使用体验:分别使用了Copilot、通义灵码、iflyCode和Trae
1、前言 大杂烩~每次开发一行代码,各个AI争先恐后抢着提供帮助 备注:四款插件都需要先去官网注册账号,安装好之后有个账号验证。 2、插件详解 2.1、AI分析的答案 GitHub Copilot 定位:老牌 AI 代码补全工具,深度集成…...
交叉熵损失函数,KL散度, Focal loss
目录 交叉熵损失函数(Cross-Entropy Loss) 二分类交叉熵 多分类交叉熵 KL散度(Kullback-Leibler Divergence) 交叉熵损失函数和KL散度总结 Focal loss Focal loss 和 交叉熵损失函数 的区别 交叉熵损失函数(Cross-Entropy…...
php、laravel框架下如何将一个png图片转化为jpg格式
要在 PHP 的 Laravel 框架下将 PNG 图片转化为 JPG 格式,可以使用两种方法:内置的 GD 库或第三方包 Intervention/image。 方法 1:使用 GD 库 GD 库是 PHP 内置的图像处理工具,无需额外安装即可使用。 实现步骤: 使…...
足式机器人经典控制常用的ROS库介绍
一. 核心工具 & 功能 1. ros-noetic-rosbash 作用: 提供与 ROS 相关的 Shell 命令(如 roscd, rosls, roscp 等),用于快速操作 ROS 包、节点和文件。 典型场景: 快速在终端中切换 ROS 工作空间、查看或复制 ROS 包内的文件。 2. ros-noet…...
在tp6模版中加减法
实际项目中,我们经常需要标签变量加减运算的操作。但是,在ThinkPHP中,并不支持模板变量直接运算的操作。幸运的是,它提供了自定义函数的方法,我们可以利用自定义函数解决:ThinkPHP模板自定义函数语法如下&a…...

【Part 3 Unity VR眼镜端播放器开发与优化】第一节|基于Unity的360°全景视频播放实现方案
《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏&am…...
Python打卡DAY30
知识点回顾: 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致) # 直接导入 from random import randint print(randint(1, 10)) # 导入自定义库 import modu…...

IDEA连接github(上传项目)
【前提:菜鸟学习的记录过程,如果有不足之处,还请各位大佬大神们指教(感谢)】 1.先配置好git环境。 没配置的小伙伴可以看上一篇文章教程。 安装git,2.49.0版本-CSDN博客 2.在idea设置git 打开IDEA设置-…...

重构研发效能:项目管理引领软件工厂迈向智能化
1.项目管理智能化,激活软件工厂新引擎 在高速发展的软件开发时代,企业如何高效管理多个项目、协调团队合作、优化资源配置,已成为推动技术进步的关键。尤其是在多任务、多项目并行的复杂环境下,智能项目组合管理工具正成为软件工…...