MAC 头部、IPv4 头部、IPv6 头部、TCP 头部和 UDP 头部

news/2024/12/17 1:19:55/

MAC 头部

字段名称长度(字节)描述
目标 MAC 地址6接收设备的 MAC 地址。
源 MAC 地址6发送设备的 MAC 地址。
以太网类型/长度2表示上层协议类型(如 IPv4、IPv6)或数据长度(以太网 II 或 802.3)。
数据负载46-1500上层协议封装的数据,长度 46~1500 字节。
帧校验序列(FCS)4CRC32 校验,用于检测帧传输中的错误。

 

IPv4 头部

字段名称长度(位)描述
版本号4指定 IP 协议版本,IPv4 的值为 4。
首部长度4指定 IP 首部的长度(以 4 字节为单位)。
服务类型(TOS)8指示服务质量(如低延迟、高吞吐量)。
总长度16表示整个数据包的长度,包括头和数据。
标识16用于区分不同的分片。
标志3控制分片行为,如“更多分片”标志(MF)。
片偏移13分片数据在原数据包中的偏移量。
生存时间(TTL)8表示数据包在网络中生存的最大跳数。
协议8指示上层协议类型(如 6 表示 TCP,17 表示 UDP)。
头校验和16对 IP 头进行校验,确保数据完整性。
源 IP 地址32表示发送方的 IP 地址。
目的 IP 地址32表示接收方的 IP 地址。
选项(可选部分)可变用于扩展功能,如安全性和时间戳。
数据部分可变上层协议的数据。

IPv6 头部

字段名称长度(位)描述
版本号4指定 IP 协议版本,IPv6 的值为 6。
流量类别8指示数据包的服务类型和优先级。
流标识20用于标识数据流,支持 QoS(服务质量)。
有效载荷长度16数据部分的长度(不包括头部)。
下一个头部8指示上层协议(如 TCP:6,UDP:17,ICMPv6:58)。
跳限制(Hop Limit)8数据包可经过的最大路由跳数,类似 IPv4 的 TTL。
源地址128发送方的 IPv6 地址。
目的地址128接收方的 IPv6 地址。
扩展头部(可选)可变包括路由头、分片头、认证头等。
数据部分可变封装的传输层协议数据。

TCP 头部

字段名称长度(位)描述
源端口号16发送方的端口号。
目的端口号16接收方的端口号。
序列号32数据流中第一个字节的编号。
确认号32表示期望接收的下一个字节序号。
数据偏移4TCP 头的长度(以 4 字节为单位)。
保留位6保留字段,目前未使用。
控制位6标志位,用于连接和数据流控制(如 SYN、ACK、FIN 等)。
窗口大小16用于流量控制,表示接收方可接收的数据量。
校验和16检测头部和数据部分是否完整。
紧急指针16紧急数据的位置,仅在 URG 标志位置位时有效。
选项可变包括 MSS(最大报文段大小)等扩展功能。
数据部分可变封装的应用层数据。

UDP 头部

字段名称长度(位)描述
源端口号16发送方的端口号。
目的端口号16接收方的端口号。
长度16整个 UDP 数据报的长度,包括头部和数据部分。
校验和16用于检测数据报是否完整。
数据部分可变封装的应用层数据。

场景:用户浏览网页的详细过程

1. 用户输入 URL

