网络协议(TCP/IP模型)

目录

网络初识

网络协议

协议分层

协议拆分

分层

协议分层的优势

1.封装效果

2.解耦合 

TCP/IP五层模型

 协议之间配合工作(详解)


网络初识

网络核心概念:

局域网:若干电脑连接在一起,通过路由器进行组网。

广域网:把很多很多局域网进一步相连,构成更复杂的网络体系。

路由器/交换机:组建网络的基础设备。

IP地址:区分主机。

交换机:区分主机上的不同程序。

网络协议

网络协议,是通信双方对于通信规则的约定,这个约定一定是得到双方认可的约定。进行网络通信的时候,一定需要通信协议的,即使两个用来通信的主机设备,不同的软件,不同的操作系统,不同的应用 程序,即使上述内容不同,通信也能够正确进行,进行网络通信 的时候,通信协议是非常关键的环节。

协议分层

协议拆分

网络通信是一个非常复杂的事情,这个过程中会涉及到非常多的细节问题,如果使用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂。此时就可以把一个功能复杂的协议拆分成多个功能更单一的协议。

一个复杂的方法,可以拆分为多个方法。

一个复杂的类,可以拆分成多个类。

一个复杂的文件,可以拆分成多个文件。

拆分是为了管理复杂程度,不让这个东西太复杂,让每个部分负责一个功能。

 对协议进行拆分后,就要进行分类,此时就要进行分层的组织结构。

分层

协议分层,就是把很多协议按照功能分成不同的层级,每个层级都有对应的主线任务,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务,但是不能越级调用。

协议分层的优势

1.封装效果

某一层协议,不需要知道其他协议的细节,降低学习成本。

例如两个人在打电话时,不需要知道电话通信的原理,只需要拨号通信即可。

2.解耦合 

任意层次的协议都是可以灵活替换的。这就给整个网络体系的升级和迭代带来了很大的便利。

 同样对于打电话的人来说,可以使用不同的语言协议来进行通话,对整个通话体系的功能来说没有变化,都是一样进行通信。

TCP/IP五层模型

现实世界采取的网络分层模型,目前接触到的网络大部分都是TCP/IP模型,4G/5G通信有着一套专门的模型协议。

五层协议

物理层:关注的是硬件上的相关约定,如网线,网口等物理设备的约定。

数据链路层:关注的是通信过程中两个相邻节点之间的通信。

网络层:关注的是通信中通信路径的规则,规划出的路径就决定了数据要经过那些节点,是“点到点的的传输”。

传输层:关注的是通信双方的“起点”和“终点”,是“端到端的传输”。

应用层:和具体的应用程序直接相关,比如传输的数据作用和意义是这一层关注的。

 协议之间配合工作(详解)

协议的层和层之间,上层协议调用下层协议,下层协议给上层提供服务。

假设A给B发送消息,利用上面模型进行分析:

第一层——应用层:A通过聊天软件给B发送hello,点击发送,聊天软件里就会有一个应用层的网络协议,规定了传输数据的格式,聊天程序就会把上述要传递的内容组织成“应用层数据包”,并且是按照应用层协议来进行组织

网络上传输的数据,本质上是二进制的字符串,更准确的来说是二进制的bit流,因此,要传输的发送人/接收人/消息时间/内容....就要组织到一个字符串中,组织的时候就需要按照一定的格式来组织。不同的协议数据组织的格式不同

此时,,聊天软件把数据组织后(发送人/接收人/发送时间/发送正文):

 这样组织后的数据包就是一个结构化的数据(包含很多属性和字段)。

结构化数据 -> 字符串/二进制字符串,称为序列化。

字符串/二进制字符串 -> 结构化数据,称为反序列化。

 第二层——传输层:通过应用层协议得到的应用层数据包有了,应用层接下来就要把数据交给传输层,传输层提供了api(这种api称为socket api),让应用程序去调用,通过调用这样的api,就会把刚才应用层的数据交给传输层

传输层拿到应用层数据包之后,就会对这个数据包进一步封装,构成传输层数据包。

传输层有两个典型的协议TCP和UDP,这里以UDP作为传输层协议。

此时使用UDP协议进行封装,会在数据上加上UDP的报头,报头中包含着UDP的相关属性(发送人和收件人的端口号),原来的数据包成为了UDP数据包的载荷:

