HCIA项目实践---网络层次常见的三种模型

2.2 网络的层次

2.2.1 常见的三种网络层次划分

img应用层

(1)OSI 七层模型

  1. 物理层:处于最底层,主要负责处理物理介质上的信号传输,如电缆、光纤、无线等。其作用是定义物理设备的接口标准、信号的编码方式、传输速率等,确保数据能在物理介质上进行传输。

  2. 数据链路层:负责将物理层接收到的信号转换为数据帧,实现二进制和电信号的转换,并进行差错检测和纠正。它通过 MAC 地址实现本地网络中的数据传输,将数据帧从一个节点传输到另一个直接相连的节点,还能进行流量控制,确保数据传输的可靠性。

    (MAC:介质访问控制层 LLC:逻辑链路控制层)

  3. 网络层:主要功能是为数据在不同网络之间传输选择路径。它通过 IP 地址来标识网络中的设备,将数据封装成数据包,根据路由表决定数据包的转发路径,实现网络之间的通信。(根据IP实现逻辑寻址)

  4. 传输层:负责在不同主机上的应用程序之间提供可靠或不可靠的端到端通信。(应用到应用)常见的协议有TCP 和 UDP,TCP 提供可靠的面向连接的传输服务,UDP 提供不可靠的无连接传输服务,传输层确保数据的正确传输和流量控制。

    (端口号:传输层的地址,用来区分和标定不同的应用,由16位二进制构成,1–65535,其中1到1023是知名端口号)

  1. 5 会话层:用于建立、管理和终止网络应用和网络服务器之间的会话。它负责在不同主机的应用程序之间建立逻辑连接,协调数据的传输,如确定会话的开始和结束,处理会话的同步和恢复等。

  2. 6 表示层:主要处理数据的表示和转换,包括数据的加密解密、压缩解压缩、格式转换等,确保不同系统之间能够正确地理解和处理数据。

  3. 7 应用层:为用户提供直接的网络服务接口,将抽象语言转换成编码,如 HTTP、FTP、SMTP 等协议都工作在这一层。它负责处理应用程序的具体业务逻辑,与用户进行交互,实现各种网络应用功能。

img

img

(2)TCP/IP 四层模型

  1. 网络接口层(数据链路层-帧 物理层:比特流):对应 OSI 模型的物理层和数据链路层,负责将数据转换为可在物理介质上传输的信号,并处理物理介质上的信号接收和发送,实现与物理网络的连接。

  2. 网络层(包):与 OSI 模型的网络层功能类似,主要负责处理 IP 地址和路由选择,将数据包从源主机传输到目标主机,实现不同网络之间的通信。

  3. 传输层(段):与 OSI 模型的传输层功能相同,提供端到端的通信服务,确保数据在不同主机的应用程序之间的正确传输,通过 TCP 和 UDP 协议实现可靠或不可靠的传输。

  4. 应用层(报文):包含了各种网络应用协议,如 HTTP、FTP、DNS 等,为用户提供各种网络应用服务,直接与用户和应用程序进行交互,实现网络应用的具体功能。

(3)TCP/IP协议五层模型

  1. 应用层:为用户提供网络应用服务,直接与用户和应用程序交互。存在封装,封装取决于应用层协议。

  2. 传输层:在不同主机的应用程序间实现可靠(TCP)或不可靠(UDP)的数据传输。

  3. 网络层:利用IP 地址进行寻址和路由选择,实现不同网络间数据包传输。

  4. 数据链路层:将数据包封装成帧,通过 MAC地址实现相邻节点间数据传输与差错控制。(以太网协议)

  5. 物理层:负责在物理介质上进行信号的传输与接收,定义物理设备特性。

补充(1)以太网Ⅱ型帧

        以太网二型帧是以太网中常用的一种数据帧格式,由目的 MAC 地址、源 MAC 地址、类型字段、数据和帧校验序列(FCS)等字段组成。目的和源 MAC 地址用于标识收发设备,类型字段(type)指的是上一层所使用的协议类型,也就是网络层,数据字段承载实际数据,FCS 用于差错检测。

