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

网络协议分层解析

  • 网络协议分层
    • 应用层
    • 传输层
    • 网络层
    • 数据链路层
  • 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地址。

在这里插入图片描述

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解析deb与rpm文件的操作技巧

欢迎来到我的博客,代码的世界里,每一行都是一个故事 解析deb与rpm文件的操作技巧 前言deb文件介绍与操作deb 文件介绍特点和用途在 Debian、Ubuntu 系统中使用 deb 文件进行软件安装和管理安装 deb 文件处理依赖问题更新和卸载使用 APT 进行管理 deb文件…

学习笔记:Vue3(图片明天处理)

文章目录 1.概述1.1定义1.2特性1.3组合式API 2.基本用例-项目搭建3.项目目录介绍3.1概述3.2查看文件 4.组合式API4.1概述4.2新的API风格4.2.1概述4.2.2写法4.2.3基本用例-Setup选项使用4.2.4基本用例-语法糖写法(重点)4.2.5执行时机4.2.6代码特点 4.3响应…

C++从入门到精通——模板

模板 前言一、泛型编程二、函数模板函数模板的概念函数模板格式示例 函数模板的原理函数模板的实例化隐式实例化显式实例化示例 auto做模板函数的返回值模板参数的匹配原则总结 三、类模板类模板的定义格式类模板的实例化 前言 C模板是C语言中的一种泛型编程技术,可…

《星尘传说》游戏完整源码(源码+引擎+客户端+服务端+教程+工具),云盘下载

《星尘传说》是一款奇幻类大型多人在线角色扮演电脑客户端游戏,该游戏设置有两大阵营,六个国家以及22个职业,采用3D卡通风格, 有兴趣的,可以架设个外网,让大家一起玩。 《星尘传说》游戏完整源码&#xff0…

采用分治法求含n个实数序列中的最大元素和次大元素(C语言)

目录 实验内容: 实验过程: 1.算法设计 2.程序清单 3.复杂度分析 4.运行结果 实验内容: 设计一个程序,采用分治法求含n个实数序列中的最大元素和次大元素,并分析算法的时间复杂度。 实验过程: 1.算法…

如何增强Java GCExcel API 的导入和导出性能

前言 GrapeCity Documents for Excel (以下简称GcExcel) 是葡萄城公司的一款服务端表格组件,它提供了一组全面的 API 以编程方式生成 Excel (XLSX) 电子表格文档的功能,支持为多个平台创建、操作、转换和共享与 Microsoft Excel 兼容的电子表格&#xf…

[计算机效率] 网站推荐:图片编辑类

4.4 图片编辑类 在数字化时代,图片编辑已成为我们生活和工作中不可或缺的一部分。为了帮助大家更高效、更专业地进行图片编辑,这里推荐一系列优质的在线图片编辑网站。 这些网站不仅拥有直观易用的操作界面,更提供了丰富的编辑功能和素材资源…

jenkins 部署 vue 项目

jenkins 部署 vue 项目 环境 系统:CentOS7.9 Jenkins:最新LTS版本 nginx: 1.24.x gitLab: 打包机:jenkins所在服务器 目标机器:nginx所在服务器 jenkins部署配置 关键脚本 #node -v #已经安装node_module就无需执行install安…

快排非递归与计数排序

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 收入专栏:初阶数据结构_LaNzikinh篮子的博客-CSDN博客 文章目录 前言一.快速排序非递归二.数据结构栈与内存栈…

【埋点探针】微信小程序SDK安装

一、下载微信小程序SDK埋点代码 选择Wechat,复制sdk代码 在项目根目录下,创建sdk文件,webfunny.event.js 二、在app.js文件中,引入埋点SDK代码 首先引入sdk代码 require("./webfunny.event.js")引入兼容代码&#x…

职业技能鉴定服务中心(新闻系统+证书查询系统)

后端采用ThinkPHP8,最新tp框架 前端采用divcss布局 数据库采用MySQL 采用三种技术实现新闻系统和证书查询系统 源码:git clone https://gitee.com/3539949703/certificate-website.git 效果图如下:

一套在线画图工具(突突图 Procviz)

突突图(Procviz)是一款面向跨平台作图平台。支持流程图、思维导图、框架图、组织架构图、ER图、网络拓扑图等。实现了多团体同时协作,实时同步,解决跨地域合作作图的问题。平台提供了丰富的模板和素材库,轻松完成作图,效率翻倍。 …

docker pull速度慢解决办法

在使用 Docker 时遇到拉取镜像速度慢的问题,可以使用国内的镜像源可以提高下载速度。 使用阿里镜像加速器 Docker 配置文件位于 /etc/docker/daemon.json。如果文件不存在,可以手动创建它。将以下内容添加到配置文件中: 整体复制执行命令&…

【设计模式】单例模式|最常用的设计模式

写在前面 单例模式是最常用的设计模式之一,虽然简单,但是还是有一些小坑点需要注意。本文介绍单例模式并使用go语言实现一遍单例模式。 单例模式介绍 简介 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。 使用场景&#…

web自动化系列-selenium的3种弹框操作(十二)

在进行功能测试时 ,经常会遇到出现各种的弹出的提示 ,比如删除数据给出提示 、做某个操作时也会弹框给出一些友好提示 ,因为这些弹框都是做web操作时的一些常用组件 ,所以,selenium就不得不支持这些组件 。 1.弹框介绍…

HarmonyOS开发环境搭建 移动开发 鸿蒙开发 ArkTS

📜目录 💡 环境搭建 🚀安装nodejs 🤵安装ohpm 🍔安装SDK 💥Emulator安装 🌶️新建ArkTs项目 🏆️ArkTS语言 ✨️基本语法 🎈 声明式UI描述 🍱组件 …

【C语言__函数栈帧的创建和销毁__复习篇9】

目录 前言 一、知识补充 二、分析创建和销毁的过程 三、前言问题回答 前言 本篇主要讨论以下问题: 1. 编译器什么时候为局部变量分配的空间 2. 为什么局部变量的值是随机的 3. 函数是怎么传参的,传参的顺序是怎样的 4. 形参和实参是什么关系 5. 函数…

【Linux 进程间通信】管道(三)

文章目录 1.管道的五种特征2.管道的四种情况 1.管道的五种特征 ①🍎匿名管道只能用于有血缘关系的进程之间进行通信(爷孙进程之间可以进行通信),常用于父子之间进行通信; ②🍎管道内部,自带进…

若依后台管理系统(ruo-web)修改主题色,更改颜色值 (2024-04-22)

1、修改文件 setting.js 2、修改的文件路径 ruoyi-web/src/store/modules/setting.js 3、默认主题颜色 #409EFF,改新的颜色值,刷新就好了 4、修改主题颜色 还可以用户自己更换,但这个更换只是存储在浏览器中,清除缓存之后还是…

【ARM 裸机】C 语言 led 驱动

前面刚学习了汇编 led 驱动的编写和验证,现在开始就要进入 C 语言 led 驱动编写与验证了 ! 1、C 语言运行环境构建 1.1、设置处理器模式 使 6ULL 处于 SVC 模式下,之前已经提到了处理器的九种模式,参考:【ARM 裸机】汇编 led 驱…