传输层构建数据完成之后,会继续把数据包交给网络层,这个过程是传输层调用网络层提供的api,这个调用过程都是系统内核负责。 

 第三层——网络层:UDP数据包进入网络层后,会被网络层协议进行进一步封装。网络层协议最典型的是IP协议,同样的在数据包上加入IP报头(包含发送者的IP地址和收件人的IP地址),UDP数据包作为IP数据包的载荷。

 数据封装完成,,进一步调用数据链路层的api,把上述IP数据包,交给数据链路层协议,同样由系统内核完成。

第四层——数据链路层:典型的协议:以太网。

拿到上面的IP数据包后对数据进行进一步的封装:

 数据封装完成就进入到了网卡驱动中,然后进行发送。

第五层——物理层:以太网帧,本质上还是二进制数据,通过硬件设备把上述二进制数据转成光信号/电信号。电磁波才会进行真正的发射。

在上述层次中不断包装数据,不停的加数据报头的过程,称为“封装”。

上述数据并不是A发送后直接到达B,而是要先到达和A连接的交换机/路由器,经过一系列转发之后,最终到达B。当数据到达B之后,进行上述的”逆过程“。

对于接收方B:

第一层——物理层:收到一系列光信号,把信号转成二进制数据,交给数据链路层。

第二层——数据链路层:按照以太网协议,对数据进行解析(解析报头中的关键信息),解析出来的载荷数据交给网络层:

 第三层——网络层:拿到IP数据包,按照IP协议格式进一步解析,解析出报头关键信息,取出载荷,进一步交给上层(传输层):

 第四层——传输层:拿到UDP数据包,按照UDP格式进一步进行解析,解析出关键信息(要交给那个端口号对应的进程),解析出载荷数据,最后交给应用程序:

 第五层——应用层:聊天软件拿到了数据包,按照自己的协议格式进行解析,拿到这里的结构化数据(反序列化),显示到界面上。

在A发送数据时,中间的路由器和交换机也会进行封装和复用,也是上述过程。

交换机封装分用到数据链路层,即可知道下一步如何转发(工作在数据链路层)。

路由器封装分用到网络层即可知道下一步如何转发(工作在网络层)。

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

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

相关文章

网络安全之IP伪造

眼下非常多站点的涉及存在一些安全漏洞,黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》(建议搞IT的都要看下)中。亚伦斯沃茨(真实人物,神一般的存在)涉…

软件工程之静态建模

