当前位置: 首页 > news >正文

[ 计算机网络 ] 深入理解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 总结: 

物理层通过各种协议和标准(如以太网、光纤通信、无线通信)实现其功能,确保数据能够在物理介质上正确传输。

 

相关文章:

  • MySQL 8.0 OCP 1Z0-908 161-170题
  • C++23 新增扁平化关联容器详解
  • 数据挖掘:从数据堆里“淘金”,你的数据价值被挖掘了吗?
  • 题海拾贝:P2285 [HNOI2004] 打鼹鼠
  • Linux线程互斥与同步(上)(29)
  • vue3 + echarts(5.6.0)实现渐变漏斗图
  • Rocketmq broker 是主从架构还是集群架构,可以故障自动转移吗
  • Android Edge-to-Edge
  • C++ Pimpl(Pointer to Implementation)设计思想
  • 香港科技大学广州香港科技大学硕博士研究生学位项目宣讲会(智能制造硕博士物理学硕士)—深圳大学专场
  • TuyaOpen横空出世!涂鸦智能如何用开源框架重构AIoT开发范式?
  • PostgreSQL简介安装
  • 分频电路设计
  • WIFI信号状态信息 CSI 深度学习之数据集
  • taro 小程序 CoverImage Image src无法显示图片的问题
  • 顶级流媒体服务商 Spotify 2025.04 故障复盘报告,吃他人的堑长自己的智
  • Python + moviepy:根据图片或数据高效生成视频全流程详解
  • mac .zshrc:1: command not found: 0 解决方案
  • Java操作Elasticsearch 之 [Java High Level REST Clientedit]
  • MongoDB 学习(三)Redis 与 MongoDB 的区别
  • 媒体谈平台帮商家“拉黑”客户:平台治理需兼顾商家与消费者权益
  • 权威访谈丨国家疾控局就《世界卫生组织大流行协定》答记者问
  • 短剧植入,撬不动96.4%直男的钱包 | 调研报告
  • 贵州茅台:支持工作餐不上酒的规定,请投资者相信茅台创新和自我调节能力
  • 贯彻落实《生态环境保护督察工作条例》,充分发挥生态环境保护督察利剑作用
  • 当“小铁人”遇上青浦,看00后如何玩转长三角铁三