一文教你弄懂网络协议栈以及报文格式

news2024/12/24 21:37:37

文章目录

    • OSI七层网络协议栈
      • 示意图
      • 1. 应用层(Application Layer)
      • 2. 表示层(Presentation Layer)
      • 3. 会话层(Session Layer)
      • 4. 传输层(Transport Layer)
      • 5. 网络层(Network Layer)
      • 6. 数据链路层(Data Link Layer)
      • 7. 物理层(Physical Layer)
      • OSI 七层模型的作用
      • OSI 模型与 TCP/IP 模型的对比
    • TCP/IP网络协议栈
      • 1. 应用层(Application Layer)
      • 2. 传输层(Transport Layer)
      • 3. 网络层(Internet Layer)
      • 4. 网络接口层(Network Access Layer)
      • 物理层(Physical Layer)
      • TCP/IP 模型的作用
      • 总结
    • 两种网络协议的对比图
    • 典型协议及其报文格式
      • 1. ARP 报文格式
      • 2. IP 报文格式(IPv4)
      • 3. TCP 报文格式
      • 4. UDP 报文格式
      • 5. SSH 报文格式
      • 6. FTP 报文格式
      • 7. SMTP 报文格式
      • 8. HTTP 报文格式
    • IPv6报文格式
      • IPv6 报文格式
      • IPv6 扩展首部格式
        • 1. 逐跳选项首部(Hop-by-Hop Options Header)
        • 2. 目的选项首部(Destination Options Header)
        • 3. 路由首部(Routing Header)
        • 4. 分段首部(Fragment Header)
      • 总结

OSI七层网络协议栈

OSI(Open Systems Interconnection)七层模型是由国际标准化组织(ISO)提出的一个概念性框架,旨在定义网络通信的标准。这个模型将网络通信划分为七个层次,每一层都有其特定的功能和职责。下面是 OSI 七层模型的详细介绍:

示意图

七层网络协议图

1. 应用层(Application Layer)

应用层是最顶层,直接面向用户,提供应用程序所需的接口和服务。这一层的主要功能包括:

  • 数据格式化和编码
  • 用户认证
  • 文件传输、访问和管理
  • 打印服务

常见的应用层协议包括:HTTP、HTTPS、FTP、SMTP、POP3、IMAP 等。

2. 表示层(Presentation Layer)

表示层负责数据的表示形式,包括数据的编码、压缩、解密等,确保数据在发送端和接收端的一致性。这一层的主要功能包括:

  • 数据加密和解密
  • 数据压缩和解压缩
  • 数据格式转换

3. 会话层(Session Layer)

会话层管理会话的建立、维护和终止,确保数据传输的顺序性和可靠性。这一层的主要功能包括:

  • 会话的建立和拆除
  • 数据流的同步控制
  • 检查点和恢复

4. 传输层(Transport Layer)

传输层负责端到端的数据传输,并保证数据的完整性和可靠性。这一层的主要功能包括:

  • 数据分割和重组
  • 流量控制
  • 错误检测和纠正
  • 序列控制

常见的传输层协议包括:TCP(传输控制协议)和 UDP(用户数据报协议)。

5. 网络层(Network Layer)

网络层负责将数据包从源地址传输到目的地址,处理逻辑地址(如 IP 地址),并选择最佳的传输路径。这一层的主要功能包括:

  • 路由选择
  • 数据包的转发
  • 逻辑寻址

常见的网络层协议包括:IP(互联网协议)、ICMP(互联网控制消息协议)、ARP(地址解析协议)、RIP(路由信息协议)等。

6. 数据链路层(Data Link Layer)

数据链路层负责在物理层之上提供可靠的节点间数据传输,并检测和纠正物理层传输过程中产生的错误。这一层的主要功能包括:

  • 帧的封装和解封装
  • 错误检测
  • 流量控制
  • MAC 地址寻址

常见的数据链路层协议包括:Ethernet(以太网)、PPP(点对点协议)、Frame Relay(帧中继)等。