静态模型:有助于设计包、类名、属性和方法特征标记(但不是方法体)的定义,例如UML类图。 用例的关系: 扩展关系: 扩展关系允许一个用例(可选)扩展另一个用例(基用例&…

JS听到了爆燃的回响

Window对象 BOM(浏览器对象模型) BOM是浏览器对象模型 Window对象是一个全局对象,也可以说是JS中的顶级对象 像是document、alert()、console.log()都是window的属性 所有通过var定义在全局作用域的变量、函数都会变成window对象的属性和…

【Linux】死锁、读写锁、自旋锁

文章目录 1. 死锁1.1 概念1.2 死锁形成的四个必要条件1.3 避免死锁 2. 读者写者问题与读写锁2.1 读者写者问题2.2 读写锁的使用2.3 读写策略 3. 自旋锁3.1 概念3.2 原理3.3 自旋锁的使用3.4 优点与缺点 1. 死锁 1.1 概念 死锁是指在⼀组进程中的各个进程均占有不会释放的资源…

单片机学习笔记 15. 串口通信(理论)

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

MyBatis异常体系中ErrorContext和ExceptionFactory原理分析

🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 exceptions包分包设计ExceptionFactory类介绍为什么使用工厂不是直接new呢?【统一的异常处理机制】【异常的封装与转化】【…

【Canvas与雷达】点鼠标可暂停金边蓝屏雷达显示屏

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>点鼠标可暂停金边蓝屏雷达显示屏 Draft1</title><style typ…

Spark Optimization —— Reducing Shuffle

Spark Optimization : Reducing Shuffle “Shuffling is the only thing which Nature cannot undo.” — Arthur Eddington Shuffle Shuffle Shuffle I used to see people playing cards and using the word “Shuffle” even before I knew how to play it. Shuffling in c…

数据结构 (22)哈夫曼树及其应用

前言 哈夫曼树&#xff08;Huffman Tree&#xff09;&#xff0c;又称最优二叉树或最优树&#xff0c;是一种特殊的二叉树结构&#xff0c;其带权路径长度&#xff08;WPL&#xff09;最短。 一、哈夫曼树的基本概念 定义&#xff1a;给定N个权值作为N个叶子结点&#xff0c;构…

Android Studio安装TalkX AI编程助手

文章目录 TalkX简介编程场景 TalkX安装TalkX编程使用ai编程助手相关文章 TalkX简介 TalkX是一款将OpenAI的GPT 3.5/4模型集成到IDE的AI编程插件。它免费提供特定场景的AI编程指导&#xff0c;帮助开发人员提高工作效率约38%&#xff0c;甚至在解决编程问题的效率上提升超过2倍…

泷羽sec-shell脚本(全) 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

开发者如何使用GCC提升开发效率IMG操作

看此篇前请先阅读https://blog.csdn.net/qq_20330595/article/details/144134160?spm1001.2014.3001.5502 stb_image库配置 https://github.com/nothings/stb 代码 #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #define STB_IMAGE_WRITE_IMPLEM…

vue3【实战】面包屑【组件封装】Breadcrumb (根据菜单自动生成,实时响应路由变化,添加顺滑的过渡动画)

效果预览 技术方案 vue3 ( vite | TS | vueUse | AutoImport ) Element Plus UnoCSS 技术要点 根据当前路由查询所有父级路由 /*** 从树状列表中获取指定节点的所有父节点** param treeList 树状列表&#xff0c;包含多个节点* param value 目标节点的路径值* param parents…

pdf也算是矢量图——pdf大小调整--福昕pdf

有时候需要把pdf作为矢量图放到latex论文中&#xff0c;有时候需要裁剪掉空白的部分&#xff0c;就需要用福昕pdf进行编辑&#xff0c; 参考文章&#xff1a;福昕高级PDF编辑器裁切工具怎么用&#xff1f;裁切工具使用方法介绍_福昕PDF软件工具集 (foxitsoftware.cn)

【k8s】kubelet 的相关证书

在 Kubernetes 集群中&#xff0c;kubelet 使用的证书通常存放在节点上的特定目录。这些证书用于 kubelet 与 API 服务器之间的安全通信。具体的位置可能会根据你的 Kubernetes 安装方式和配置有所不同&#xff0c;下图是我自己环境【通过 kubeadm 安装的集群】中的kubelet的证…

Java项目Docker部署

docker将应用程序与该程序的依赖打包在一个文件里。运行这个文件就会生成一个虚拟容器&#xff0c;就不用担心环境问题&#xff0c;还可以进行版本管理、复制修改等。 docker安装 由于在CentOS下安装docker最常用&#xff0c;所以以Linux环境安装为主 1.安装工具包 缺少依赖…

【数据结构与算法】排序算法(上)——插入排序与选择排序

文章目录 一、常见的排序算法二、插入排序2.1、直接插入排序2.2、希尔排序( 缩小增量排序 ) 三、选择排序3.1、直接选择排序3.2、堆排序3.2.1、堆排序的代码实现 一、常见的排序算法 常见排序算法中有四大排序算法&#xff0c;第一是插入排序&#xff0c;二是选择排序&#xff…

Flink四大基石之Time (时间语义) 的使用详解

目录 一、引言 二、Time 的分类及 EventTime 的重要性 Time 分类详述 EventTime 重要性凸显 三、Watermark 机制详解 核心原理 Watermark能解决什么问题,如何解决的? Watermark图解原理 举例 总结 多并行度的水印触发 Watermark代码演示 需求 代码演示&#xff…

虚拟机docker记录

最近看了一个up的这个视频&#xff0c;感觉docker真的挺不错的&#xff0c;遂也想来搞一下&#xff1a; https://www.bilibili.com/video/BV1QC4y1A7Xi/?spm_id_from333.337.search-card.all.click&vd_sourcef5fd730321bc0e9ca497d98869046942 这里我用的是vmware安装ubu…

[ACTF2020 新生赛]BackupFile--详细解析

信息搜集 让我们寻找源文件&#xff0c;目录扫描&#xff1a; 找到了/index.php.bak文件&#xff0c;也就是index.php的备份文件。 后缀名是.bak的文件是备份文件&#xff0c;是文件格式的扩展名。 我们访问这个路径&#xff0c;就会直接下载该备份文件。 我们把.bak后缀删掉…