FCS:就是帧校验序列,它基于循环冗余校验算法(CRC)生成,用于检测数据在传输过程中是否发生错误,保障数据传输准确性。

补充(2)TCP和UDP的定义

TCP

        TCP 即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。在数据传输前需通过三次握手建立连接,传输中采用滑动窗口等机制保障数据准确有序,结束时四次挥手断开连接,常用于对数据准确性要求高的场景。

UDP

        UDP 即用户数据报协议,是一种无连接的传输层协议。它不事先建立连接就直接发送数据报,不保证数据可靠到达,也不进行排序和重传。具有开销小、传输速度快的特点,常用于对实时性要求较高、可容忍一定数据丢失的场景,如视频流、音频通话等。

补充(3)什么是面向连接
  面向连接就是在正式传输数据之前,先建立一个点到点的连接。是一种在数据通信中广泛采用的模式。在数据传输前,通信双方会经历一个建立连接的过程,像 TCP 协议通过三次握手来确认双方状态与能力,协商传输参数。连接建立后,双方进入数据传输阶段,此过程中连接会持续维持,保障数据能有序、可靠地传送,还可实现流量控制与差错处理。当数据传输完毕,双方再通过特定步骤断开连接,如 TCP 的四次挥手,以释放资源。

补充(4)TCP和UDP协议的区别

一、TCP是面向连接的协议,传输前要三次握手建连,结束时四次挥手断连;UDP是无连接的协议,随时收发数据。

二、TCP传输是可靠的,有确认、重传、排序、流控机制保证数据完整准确;UDP不可靠,传输不保证,无纠错机制,可能丢包、乱序,也就是“尽力而为”。

三、TCP可以实现流控,基于滑动窗口机制,接收方反馈窗口大小,发送方据此调整速率实现流控; UDP只顾发送,不考虑接收方状况,无法流控。

四、TCP可以实现分段,会根据 MTU 将数据分成合适大小的段,还会编号按序传输,确保可靠交付;而UDP不能实现分段,将应用层数据原样封装。

五、TCP占用资源较大,速度较慢; UDP占用资源较小,速度快。

补充(5)TCP(传输控制协议)首部格式表

在这里插入图片描述

 #每部分的解释源端口号(16 位):标识发送数据的应用程序端口。目的端口号(16 位):标识接收数据的应用程序端口。序号(32 位):标记本报文段在发送方数据字节流中的位置。确认序号(32 位):期望收到对方下一个报文段的第一个数据字节序号。首部长度(4 位):指示 TCP 首部长度,以 4 字节为单位。保留(6 位):保留为今后使用,目前置为 0。URG:紧急指针有效标志位。ACK:确认序号有效标志位。PSH:推送标志,提示接收方尽快将数据交付应用层。RST:重置连接标志位。SYN:同步序号,用于建立连接。FIN:发送方完成数据发送,请求释放连接。窗口大小(16 位):告知对方自己的接收窗口大小,用于流量控制。校验和(16 位):检测 TCP 首部和数据在传输中是否出错。校验数据完整性。紧急指针(16 位):配合 URG,指出紧急数据末尾在报文段中的位置。选项:可选字段,用于实现额外功能,如最大报文段长度等。数据:承载应用层实际要传输的数据。

补充(6)UDP头部格式

img

  • 目标和源端口:主要是告诉 UDP 协议应该把报文发给哪个进程。

  • 包长度:该字段保存了 UDP 首部的长度跟数据的长度之和。

  • 校验和:校验和是为了提供可靠的 UDP 首部和数据而设计,防止收到在网络传输中受损的 UDP包。

补充(7)网络数据封装TCP,UDP适用

网络数据封装从应用层开始,逐步向下各层进行:

  1. 应用层:生成原始数据,如网页内容、邮件信息等。

  2. 传输层:接收应用层数据,添加 TCP 或 UDP 首部。TCP 会分配源和目的端口号等,建立可靠连接;UDP 仅添加端口号等简单信息,提供无连接服务。

  3. 网络层:获取传输层数据单元,添加 IP 首部,包含发送端和接收端 IP 地址等,用于网络路由寻址。

  4. 数据链路层:得到网络层数据报,添加以太网首部(含 MAC 地址等)和尾部(如循环冗余校验信息),封装成数据帧,便于在局域网传输。 最终封装好的数据帧通过物理层转化为比特流在网络介质上传输。