7. 物理层(Physical Layer)

物理层是最底层,负责定义电信号、机械、电气和功能规范,以实现比特流的透明传输。这一层的主要功能包括:

  • 定义物理接口标准
  • 数据传输速率
  • 信号类型
  • 传输介质

常见的物理层传输介质包括:同轴电缆、双绞线、光纤、无线信号等。

OSI 七层模型的作用

OSI 模型通过将网络通信分解为七个独立的层,使得每一层都可以专注于特定的任务,从而简化了网络设计和实现。尽管在实际应用中,许多现代网络协议(如 TCP/IP 协议栈)并不严格遵循 OSI 模型,但 OSI 模型仍然作为理解和分析网络通信的重要参考框架。

OSI 模型与 TCP/IP 模型的对比

  • OSI 模型:七层结构,更详细地划分了网络通信的功能。
  • TCP/IP 模型:四层结构,合并了一些功能,更侧重于互联网的实际应用。

尽管两者之间存在差异,但它们都是理解网络通信的基础,对于网络工程师和技术人员来说都是非常有用的工具。

TCP/IP网络协议栈

TCP/IP(Transmission Control Protocol/Internet Protocol)协议族是目前互联网通信的基础,它定义了一系列协议和标准,使得不同的计算机系统能够相互通信。TCP/IP 模型通常分为四个层次,每一层都有其特定的功能和职责。下面是 TCP/IP 四层模型的详细介绍:

1. 应用层(Application Layer)

应用层是最上层,它直接面向用户程序,提供各种常用的应用程序和服务。这一层的主要功能包括:

  • 提供应用程序之间的接口
  • 数据格式化和编码
  • 用户认证
  • 文件传输、访问和管理
  • 打印服务

常见的应用层协议包括:

  • HTTP:用于 Web 浏览器与 Web 服务器之间的通信。
  • HTTPS:HTTP 的安全版本,使用 SSL/TLS 加密。
  • FTP:文件传输协议,用于上传和下载文件。
  • SMTP:简单邮件传输协议,用于发送电子邮件。
  • POP3/IMAP:邮件协议,用于从邮件服务器接收电子邮件。
  • DNS:域名系统,用于将域名转换为 IP 地址。

2. 传输层(Transport Layer)

传输层负责端到端的数据传输,并保证数据的完整性和可靠性。这一层的主要功能包括:

  • 数据分割和重组
  • 流量控制
  • 错误检测和纠正
  • 序列控制

常见的传输层协议包括:

  • TCP(Transmission Control Protocol):提供面向连接的、可靠的字节流服务。
  • UDP(User Datagram Protocol):提供无连接的服务,不保证数据的可靠性,但速度快。

3. 网络层(Internet Layer)

网络层负责将数据包从源地址传输到目的地址,处理逻辑地址(如 IP 地址),并选择最佳的传输路径。这一层的主要功能包括:

  • 路由选择
  • 数据包的转发
  • 逻辑寻址

常见的网络层协议包括:

  • IP(Internet Protocol):提供无连接的数据报服务。
  • ICMP(Internet Control Message Protocol):用于发送错误消息和其他控制信息。
  • ARP(Address Resolution Protocol):用于将 IP 地址映射为物理地址(MAC 地址)。
  • RIP(Routing Information Protocol):一种内部网关协议,用于在路由器之间交换路由信息。

4. 网络接口层(Network Access Layer)

网络接口层(也称为链路层或数据链路层)负责在物理层之上提供可靠的节点间数据传输,并检测和纠正物理层传输过程中产生的错误。这一层的主要功能包括:

  • 帧的封装和解封装
  • 错误检测
  • 流量控制
  • MAC 地址寻址

常见的网络接口层技术包括:

  • Ethernet(以太网):最常用的局域网技术。
  • PPP(Point-to-Point Protocol):用于通过串行或点对点链路连接 Internet。
  • Frame Relay(帧中继):一种用于广域网的技术。
  • ATM(Asynchronous Transfer Mode):异步传输模式,用于高速网络传输。

