【图解计算机网络】网络协议分层解析

news2024/11/18 8:57:19

网络协议分层解析

  • 网络协议分层
    • 应用层
    • 传输层
    • 网络层
    • 数据链路层
  • TCP/IP分层模型通讯示例

网络协议分层

网络协议分层一共有OSI七层网络协议,TCP/IP四层网络网络协议,还有五层网络协议。

在这里插入图片描述

七层由于分层太多过于复杂,实际应用中并没有使用,而是使用TCP/IP作为参考模型。但是TCP/IP是四层的模型,网络接口层包含了链路层和物理层,因此不利于学习和理解,所以我们在学习网络协议的时候,一般是使用的五层协议模型。

应用层

应用层定义的是应用程序之间用于通信的报文格式,通过定义好格式的报文,按照一定的规则,应用程序就能互相通信,互相交换数据。

比如我们的浏览器与服务器之间通过http报文通信,浏览器通过http报文描述它需要请求的服务器上的接口或资源,以及请求携带的参数,服务器通过http报文给浏览器返回指定的资源或接口响应的数据。

在这里插入图片描述

传输层

应用层只是定义了应用程序通信使用的协议报文的格式,应用层自己没有办法把报文送到对方手上。要把报文送到对方,还要依赖于下层协议,应用层直接依赖的下层协议就是传输层。

传输层提供了应用程序间通讯的能力,应用层只要依赖传输层,就可以实现彼此间的通讯。传输层定义了端口这个概念,应用程序发送数据需要通过端口发送,接收数据也要通过端口接收。当一个数据包到达对方服务器,通过目标端口,就可以知道这个报文要让哪个应用程序接收。然后目标应用层序也可以通过源端口,知道对方的端口是什么。

在这里插入图片描述

网络层

传输层再依赖于下层的网络层。网络层定义了IP地址,IP地址是一台服务器的地址,通过IP地址就可以定位到一台服务器。路由器通过目标IP地址进行网间路由,最终会把数据包路由到目标服务器。

在这里插入图片描述

路由器通过路由表,就可以判断出一个数据包通过哪个网络接口发出去,它的下一跳地址是什么。

在这里插入图片描述

路由表包含:网络目标、网络掩码、网关(也就是下一跳地址)、接口(本机发送数据包到网关要走的网络接口)。

在这里插入图片描述

只要拿到一个目标IP地址,就可以按如下规则在路由表中进行匹配,匹配成功之后,就可以通过接口把数据包发送到下一跳节点。

在这里插入图片描述

可以看到,匹配规则就是拿目标IP地址与该条目的掩码进行按位与计算,得出的结果如果等于网络目标的IP地址,那么就通过该条目的接口,发送数据包到网关(下一跳节点)。

数据链路层

数据链路层定义了MAC地址,有了下一跳的IP地址,还需要通过IP地址取得对应的MAC地址,才能把数据包发送到下一跳节点。通过ARP协议,就可以根据IP地址获得对应的MAC地址。

在这里插入图片描述

当前节点通过广播发送ARP协议报文,ARP协议报文携带待解析的IP地址,当与该IP地址匹配的节点收到该ARP协议报文时,就会返回自己的IP地址。

在这里插入图片描述

通过ARP协议还可以让我们的服务器通过路由器的IP地址得到路由器的MAC地址,就可以把数据包发送到路由器,路由器就可以帮我们把数据包发送出去。

在这里插入图片描述

MAC地址还被交换机用于子网内的通讯,我们的服务器通过ARP协议获得路由器的MAC地址,然后交换机就可以通过路由器的MAC地址帮我们把数据包转发到路由器,路由器帮我们把数据包发送出去。当对方子网的路由器接收到数据包后,也可以通过交换机把数据包发送到目标服务器。

在这里插入图片描述

可以看到,网络协议分层中的每一层都不是独立的,而是上层依赖于下层的。

在这里插入图片描述

TCP/IP分层模型通讯示例

首先应用层组装好应用层协议报文,比如基于http协议通讯的应用则根据http协议的规则组装好http报文。

在这里插入图片描述

然后应用层把该http报文交给传输层,假如传输层是基于TCP协议的,那么就会把http报文切分成一个个数据包,并且在数据包外面包装上TCP协议报文头,里面包含了源端口和目标端口。

在这里插入图片描述

然后传输层再把每个数据包交给网络层,假如网络层使用的是IP协议,会在外面包裹一个IP协议报文头,IP协议头包含了源IP地址和目标IP地址。

在这里插入图片描述

然后网络层再交给链路层,链路层会再外面再包裹一个MAC头,里面携带当前节点的MAC地址和下一跳MAC地址。

在这里插入图片描述

这个报文就彻底的组装好了,然后就交给网卡,网卡就把它转成特定的物理信号(比如电信号)通过网线把它发送出去。

在这里插入图片描述

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

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

相关文章

Flutter 热修复(Shorebird)

Shorebird:https://docs.shorebird.dev/ 我们都知道安卓原生开发,热修复已经不是什么难题。阿里云,腾讯云已经都有现成的SDK可以接入。 然而Flutter开发还一直没有类似热修复的开发库,无意中看到了Shorebird这个平台&#xff0c…

云服务器需要多少流量?评估支持最大并发量?

一 需要购买多大的流量? 项目上线时,我们需要购买多大的流量的带宽?支持多少设备(支持多少并发量,在设计阶段会计算)?作为架构师我们必须清楚与明确。 二 清楚服务器的流量计算 常见的云服务主机…

win32 API 函数