什么是MSS?(上图数据那一部分,最大理论值为:MTU-20-20=1460字节)

        MSS 即最大段大小,是 TCP 协议里的概念。它规定了 TCP 连接中,一个报文段所能携带数据的最大字节数,不包含 TCP 和 IP 首部。在建立连接时,通信双方会协商确定 MSS 值,一般依据链路 MTU 计算得出,合适的 MSS 可提升传输效率。

        这个参数需要在TCP三次握手时,前两个SYN包中进行协商,如果双方不同,则需要按照小的来执行,减少分片带来麻烦。

补充(8)TCP三次握手和四次挥手(超级重点)

三次握手

SYN 是同步序列编号,它是 TCP 首部中的一个控制位,取值为 1 时表示该 TCP 报文段用于同步序号,主要在建立 TCP 连接时发挥作用。

img

TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;

三次握手的过程
客户端给服务器发送一个SYN段(在 TCP 标头中 SYN 位字段为 1 的 TCP/IP 数据包), 该段中也包含客户端的初始序列号(Sequence number = x)。(CP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。)
TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。
TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。

四次挥手

img

四次挥手过程
客户端发送第一次挥手,之后由 ESTABLISHED 状态转为 FIN_WAIT1 状态; 服务器收到客户端的第一次挥手之后,发送第二次挥手给服务器,服务器进入 CLOSE_WAIT 状态,等待服务器自身的 SOCKET 关闭等处理;
客户端收到服务器的第二次挥手,进入 FIN_WAIT2 状态,等待服务器关闭;
服务器发送第三次挥手,然后进入 LAST_ACK 状态; 客户端收到第三次挥手,发送第四次挥手,客户端进入 TIME_WAIT 状态
服务器收到第四次挥手,进入 CLOSED 状态,客户端等待 2MSL 后,进入 CLOSED 状态

补充:TCP连接状态解释

CLOSED关闭状态,表示当前主机没有正在运行的传输连接
LISTEN监听状态,表示服务器正在等待新的传输连接进入
SYN-RCVD表示主机已收到一个连接请求,但尚未确认
SYN-SENT表示主机已经发出一个连接请求,等待对方确认
ESTABLISHED传输连接建立,双方进入正常数据传输状态
FIN-WAIT-1(主动关闭)主机已经发送关闭连接请求,等待对方确认
FIN-WAIT-2(主动关闭)主机已收到对方关闭连接确认,等待对方发送关闭连接请求
TIMED WAIT完成双向传输连接关闭,等待所有分组消失
CLOSING双方同时尝试关闭传输连接,等待对方确认
CLOSE WAIT(被动关闭)收到对方发来的关闭连接请求,并已确认
LAST ACK(被动关闭)等待最后一个关闭连接确认,并等待所有分组消失

案例:企业员工不能访问娱乐节目,讲述原理

企业借助 AC(无线控制器)设备和 TCP 原理限制员工访问娱乐节目。

        AC 设备作为网络管理核心,可集中管控接入网络的无线接入点和终端。在员工发出访问请求时,该请求以 TCP 报文形式传输。AC 设备会分析 TCP 报文首部信息,如源 IP(员工设备)、目的 IP(娱乐节目网站)和端口号。一旦发现目的 IP 对应娱乐网站或端口号用于娱乐服务,AC 设备依据预设策略拦截该 TCP 连接的建立,阻断报文传输,使员工无法与娱乐节目网站完成 TCP 三次握手,从而无法访问相关内容。

补充(9)IP协议

img

4位版本:指定IP协议的版本(IPv4/IPv6),对于IPv4来说,就是4。

16位总长度:IP报文(IP报头+有效载荷)的总长度,用于将各个IP报文进行分离。

8位生存时间:数据报到达目的地的最大报文跳数,一般是64,每经过一个路由器的转发,TTL -= 1,一直减到0还没到达,那么就丢弃报文,这个字段主要是用来防止出现路由循环。