物理层(Physical Layer)

虽然物理层不是 TCP/IP 模型的一部分,但它在 OSI 七层模型中是最低一层,负责定义电信号、机械、电气和功能规范,以实现比特流的透明传输。物理层的主要功能包括:

  • 定义物理接口标准
  • 数据传输速率
  • 信号类型
  • 传输介质

常见的物理层传输介质包括:

  • 同轴电缆
  • 双绞线
  • 光纤
  • 无线信号

TCP/IP 模型的作用

TCP/IP 模型通过将网络通信分解为四个独立的层,使得每一层都可以专注于特定的任务,从而简化了网络设计和实现。TCP/IP 模型在实际应用中比 OSI 模型更为实用,尤其是在互联网的广泛应用中,TCP/IP 成为了事实上的标准。

总结

TCP/IP 模型是当今互联网通信的基础,它通过分层的方式定义了数据在网络中的传输过程。每一层都有其特定的功能和协议,确保数据能够准确、高效地从源地址传输到目的地址。理解 TCP/IP 模型对于网络工程师和技术人员来说至关重要,有助于解决网络问题和优化网络性能。

两种网络协议的对比图

两种网络协议比较

典型协议及其报文格式

好的,下面是 ARP、IP、TCP、UDP、SSH、FTP、SMTP 和 HTTP 报文格式的表格形式展示:

1. ARP 报文格式

字段名称长度(位)描述
硬件类型(Hardware Type)16指定硬件地址类型,如以太网(1)。
协议类型(Protocol Type)16指定协议类型,如 IP(0x0800)。
硬件地址长度(Hardware Address Length)8指定硬件地址的长度,如以太网地址为 6 字节。
协议地址长度(Protocol Address Length)8指定协议地址的长度,如 IP 地址为 4 字节(IPv4)。
操作类型(Operation Type)16指定 ARP 请求(1)或 ARP 应答(2)。
发送方硬件地址(Sender Hardware Address)可变发送方的硬件地址(如 MAC 地址)。
发送方协议地址(Sender Protocol Address)可变发送方的协议地址(如 IP 地址)。
目标硬件地址(Target Hardware Address)可变目标硬件地址(如 MAC 地址),请求时为全零。
目标协议地址(Target Protocol Address)可变目标协议地址(如 IP 地址)。

2. IP 报文格式(IPv4)

字段名称长度(位)描述
版本(Version)4指定 IP 协议版本(IPv4)。
服务类型(TOS)8表示服务类型,用于优先级和控制服务质量。
总长度(Total Length)16包括首部和数据在内的整个报文长度。
标识符(Identification)16用于标识数据包,区分不同的数据包。
标志(Flags)3用于标记数据包是否分片,以及分片的类型。
片偏移(Fragment Offset)13指示分片的位置。
生存时间(TTL)8数据包在网络中可以生存的时间,每经过一个路由器减 1,为 0 时丢弃。
协议(Protocol)8指定上层协议类型。
首部校验和(Header Checksum)16用于检测 IP 首部中的错误。
源 IP 地址(Source IP Address)32发送方的 IP 地址。
目的 IP 地址(Destination IP Address)32接收方的 IP 地址。

3. TCP 报文格式

字段名称长度(位)描述
源端口号(Source Port)16发送方的端口号。
目的端口号(Destination Port)16接收方的端口号。
序列号(Sequence Number)32用于确认数据包的顺序。
确认号(Acknowledgment Number)32用于确认已收到的数据。
偏移量(Data Offset)4指示 TCP 首部长度。
控制标志(Control Flags)6包括 SYN、ACK、PSH、RST、FIN 等标志位。
窗口大小(Window Size)16指示接收方可接收的数据量。
校验和(Checksum)16用于检测 TCP 首部和数据中的错误。
紧急指针(Urgent Pointer)16指示紧急数据的结束位置。
选项字段(Options)可变可包含多个选项字段,如窗口扩大因子、时间戳等。

