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

【网络编程】协议和分层

1. 什么是协议?

  • 协议(Protocol)是一组规则、约定或标准,它们定义了计算机网络中不同设备或程序之间交换数据的方式。这些规则确保了数据能够在网络中以一致和可预测的方式被发送、接收和解释。

  • 生活中的各种公认的规则都可以被看做是一种协议,例如:红绿灯信号、信件邮递、莫斯密码等待。
  • 对于同台设备上的进程间通信,有如管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,由于设备是多样性的,所以要兼容多种多样的设备,就协商出了各种通用的网络协议。通过这些协议来保障数据的有效传输。
  • 简单来说,在网络环境中,要组织数据,第一步就要确定数据交换的协议。然后我们从A主机按照敲定的协议组织数据,然后将组织好的数据传送给主机B,然后B主机按照同样的协议解析数据。从而完成AB主机之间的数据交换。

  • 在网络编程开发中,经常使用到的协议如下:TCP/IP、UDP、HTTP、SSL、FTP 等等

2. 两种分层体系模型

OSI(Open Systems Interconnection Reference Model,开放系统互联基本参考模型),又称七层网络模型。

分层有什么好处?

  • 分层隔离
  • 灵活性好
  • 易于实现和维护
  • 促进标准化工作
七层模型和五层模型

在这里插入图片描述

层级层名作用主要功能
第7层应用层提供网络服务和应用协议,与用户直接交互。- 网络服务(如HTTP、FTP、SMTP)
- 应用协议
- 用户接口
第6层表示层负责数据格式化和转换,确保不同系统间数据能正确解释。- 数据转换
- 数据加密
- 数据压缩
第5层会话层管理会话的建立、维护和终止,提供同步与恢复功能。- 会话管理
- 同步
- 对话控制
第4层传输层提供端到端的可靠数据传输,确保数据完整性。- 端口管理
- 流量控制
- 错误校正(如TCP)
- 分段与重组
第3层网络层负责路由选择和网络间的通信,确保数据包到达目的地。- 路由选择
- 逻辑地址(IP地址)
- 分段与重组
第2层数据链路层提供可靠的节点间数据传输,处理错误检测与纠正。- 帧同步
- 流量控制
- 错误检测与纠正
- MAC地址
第1层物理层定义物理和电气特性,传输比特流。- 比特流传输
- 传输介质(如铜线、光纤)
- 物理接口(如RJ45)

3. 数据组织和传输

![[20190627004118.webp]]

当一段数据data从A主机传输到B主机时,中间的过程涉及多个步骤和协议层,这些步骤共同确保了数据能够准确、可靠地传输。

以下是数据从A主机到B主机传输的主要过程:

3.1. 应用层处理

  • 数据封装:在A主机的应用层,数据data首先被封装成应用层协议可以理解的格式,比如HTTP请求中的消息体。
  • 发起请求:应用层软件(如Web浏览器、FTP客户端等)通过调用操作系统提供的接口,向传输层发起数据传输请求。

3.2. 传输层处理

  • 选择协议:根据应用需求选择合适的传输层协议,如TCP(面向连接的可靠传输)或UDP(无连接的不可靠传输)。对于大多数需要确保数据完整性和顺序的传输,TCP是更常见的选择。
  • 建立连接(TCP):如果使用TCP协议,A主机和B主机之间会首先建立一条TCP连接。这涉及三次握手过程,以确保双方都已准备好进行数据传输。
  • 数据分段与封装:TCP将应用层数据data分割成多个较小的段(segment),并为每个段添加TCP头部信息,包括序列号、确认号、窗口大小等,以便实现可靠传输。

3.3. 网络层处理

  • IP封装:在网络层,TCP段被封装成IP数据报(datagram),并添加IP头部信息,包括源IP地址、目的IP地址、生存时间(TTL)等。
  • 路由选择:网络层根据IP地址和路由表信息,决定数据报从A主机到B主机的最佳路径。数据报可能经过一个或多个路由器进行转发。

3.4. 数据链路层处理

  • 帧封装:在数据链路层,IP数据报被封装成帧(frame),并添加帧头部和尾部信息,包括源MAC地址、目的MAC地址、帧类型等。
  • 物理传输:帧通过物理介质(如以太网电缆、光纤等)从A主机的网络接口传输到网络中的第一个路由器或交换机。

3.5. 传输过程中的处理

  • 路由转发:在传输过程中,每个路由器或交换机都会检查帧的目的MAC地址,并决定是否需要转发该帧。如果需要转发,路由器会根据路由表信息更新帧的MAC地址,并通过适当的接口将帧发送到下一个网络段。
  • 错误检测与纠正:在数据链路层和网络层,都会使用各种技术(如CRC校验)来检测传输过程中可能出现的错误。如果发现错误,可能会请求重发或丢弃错误的数据。

3.6. 到达B主机

  • 数据接收:当数据帧到达B主机的网络接口时,它被接收并逐层向上传递。
  • 解封装与重组:在数据链路层和网络层,帧和IP数据报被解封装,还原出原始的TCP段。在传输层,TCP段被重新组合成原始的应用层数据data。
  • 应用层处理:最后,应用层软件(如Web服务器、FTP服务器等)接收并处理数据data

3.7. 传输结束

  • 关闭连接(TCP):如果使用TCP协议,数据传输完成后,A主机和B主机之间会进行四次挥手过程,以优雅地关闭TCP连接。

4. 传输层的两个重要协议

在传输层中有两个重要的协议。TCP、UDP 这是网络编程中的重点协议,是我们后续篇章中要重点学习。

在这里插入图片描述

http://www.xdnf.cn/news/2969.html

相关文章:

  • 解决leensa无法使用的办法:平替教程
  • 编译原理:由浅入深从语法树到文法类型
  • 使用Python对接StockTV印度股票数据源的详细教程
  • MiniLLM:大型语言模型的知识蒸馏
  • InnoDB对LRU算法的优化
  • 哪些CAD看图软件适合初学者使用?
  • Jackson 使用方法详解
  • Starrocks导入数据时报错too many versions
  • 网络安全之红队LLM的大模型自动化越狱
  • RAG当知识库非常大导致大语言模型不准确,该如何处理
  • 通过langchain访问大模型并实现简单的查询
  • 操作系统——第四章(文件管理与文件的逻辑结构)
  • power bi获取局域网内共享文件
  • arm设备树基础知识
  • “专精特新”中小企业数字化转型呈现 4 大转型特征
  • 同步时钟与异步时钟
  • 1.24g 雨晨 19045.5796 Windows 10 企业版 x64 极速版
  • pymsql(SQL注入与防SQL注入)
  • Spring反射机制
  • Dijkstra算法的学习
  • cmake qt 项目编译
  • 开源 Agent 框架对比:LangChain vs AutoGen vs CrewAI
  • 牛客:AB1 【模板】栈
  • 天猫TP代运营服务商-品融电商:助力品牌破局增长的专业推手
  • 【HCIA】4种NAT的配置方式
  • AI专题(二)----由浅入深初识LLM
  • 大模型性能测试
  • 数据要素如何驱动的新质IDC一体化运营体系发展?
  • Jtti:nginx服务器如何限制访问频率
  • 在android 系统上qnn sdk转换,运行模型示例