用户在浏览器中输入 URL(例如 http://www.example.com),并按下回车键。

  • 应用层协议:HTTP
    • 浏览器生成一个 HTTP 请求:
      • 方法:GET
      • URL:http://www.example.com
      • HTTP 版本:HTTP/1.1
      • 其他头部字段(如 User-Agent、Host)。
    • 目标是从服务器获取网页内容。

2. DNS 查询

为了知道 www.example.com 对应的服务器 IP 地址,浏览器首先发起 DNS 查询

  • 应用层:DNS 请求

    • 浏览器检查本地 DNS 缓存。如果没有找到 IP 地址,则构造一个 DNS 查询报文。
    • 查询目标为 www.example.com 的 IP 地址。
  • 传输层:UDP 协议

    • DNS 查询被封装在 UDP 数据段中。
    • UDP 头部包含:
      • 源端口号:随机分配(例如 51000)。
      • 目标端口号:53(DNS 服务器的标准端口)。
  • 网络层:IPv4/IPv6

    • UDP 数据段被封装在 IP 数据包中。
    • IP 头部包含:
      • 源 IP 地址:用户设备的 IP 地址(如 192.168.1.100)。
      • 目标 IP 地址:DNS 服务器的 IP 地址。
  • 链路层:以太网帧

    • IP 数据包被封装在以太网帧中。
    • MAC 头部包含:
      • 源 MAC 地址:用户设备的 MAC 地址。
      • 目标 MAC 地址:路由器的 MAC 地址(下一跳)。
  • DNS 响应

    • DNS 服务器返回 www.example.com 的 IP 地址(如 93.184.216.34),使用类似的封装方式。

 

3. 建立 TCP 连接

得到服务器的 IP 地址后,浏览器与 93.184.216.34 建立 TCP 连接

(1) 三次握手过程
  • 第一次握手:SYN

    • 客户端生成一个 TCP SYN 包,请求建立连接。
    • TCP 头部:
      • 标志位:SYN=1,ACK=0。
      • 序列号:随机生成(如 1000)。
    • IP 头部:
      • 源 IP 地址:192.168.1.100
      • 目标 IP 地址:93.184.216.34
    • MAC 头部:
      • 源 MAC 地址:用户设备的 MAC 地址。
      • 目标 MAC 地址:路由器的 MAC 地址(或下一跳设备)。
  • 第二次握手:SYN-ACK

    • 服务器响应 TCP SYN 包,返回 SYN-ACK。
    • TCP 头部:
      • 标志位:SYN=1,ACK=1。
      • 序列号:随机生成(如 3000)。
      • 确认号:客户端序列号 + 1(即 1001)。
  • 第三次握手:ACK

    • 客户端发送 ACK 包,确认连接已建立。
    • TCP 头部:
      • 标志位:ACK=1。
      • 确认号:服务器序列号 + 1(即 3001)。

4. 发送 HTTP 请求

TCP 连接建立后,浏览器通过 HTTP 协议 向服务器发送网页请求。

  • HTTP 请求内容

    • GET /index.html HTTP/1.1
    • Host: www.example.com
  • 封装过程

    • 传输层:TCP
      • HTTP 数据被封装在 TCP 数据段中。
      • TCP 头部:
        • 源端口号:随机分配(如 51001)。
        • 目标端口号:80(HTTP 的标准端口)。
    • 网络层:IP
      • TCP 数据段被封装在 IP 数据包中。
      • IP 头部:
        • 源 IP 地址:用户设备的 IP 地址。
        • 目标 IP 地址:服务器的 IP 地址。
    • 链路层:以太网
      • IP 数据包被封装在以太网帧中。
      • MAC 头部:
        • 源 MAC 地址:用户设备的 MAC 地址。
        • 目标 MAC 地址:路由器的 MAC 地址。

5. 服务器响应

服务器接收到 HTTP 请求后,处理并返回网页内容。

  • HTTP 响应内容

    • HTTP/1.1 200 OK
    • Content-Type: text/html
    • 网页的 HTML 数据。
  • 封装过程

    • 传输层:TCP
      • HTTP 响应数据被封装在 TCP 数据段中。
      • TCP 头部:
        • 源端口号:80。
        • 目标端口号:51001(客户端的端口)。
    • 网络层:IP
      • TCP 数据段被封装在 IP 数据包中。
      • IP 头部:
        • 源 IP 地址:服务器的 IP 地址。
        • 目标 IP 地址:客户端的 IP 地址。
    • 链路层:以太网
      • IP 数据包被封装在以太网帧中。
      • MAC 头部:
        • 源 MAC 地址:服务器的 MAC 地址。
        • 目标 MAC 地址:下一跳路由器的 MAC 地址。

 

6. 浏览器解析网页

  • 浏览器收到服务器返回的 HTTP 响应后,解封装数据:

    • 链路层: 检查 MAC 地址,确认帧是给自己的,移除 MAC 头。
    • 网络层: 检查 IP 地址,确认包是给自己的,移除 IP 头。
    • 传输层: 检查 TCP 序列号和确认号,按序重组数据,移除 TCP 头。
    • 应用层: 提取 HTTP 数据(网页内容)。
  • 浏览器根据 HTML 内容渲染网页,并显示给用户。

7. 释放连接

当网页加载完成,浏览器和服务器通过 TCP 四次挥手 释放连接。

四次挥手过程
  1. 客户端发送 FIN 包:
    • 表示客户端关闭数据发送。
    • TCP 头部:FIN=1,ACK=1。
  2. 服务器回复 ACK 包:
    • 表示已接收关闭请求。
    • TCP 头部:ACK=1。
  3. 服务器发送 FIN 包:
    • 表示服务器关闭数据发送。
    • TCP 头部:FIN=1,ACK=1。
  4. 客户端回复 ACK 包:
    • 表示已接收服务器的关闭请求。
    • TCP 头部:ACK=1。

http://www.ppmy.cn/news/1555725.html

相关文章

IDEA关闭注释折叠

参考:IDEA关闭注释折叠(注释doc的rendered view模式)_idea toggle rendered view-CSDN博客

使用SourceTree登录gitlab

1.注册GitLab账号 2.创建令牌 个人设置里打开访问令牌》》个人访问令牌 点击创建一个新的令牌,根据需要设置权限,有效期可以不设置 点击,创建一个令牌,会生成一个令牌密码,一定要记录保存好,以后不会再显…

最少前缀操作问题--感受不到动态规划,怎么办怎么办

题目: 标签:动态规划(应该是双指针的,不理解) 小U和小R有两个字符串,分别是S和T,现在小U需要通过对S进行若干次操作,使其变成T的一个前缀。操作可以是修改S的某一个字符&#xff0…

深圳国威HB1910数字IP程控交换机 generate.php 远程命令执行漏洞复现

0x01 产品描述: 深圳国威主营国威模拟、数字、IP 交换机、语音网关、IP 电话机及各种电话机。深圳国威电子有限公司HB1910是一款功能强大的网络通信设备,适用于各种企业通信需求。 0x02 漏洞描述: 深圳国威电子有限公司HB1910数字IP程控交换机generate.php存在远程命令执行…

【愚公系列】《微信小程序与云开发从入门到实践》002-如何设计一款小程序

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…

汽车保养系统+ssm

摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改…

js 应用的几大原则 及 应用实例

文章目录 js 应用的几大原则vue3 中原则应用体现react 原则应用体现 js 应用的几大原则 单一职责原则(SRP) 解释:一个函数或者一个对象应该只有一个职责。这意味着函数应该只做一件事情并且把它做好。例如,一个函数只负责计算两个…

JAVA爬虫获取1688关键词接口

以下是使用Java爬虫获取1688关键词接口的详细步骤和示例代码: 一、获取API接口访问权限 要使用1688关键词接口,首先需要获取API的使用权限,并了解接口规范。以下是获取API接口的详细步骤: 注册账号:在1688平台注册一…