4. UDP 报文格式

字段名称长度(位)描述
源端口号(Source Port)16发送方的端口号。
目的端口号(Destination Port)16接收方的端口号。
长度(Length)16包括首部和数据在内的整个报文长度。
校验和(Checksum)16用于检测 UDP 首部和数据中的错误。

5. SSH 报文格式

SSH 报文格式相对灵活,通常包括以下几个部分:

字段名称描述
包头(Packet Header)包含长度信息。
会话标识符(Session ID)用于标识 SSH 会话。
命令(Command)包含 SSH 操作指令。
数据(Data)包含加密后的数据。
校验和(Checksum)用于检测数据完整性。

6. FTP 报文格式

FTP 报文格式主要体现在命令和响应中:

字段名称描述
命令(Command)包含 FTP 操作指令,如 USER, PASS, LIST, RETR 等。
响应(Response)包含服务器对命令的响应,如 220 Service ready for new user.
数据(Data)包含实际传输的数据。

7. SMTP 报文格式

SMTP 报文格式如下:

字段名称描述
命令(Command)包含 SMTP 操作指令,如 HELO, MAIL FROM, RCPT TO, DATA 等。
响应(Response)包含服务器对命令的响应,如 220 Service ready
邮件内容(Mail Content)包含实际邮件内容。

8. HTTP 报文格式

HTTP 报文格式如下:

字段名称描述
请求行(Request Line)包含方法(如 GET, POST)、请求 URL 和 HTTP 版本。
请求头(Request Headers)包含客户端信息、认证信息等。
请求体(Request Body)包含 POST 数据或其他数据。
响应行(Status Line)包含 HTTP 版本、状态码和状态信息。
响应头(Response Headers)包含服务器信息、内容类型等。
响应体(Response Body)包含响应数据。

这些表格展示了不同协议报文的基本字段和用途,帮助理解网络通信中的数据传输格式。

IPv6报文格式

好的,下面是 IPv6 报文格式的表格形式展示:

IPv6 报文格式

字段名称长度(位)描述
版本(Version)4指定 IP 协议版本(IPv6)。
优先级(Traffic Class)8表示服务类型,用于优先级和控制服务质量。
流标签(Flow Label)20用于标识具有相似特性的数据流,用于 QoS 优先处理。
载荷长度(Payload Length)16包含有效载荷的长度,不包括 IPv6 首部长度。
下一头部(Next Header)8指定下一个首部的类型,用于识别 IPv6 扩展首部或上层协议。
跳数限制(Hop Limit)8数据包在网络中可以生存的时间,每经过一个路由器减 1,为 0 时丢弃。
源 IPv6 地址(Source IPv6 Address)128发送方的 IPv6 地址。
目标 IPv6 地址(Destination IPv6 Address)128接收方的 IPv6 地址。

IPv6 扩展首部格式

IPv6 报文可以包含一个或多个扩展首部,这些扩展首部提供了额外的功能。以下是常见的 IPv6 扩展首部:

1. 逐跳选项首部(Hop-by-Hop Options Header)
字段名称长度(位)描述
下一头部(Next Header)8指定下一个首部的类型。
跳数限制(Hop Limit)8数据包在网络中可以生存的时间,每经过一个路由器减 1,为 0 时丢弃。
选项数据(Option Data)可变包含逐跳选项数据,每个选项可以有不同的长度和内容。
2. 目的选项首部(Destination Options Header)
字段名称长度(位)描述
下一头部(Next Header)8指定下一个首部的类型。
跳数限制(Hop Limit)8数据包在网络中可以生存的时间,每经过一个路由器减 1,为 0 时丢弃。
选项数据(Option Data)可变包含目的地选项数据,每个选项可以有不同的长度和内容。
3. 路由首部(Routing Header)
字段名称长度(位)描述
下一头部(Next Header)8指定下一个首部的类型。
跳数限制(Hop Limit)8数据包在网络中可以生存的时间,每经过一个路由器减 1,为 0 时丢弃。
路由类型(Routing Type)8指定路由类型。
路由段数(Segments Left)8指示剩余的路由段数。
路由数据(Route Data)可变包含中间路由器的 IPv6 地址。
4. 分段首部(Fragment Header)
字段名称长度(位)描述
下一头部(Next Header)8指定下一个首部的类型。
跳数限制(Hop Limit)8数据包在网络中可以生存的时间,每经过一个路由器减 1,为 0 时丢弃。
偏移(Offset)13指示分片的位置。
标志(Flags)3用于标记数据包是否分片,以及分片的类型。
保留(Reserved)2保留字段。