目录 win32 API 的介绍控制台程序COORD结构体GetStdHandle函数GetConsoleCursorInfo函数SetConsoleCursorInfo函数SetConsoleCursorInfo函数GetAsyncKeyState函数 win32 API 的介绍 WIN32API就是Microsoft Windows32位平台的应⽤程序编程接⼝ win32 API 中有许多可以调用的函数…

【ZBrush】制作章鱼练习 02——足部

本篇效果 步骤 笔刷工具选择“Move” 按下X键激活对称,然后往外拉 这里拉出6条腿的基底 笔刷工具选择“CurveTube” 绘制腿,可以发现此时腿部起始点和终点的粗细一样,但是真实的章鱼腿部应该是根部较粗,脚部较细 因此我们先回撤一…

网络流问题详解

1. 网络最大流 1.1 容量网络和网络最大流 1.1.1 容量网络 设 G(V, E)是一个有向网络,在 V 中指定了一个顶点,称为源点(记为 Vs),以及另一个顶点,称为汇点(记为 Vt);对…

淘宝/天猫获取sku详细信息 API,item_sku-获取sku详细信息

淘宝/天猫获取sku详细信息 API,item_sku-获取sku详细信息 示例: {"seller_rate": true,"timeout_action_time": "2000-01-01 00:00:00","iid": "152e442aefe88dd41cb0879232c0dcb0","num": 10,"…

网络工程师---第七天

光纤分类: 光纤熔接技术: 光纤熔接技术主要是用熔纤机将光纤和光纤或光纤和尾纤连接,把光缆中的裸纤和光纤尾纤熔合在一起变成一个整体,而尾纤则有一个单独的光纤头。 曼彻斯特编码: 曼彻斯特编码也称为相位编码&…

Unity HDRP Water Surface 水系统 基础教程

Unity HDRP Water Surface 水系统 基础教程 Unity Water SurfaceUnity 项目创建Unity Water Surface:Ocean(海洋)简介Ocean:Transform、GeneralOcean:Simulation(仿真模拟)Ocean:Sim…

protobuf抓包,读包

protobuf抓包 有时候会遇到使用protobuf协议的http请求, 而protobuf封包后的二进制几乎不可读, 如何调试呢 protobuf就是类似一个json的数据传输协议, 相比json更快, 体积更小; 缺点就是不可读 Content-Type: application/x-protobuf数据大概是下面这样的(浏览器开发者工具 自…

Unity之圆环slider

一、参考文章 Unity_圆环滑动条(圆形、弧形滑动条)_unity弧形滑动条-CSDN博客 此滑动条拖动超过360后继续往前滑动值会从0开始,正常我们超过360度时不可在滑动。 二、 超过360度不可滑动问题解决 参考HTML文章制作: https://www.c…

[svelte]属性和逻辑块

属性 / Default values • Svelte 教程 | Svelte 中文网 属性 Declaring props 到目前为止,我们只处理了内部状态——也就是说,这些值只能在给定的组件中访问。 在任何实际应用程序中,都需要将数据从一个组件向下传递到其子组件。为此&…

Linux安装不在软件商店,安装外部包(如loki.rpm或<包>.deb)结尾程序

如图所示有时我们想要了解更多信息所以就必须了解 Centos 7外部包管理 当使用 CentOS 7 的 RPM 命令时,从入门到进阶,以下是一些高频用法示例,以帮助你更好地使用和管理软件包: 入门级别: 安装软件包: 使…

代码随想录训练营Day 27|Python|Leetcode|122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获…

基于SpringBoot+Vue的物业管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:28张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue 后端技术:SpringBoot 功能简介 项目获取关键字:物业…

从技术层面探讨小程序智能名片商城系统中的AI、ERP、OA、SCRM技术应用

随着信息技术的迅猛发展,智能名片商城系统已逐渐成为现代商业运营不可或缺的重要工具。AI、ERP、OA、SCRM等多种技术的融合应用,不仅提升了商城的运营效率和用户体验,更为商家带来了前所未有的商业价值。下面,我们将结合具体案例&…

springboot 启动非web应用

问题描述 非web应用,启动完成自动退出 问题原因 因为任务完成了,所以系统退出了。需要给spring一个任务,而且这个任务无法解决 包括: web定时任务一个无法完成的任务 解决方案 其中一个是: 非web不自动退出 注意…

jvm-接口调用排查

问题描述 线上碰到个问题,某个接口调用时间特别长,线上调用接口直接报gateway time out 分析处理 1、先关闭该功能 (该功能是非核心功能) 2、本地起服务连环境排查,发现本地正常。并且线上其他接口正常,…

c++补充

构造函数、析构函数 #include <iostream> using namespace std;// 构造函数、析构函数 // --- "构造函数"类比生活中的"出厂设置" --- // --- "析构函数"类比生活中的"销毁设置" --- // 如果我们不写这两种函数&#xff0c;编译…

Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)

文章目录 一、JavaFx介绍1、JavaFx简介2、可用性3、主要特征4、UI控件 二、JavaFx概述1、JavaFx结构图2、JavaFx组件&#xff08;1&#xff09;舞台&#xff08;2&#xff09;场景① 场景图② 节点 &#xff08;3&#xff09;控件&#xff08;4&#xff09;布局&#xff08;5&a…

Xinstall:让URL打开App变得如此简单

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;在使用App的过程中&#xff0c;我们常常会遇到一些烦恼。比如&#xff0c;当我们通过一个网页链接想要打开对应的App时&#xff0c;往往需要先复制链接&#xff0c;然后在App中粘贴&a…