16位首部校验和:使用CRC进行校验, 来鉴别头部是否损坏。

32位源IP地址:表示发送端所对应的IP地址。

32位目的IP地址:表示接收端所对应的IP地址。

TCP是6,UDP是17

        该字段用于标识 IP 数据报所承载的上层协议。当取值为 6 时,表示此 IP 数据报封装的是 TCP 协议数据,TCP 提供可靠传输;取值为 17 时,意味着封装的是 UDP 协议数据,UDP 则是无连接、高效但不保证可靠的传输协议。

IP 协议为什么要分片

        是不同网络的最大传输单元(MTU)有差异,像以太网 MTU 一般 1500 字节,当大尺寸 IP 数据报从大 MTU 网络传向小 MTU 网络,就得分片才能继续传输。 二是能提升传输效率与可靠性,小数据单元出错概率低,出错时只需重传出错分片。 三是可适配不同网络设备处理能力,减轻设备处理负担,保证数据顺利传输。

经过网络层的封装,数据最终会交付给下层的数据链路层。由数据链路层进行网络上的转发。可是,数据链路层由于物理特征的原因,一般无法转发太大的数据,即数据链路层一次可以转发到网络的报文大小是有限制的(一般为1500,MTU,最大传输单元)。

什么是MTU?

        MTU 即最大传输单元,是数据链路层中一个关键概念,指数据链路层设备能一次传输的最大数据字节数。不同网络类型 MTU 不同,如以太网 MTU 常为 1500 字节。节。当上层数据长度超 MTU,需进行分片处理。MTU 值的大小会直接影响网络传输的效率和性能,合理设置 MTU 能优化数据传输。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案

建筑设计公司在项目执行过程中,会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求:为了方便内部管理和向客户交付完整的设计方案,公司需要将每个项目文件…

Python:凯撒密码

题目内容: 凯撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符,对应关系如下: 原文:A B C D E F G H I J K L M N O P Q R …

亚信安全正式接入DeepSeek

亚信安全致力于“数据驱动、AI原生”战略,早在2024年5月,推出了“信立方”安全大模型、安全MaaS平台和一系列安全智能体,为网络安全运营、网络安全检测提供AI技术能力。自2024年12月DeepSeek-V3发布以来,亚信安全人工智能实验室利…

2024BaseCTF_week4_web上