总结

IPv6 报文格式相比 IPv4 更加简洁,并且引入了新的字段以支持更多的功能。IPv6 报文可以包含多个扩展首部,这些首部提供了额外的功能,如逐跳选项、目的地选项、路由选项和分段选项等。理解这些报文格式有助于更好地掌握 IPv6 的工作机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2130054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt QSerialPort数据发送和接收DataComm

文章目录 Qt QSerialPort数据发送和接收DataComm2.添加 Qt Serial Port 模块3.实例源码 Qt QSerialPort数据发送和接收DataComm Qt 框架的Qt Serial Port 模块提供了访问串口的基本功能,包括串口通信参数配置和数据读写,使用 Qt Serial Port 模块就可以…

【超详细】Plaxis软件简介、 Plaxis Python API环境搭建、自动化建模、Python全自动实现、典型岩土工程案例实践应用

查看原文>>>【案例教程】PLAXIS软件丨自动化建模、典型岩土工程案例解析、模型应用、数据分析、图表制作 目录 第一部分:Plaxis软件简介及 Plaxis Python API环境搭建 第二部分:Plaxis自动化建模-基础案例 第三部分:进阶案例-Pyt…

C# HttpClient 实现HTTP Client 请求

为什么? C# httpclient get 请求和直接浏览器请求结果不一样 为了测试一下HTTP接口的,用C# HttpClient实现了HTTP客户端,用于从服务端获取数据。 但是遇到了问题:C# httpclient get 请求和直接浏览器请求结果不一样 初始代码如…

高德地图绘图,点标记,并计算中心点

效果图 代码如下 / 地图初始化 const map: any ref(null) const marker: any ref(null) const polyEditor: any ref(null) const view: any ref(false) const squareVertices: any ref([]) const init () > {workSpacesCurrent(workspaceId, {}).then((res) > {c…

html+css+js网页设计 旅游 龙门石窟8个页面

htmlcssjs网页设计 旅游 龙门石窟8个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…

实战案例(5)防火墙通过跨三层MAC识别功能控制三层核心下面的终端

如果网关是在核心设备上面,还能用MAC地址进行控制吗? 办公区域的网段都在三层上面,防火墙还能基于MAC来控制吗? 采用正常配置模式的步骤与思路 (1)配置思路与上面一样 (2)与上面区…

分类预测|基于鲸鱼优化-卷积-门控制单元网络-注意力数据分类预测Matlab程序 WOA-CNN-GRU-Attention

分类预测|基于鲸鱼优化-卷积-门控制单元网络-注意力数据分类预测Matlab程序 WOA-CNN-GRU-Attention 文章目录 一、基本原理1. WOA(鲸鱼优化算法)2. CNN(卷积神经网络)3. GRU(门控循环单元)4. Attention&…

计算机毕业设计 基于SpringBoot的课程教学平台的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

IMS中的号码规整 5G注册流程中的语音相关参数

目录 1. IMS中的号码规整 1.1 主要内容 1.2 什么是 IMS 的号码规整及 FAQ 1.3 VoNR(VoLTE) 打 VoNR(VoLTE),被叫号码规整流程 主叫 AS 来做规整 主叫 S-CSCF 来做规整 2. 5G注册流程中的语音相关参数 2.1 主要内容 2.2 使用 VoNR 的第一步:5G注册流程 2.3 5G 注册流…

2024年9月12日(k8s环境及测试 常用命令)

一、环境准备及测试 1、报错处理: kube-system calico-node-5wvln 0/1 Init:0/3 0 16h kube-system calico-node-d7xfb 0/1 Init:0/3 0 16h ku…

3个WebSocket的.Net开源项目

推荐3个有关Websocket的.Net开源项目。 一、FreeIM 一个使用Websocket协议实现的、高性能即时聊天组件,可用于群聊、好友聊天、游戏直播等场景。 1、跨平台:基于.NetCore开发,支持Windows、Mono、Liunx、Windows Azure、Docker。 2、支持…

vue3使用panolens.js实现全景,带有上一个下一个,全屏功能

panolens官方文档Home - Panolens 1.加载核心js库 (文件在untils里面) import /utils/panolens/three.min.js; import /utils/panolens/panolens.min.js; /项目中 /railway/modalIframe/playPanorama/player/js/panolens-ht.js 为修改后版本 可以获取…

elementUI中el-form 嵌套el-from 如何进行表单校验?

在el-form中嵌套另一个el-form进行表单校验和添加规则&#xff0c;首先&#xff0c;需要确保每个嵌套的el-form都有自己的model、rules和ref。 以下是一个简化的示例&#xff1a; <template><el-form :model"parentForm" :rules"parentRules" r…

推荐7款可以写论文的AI免费工具,原创一键生成神器!

在当今学术研究和写作领域&#xff0c;AI技术的应用越来越广泛&#xff0c;特别是在论文写作方面。为了帮助学生和研究人员提高写作效率和质量&#xff0c;以下推荐7款可以写论文的AI免费工具&#xff0c;这些工具均具备一键生成高质量论文的功能&#xff0c;是原创写作的神器。…

工业机器人9公里远距离图传模块,无人机低延迟高清视界,跨过距离限制

在科技日新月异的今天&#xff0c;无线通信技术正以未有的速度发展&#xff0c;其中&#xff0c;图传模块作为连接现实与数字世界的桥梁&#xff0c;正逐步展现出其巨大的潜力和应用价值。今天&#xff0c;我们将聚焦一款引人注目的产品——飞睿智能9公里远距离图传模块&#x…

自制一键杀死端口进程程序# tomcat 如何杀死tomcat进程

直接cmd 窗口执行如下命令即可 netstat -ano | findstr :8080 taskkill /F /PID <PID>简简单单的两个指令,总是记不住,也懒的记, 每次端口冲突的时候, 都是直接查百度,很苦逼, 如果有一个程序,直接输入端口号,点击按钮直接杀死进程,岂不爽歪歪. 跟我一起制作一个屠猫的…

【CSS】 Grid布局:现代网页设计的基石

引言 最近接到一个网页布局比较复杂的页面&#xff0c;看了半天还是决定用grid布局来写&#xff0c;记录一下 布局是构建用户界面的关键部分。CSS Grid布局提供了一种简单而强大的方式来创建复杂的网格布局&#xff0c;它让设计师和开发者能够更直观、更灵活地控制网页的结构。…

git pull之后发现项目错误,如何回到之前的版本方法

目录 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已经返回了之前的6daaa2e的版本了 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已…

Haption力反馈设备在机器人遥操作中的应用优势

在工业、医疗、科研等多个领域&#xff0c;机器人遥操作正在成为一项关键技术&#xff0c;它允许操作者在远离实际工作环境的情况下&#xff0c;通过远程控制系统对机器人进行精准操作。Haption Virtuose力反馈设备作为遥操作系统中的重要组成部分&#xff0c;其应用优势日益凸…

OpenGL3.3_C++_Windows(37)

调试&#xff1a; 视觉错误与CPU调试不同&#xff0c;在GLSL代码中也不能设置断点&#xff0c;出现错误的时候寻找错误的源头可能会非常困难。 glGetError&#xff08;&#xff09; GLenum glGetError();返回整形数字&#xff0c;查询错误标记&#xff0c;但是当一个错误标记…