继续!冲冲冲 目录 圣钥之战1.0 nodejs 原型 原型链 原型链污染 回到题目 flag直接读取不就行了? 圣钥之战1.0 from flask import Flask,request import jsonapp Flask(__name__)def merge(src, dst):for k, v in src.items():if hasattr(dst, __geti…

【Java 面试 八股文】Redis篇

Redis 1. 什么是缓存穿透?怎么解决?2. 你能介绍一下布隆过滤器吗?3. 什么是缓存击穿?怎么解决?4. 什么是缓存雪崩?怎么解决?5. redis做为缓存,mysql的数据如何与redis进行同步呢&…

使用 Dockerfile 构建自定义 Nginx 镜像并集成 nginx_upstream_check_module

目录 1. 为什么需要自定义 Nginx 镜像? 2. Dockerfile 解析 2.1 基础镜像选择 2.2 安装依赖 2.3 下载并解压 Nginx 源码 2.4 应用补丁并编译 Nginx 2.5 暴露端口并设置启动命令 3. 构建并运行自定义 Nginx 镜像 3.1 构建镜像 3.2 运行容器 3.3 健康检测配…

Python办公自动化之PDF

python版本:3.13.1 开发工具:pycharm 安装三方库:pypdf2 、pdfplumber、pymupdf 一、从PDF中提取文字 用Python从PDF中提取文字-CSDN博客 二、从PDF中提取表格 用Python从PDF中提取表格-CSDN博客 三、拆分和合并PDF文件 用Python拆…

ds-download-link 插件:以独特图标选择,打造文章下载链接

源码介绍 “ds-download-link”插件为 WordPress 网站提供了在文章编辑器中添加下载链接的功能,每个下载链接都支持图标选择,并能将这些链接以美观的样式展示在文章前端页面。以下是该插件的主要特性和功能: 后台功能 在文章编辑器下方添加…

实操部署DeepSeek,添加私有知识库

目录 一、环境介绍 PowerShell版本: wsl版本: 虚拟机版本: 本机IP: 虚拟机IP: 容器宿主机IP(host.docker.internal): Docker版本: Docker Compose版本&#xff…

一致性Hash算法延伸至Redis分片扩容使Lua脚本失效如何解决

文章部分内容来源:小林coding 问题场景:我们需要用Lua脚本,并且这个Lua脚本需要用到两个Key,但这两个Key必须命中同一台机器才可以,不然Lua脚本就会执行失败。如果集群扩容可能会导致两个Key落到不同的节点上导致Lua脚…

macMini16G内存M4芯片 DeepSeek-r1本地化部署+chatbox三步走

DeepSeek本地化部署,有利于保护隐私,调用也方便。 大体来说分为3步:安装ollama,获取deepseekR1模型,chatbox设置并调用。 1.下载ollama客户端,并安装。 https://ollama.com/download 2.获取deepseekR1模型…

8.flask+websocket

http是短连接,无状态的。 websocket是长连接,有状态的。 flask中使用websocket from flask import Flask, request import asyncio import json import time import websockets from threading import Thread from urllib.parse import urlparse, pars…

港中文腾讯提出可穿戴3D资产生成方法BAG,可自动生成服装和配饰等3D资产如,并适应特定的人体模型。

今天给大家介绍一种名为BAG(Body-Aligned 3D Wearable Asset Generation)的新方法,可以自动生成可穿戴的3D资产,如服装和配饰,以适应特定的人体模型。BAG方法通过构建一个多视图图像扩散模型,生成与人体对齐…

用php tp6对接钉钉审批流的 table 表格 明细控件 旧版sdk

核心代码 foreach ($flows[product_list] as $k>$gift) {$items_list[] [[name > 商品名称, value > $gift[product_name] ?? ],[name > 规格, value > $gift[product_name] ?? ],[name > 数量, value > $gift[quantity] ?? ],[name > 单位, v…

结构形模式---桥接模式

概念 桥接模式是一种结构化模式,是将一个大类或者一系列的紧密相关的类拆分为抽象和现实两个独立部分的层次结构,通过引用独立层次对象的组合实现类。 桥接模式可以将庞杂类拆分为几个类层次结构。 此后, 你可以修改任意一个类层次结构而不…

【Oracle篇】浅谈执行计划中的多表连接(含内连接、外连接、半连接、反连接、笛卡尔连接五种连接方式和嵌套、哈希、排序合并三种连接算法)

💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…

服务器使用宝塔面板Docker应用快速部署 DeepSeek-R1模型,实现Open WebUI访问使用

Deepseek这段时间非常火,最新推理模型Deepseek R1,都想装上试一试,特别是部署到服务器教程网上一堆教程好像没几个部署成功靠谱的,先说服务器上下载Ollama就难倒一堆人,每次都超时。今天终于在宝塔看到一篇 应用安装文…

win10 llamafactory模型微调相关②

微调 使用微调神器LLaMA-Factory轻松改变大语言模型的自我认知_llamafactory 自我认知-CSDN博客 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 样本数据集 (数据集管理脚本处需更改,见报错解决参考1) 自我认知微…

华硕笔记本怎么一键恢复出厂系统_华硕笔记本一键恢复出厂系统教程

华硕笔记本怎么一键恢复出厂系统? 华硕一键恢复出厂系统是一个安全、高效、方便的恢复方式,让您轻松还原出厂设置,以获得更好的系统性能。如果您的华硕电脑遇到问题,可以使用华硕一键恢复出厂系统功能。下面小编就教大家华硕笔记本…

TongETLV3.0安装指引(by lqw)

文章目录 安装准备系统环境要求和端口jdk版本要求安装包磁盘要求安装脚本对系统配置的影响 系统配置vm.max_map_count 至少为 262144,且设置 vm.overcommit_memory 参数值为 1使用 TongETL 的 Linux 用户需要设置最大文件打开数为 65536用户需要有sodo权限。安装net…