「计网」网络初识

🎇个人主页:Ice_Sugar_7
🎇所属专栏:计网
🎇欢迎点赞收藏加关注哦!

网络初识

  • 🍉IP 地址 & 端口号
  • 🍉网络协议
    • 🍌TCP/IP 网络协议
  • 🍉封装和分用
  • 🍉服务器 & 客户端
  • 🍉TCP & UDP

🍉IP 地址 & 端口号

以生活中网购举例,我买东西后商家发货需要知道我的地址,知道地址才知道要把快递送到哪里,还要有我的手机号(收件人电话),这样快递小哥才可以联系到我,通知我取件

类比到网络中,收件人地址就是 IP 地址;收件人电话就是端口号
IP 地址使用数字描述了一个设备在网络上的位置,这个数字是一个 32 位整数,为了方便表示,我们往往会把 IP 地址表示成点分十进制的形式:使用 3 个 . 把这 4 个字节分成 4 个部分,每部分 1 个字节,取值范围为 0-255(字节的取值范围)。比如 192.168.2.101
有了 IP 可以确定主机,但是一台主机上可能有多个程序在使用网络,所以用端口号来区分一个主机上不同的应用程序,主机收到网络数据后就可以根据端口号把数据交给对应的程序使用
每个程序在网络通信的过程中都需要有一个端口号,端口号也是一个整数,可以是用户手动指定的,也可以是系统自动分配的,不管是哪种,都遵循一个规则:程序之间使用的端口号不能冲突

其实在一次网络通信的过程中,涉及到的 IP 和 端口号各有两个。在上述网购的例子中,快递上除了有我的地址、手机号,还有商家的发货地址和手机号。为了区分,将收件人地址、电话分别称为目的 IP目的端口;将寄件人地址、电话分别称为源 IP源端口,从哪儿来的就称为源,到哪儿去就称为目的


🍉网络协议

协议是网络中的一个核心概念
所谓协议,就是一种通信过程中的约定,发送方和接收方需要提前商量好数据的格式,才能确保二者之间能正常沟通

网络通信过程中涉及到的细节其实是非常多的,需要约定好各方各面的内容,如果只用一个协议来完成通信,那么这个协议会非常复杂

所以使用多个协议,每个协议约定好其中一小部分内容。因为协议比较多,所以引入协议分层,把功能定位相似的协议放在同一层,让这些协议能更好地配合。上层协议会调用下层协议的功能,下层协议给上层协议提供服务,同时规定只有相邻的层次可以沟通,不能跨层次调用(否则容易混乱)

🍌TCP/IP 网络协议

TCP/IP 网络模型由五个层次构成,从上到下分别为:

  1. 应用层:关注传输的数据在应用程序中如何使用
  2. 传输层:负责网络数据包的端到端之间的传输,即关注从哪里来,到哪里去
  3. 网络层:负责起点到终点之间的路径规划
  4. 数据链路层:负责两个相邻节点之间的传输
  5. 物理层:通信过程中的基础设施

对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也就是 TCP/IP 五层模型的下面四层
对于路由器,它实现了从网络层到物理层,也就是下面三层
对于交换机,它实现了从数据链路层到物理层,即下面两层


🍉封装和分用

这两个操作是网络传输数据中最核心的流程,下面以发送消息为例进行说明
比如 A 通过微信给 B 发送一个 hello

  1. 封装

在把消息发送出去之前,会进行一系列封装
首先在应用层,微信会从消息输入框获取到输入的 hello,然后把这个字符串构造成一个应用层的数据包,微信这样的程序内部设置了一个应用层协议,这个协议往往是实现这个程序的程序员自己定义的。应用层数据包就是按照应用层协议约定的格式来构造的
假设约定的格式为:发送方的微信号;接收方的微信号;发送时间;正文
那么 hello 就会构造成这样的数据包:

在这里插入图片描述
然后传输层会把上述数据作为一个整体,再构造成一个传输层的数据包。传输层涉及到的协议主要是 TCPUDP,这里为了简便,假定是使用 UDP 来进行通信,就会构造成一个 UDP 的数据包,如下:

在这里插入图片描述

像上面这种添加报头的过程,就称为封装(这里的封装和我们之前面向对象提到的封装差异是比较大的),所谓的封装其实就是字符串拼接,只不过拼的报头具有一定的结构
报头就好比是快递袋上面贴的标签,可以承载一些用来转发数据的关键信息。对于 UDP 报头来说,承载的最重要的信息就是源端口和目的端口
拼好传输层数据包之后就要把这个数据包进一步交给下层——网络层,继续进行封装

这里的交给下层指的是下层协议提供一组 api 或方法,上层调用 api 或方法,并把刚才构造好的数据通过参数传过去,这样下层协议就可以来处理这个数据

接下来到了网络层,这里涉及到的最核心的协议就是 IP 协议。网络层会把刚才传输层的 UDP 数据包作为一个整体,再拼上 IP 协议的报头,构成一个 IP 数据包

在这里插入图片描述

构造成完整的 IP 数据包后,IP 协议会继续调用数据链路层的 api,把数据交给数据链路层的协议进行处理
数据链路层涉及到的核心协议是以太网,以太表示网络数据传输的介质,以太网会把 IP 数据包作为一个整体,在其前后分别添加上帧头和帧尾,组成以太网数据帧

在这里插入图片描述

接下来就会把这样的数据交给物理层
物理层会把以太网数据帧中二进制结构转换为光信号/电信号/电磁波,然后发送
经过上面一系列操作,数据才从你的电脑/手机上发送出去

  1. 分用

数据包到达 B 的网卡后,B 处理数据包的过程就称为分用分用就是封装的逆过程
首先 B 的物理层收到光信号/电信号/电磁波后会把物理信号转换为数字信号(二进制序列),得到一个以太网数据帧,进一步把这个数据帧交给数据链路层处理
到达数据链路层后以太网协议会解析以太网数据帧,取出其中的载荷交给上层协议
网络层会按照 IP 协议的格式进行解析,取出载荷再交给上层协议
传输层按照 UDP 协议格式来解析,同样取出载荷交给上层
最后在应用层按照微信应用程序内部的应用层协议格式来解析数据,微信程序拿到这些信息之后,就会在 B 的设备中弹出提示,并把消息显示在聊天窗口上

从 A 发出到 B 接收,中间还要通过一系列交换机或路由器进行数据转发,不过即使经过交换机或路由器,上面的封装、分用过程仍然适用,只不过封装分用的程度不一定到应用层

在这里插入图片描述
在上图中,假设从 A 右边第一个节点是交换机,那么这个交换机就会把上述光电信号转换为以太网数据帧二进制数据,交给数据链路层,它就会对上述数据进行解析。在解析过程中,一方面要取出载荷部分,另一方面要解析帧头中的关键信息,根据帧头中的信息决定下一步要把数据发送到哪里,由此再构造出新的以太网数据帧


🍉服务器 & 客户端

在网络中,主动发起通信的一方称为客户端;被动接受的一方称为服务器
客户端给服务器发送的数据称为请求(request);服务器根据请求给客户端返回的数据称为响应(response)
同一个程序在不同的场景中,可能是客户端,也可能是服务器

在这里插入图片描述


🍉TCP & UDP

TCP 和 UDP 是传输层涉及到的两个协议
TCP 有四个特点:有连接、可靠传输、面向字节流、全双工
UDP 也有四个:无连接、不可靠传输、面向数据报、全双工
下面简单说一下这些特点
首先是连接,这里的连接是抽象意义上的连接,即虚拟的连接。比如打电话就是有连接的通信方式,我这边打电话给你,你得先接通了,然后我才能说话,你可以接,也可以不接;而无连接则是发微信这种方式,不管你同意与否,我都可以发消息(不拉黑的前提下)
连接本质上是记录对方的信息。客户端有一些数据结构记录谁是它的服务器;与之对应,服务器也有一些数据结构记录谁是它的客户端

然后就是传输的可靠性,在这里谈到的可靠传输是指发送方能够知道对方是否收到了当前数据(具体的实现与 TCP 的确认应答、超时重传有关,这两个机制会在后面讲),而不是保证数据 100% 到达对方那里

接下来几个特点放在一张图里面对比:

在这里插入图片描述

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

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

相关文章

数据隐私新篇章:Facebook如何保护用户信息

随着数字化时代的到来,数据隐私保护成为了社交媒体平台和用户共同关注的焦点。作为全球最大的社交网络之一,Facebook一直致力于保护用户的隐私和数据安全。本文将深入探讨Facebook在数据隐私保护方面的措施和实践,以及其如何开启数据隐私的新…

领域建模(系统操作复习)

习题 问题 考察点 领域建模 识别概念类 固定模板 Conceptual Class Category Examples specifications,designs, or descriptions of things roles of people containers of other things things in a container abstract noun concepts organizations events processes (…

车载电子电器架构 —— 智能座舱技术范围(万字长文精讲)

车载电子电器架构 —— 智能座舱技术范围 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

0基础认识C语言(理论+实操3)

所有籍籍无名的日子里 我从未看轻自己半分 小伙伴们,一起开始我们今天的话题吧 一、算法操作符 1.双目操作符 为何叫双目操作符呢?其实是因为我们进行加减乘除的时候,至少得需要两个数字进行这些运算,而这个数字就被称为操作数…

算法题解记录27+++随机链表的复制(百日筑基)

一、题目描述: 题目难度:中等 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每…

Leetcode - 周赛399

目录 一,3162. 优质数对的总数 I 二,3163. 压缩字符串 III 三,3164. 优质数对的总数 II 四, 3165. 不包含相邻元素的子序列的最大和 一,3162. 优质数对的总数 I 假设 x 是 nums1 数组中的值,y 是 nums2…

WebGL实现医学教学软件

使用WebGL实现医学教学软件是一个复杂但非常有益的项目,可以显著提升医学教育的互动性和效果。以下是详细的实现步骤,包括需求分析、技术选型、开发流程和注意事项。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作…

Python自动实时查询预约网站的剩余名额并在有余额时发邮件提示

本文介绍基于Python语言,自动、定时监测某体检预约网站中指定日期的体检余额,并在有体检余额时自动给自己发送邮件提醒的方法。 来到春招末期,很多单位进入了体检流程。其中,银行(尤其是四大行)喜欢“海检”…

404.左叶子之和

计算给定二叉树的所有左叶子之和。 示例: 思路: 通过父节点来判断七子节点是不是我们要收集的元素。因为如果遍历到孩子节点,我们无法判断它是左孩子还是右孩子。 后序遍历,左右中。 判断当前节点是不是左叶子是无法判断的&…

33【Aseprite 作图】树——拆解

1 树叶 画树叶真累啊,可以先画一个轮廓,细节一点点修 2 1 2 ;2 2 2 (横着横),这样一点点画树叶 填充颜色,用了喷雾工具 2 树干部分 轮廓部分,左边的是3 3 3 ;上下都是…

【上海大学计算机组成原理实验报告】六、内存系统实验

一、实验目的 学习内存访问机制。理解代码和数据的分区存放原理和技术。 二、实验原理 根据实验指导书的相关内容,地址寄存器MAR用来存放要进行读或写的存储器EM的地址。其内容经数据总线DBUS写入,因此必须在数据总线上具有数据后,配合MAR允…

(奇幻森林)POLYGON - Enchanted Forest - Nature Biomes - 3D Environment Art by Synty

各种雄伟的树木,装饰着优雅简化的树叶,在头顶形成了一个天堂般的树冠,在苔藓覆盖的森林地面上投下了宁静的咒语。 每一项资产,从引人入胜的环境材料到平缓的波浪状山丘,都经过精心制作,将您带到魔法和自然融合的地方。POLYGON-魔法森林-自然生物技术为数字领域注入真正魔…

AI手语研究数据集;视频转视频翻译和风格化功能如黏土动画;AI检测猫咪行为;开放源码的AI驱动搜索引擎Perplexica

✨ 1: Prompt2Sign 多语言手语数据集,便捷高效用于手语研究。 Prompt2Sign 是一个全面的多语言手语数据集,旨在通过工具自动获取和处理网络上的手语视频。该数据集具有高效、轻量的特点,旨在减少先前手语数据集的不足之处。该数据集目前包含…

【qt】多窗口开发

多窗口开发 一.应用场景二.嵌入的窗口1.设计Widget窗口2.创建窗口3.添加窗口4.总代码 三.独立的窗口1.创建窗口2.显示窗口 四.总结 一.应用场景 多窗口,顾名思义,有多个窗口可以供我们进行操作! 截个小图,你应该就知道了 OK,话不多说,直接开干,先来设计我们的主窗口 需要蔬菜…

数据整理的Compact流程 (二)|OceanBase数据转储合并技术解读(二)

上篇文章《数据整理的Compact流程 (一)|OceanBase数据转储合并技术解读(二)》中,有讲解到,在OceanBase数据库中,当MemTable写满时,将其下刷到Mini SSTable的过程包含两个…

使用 Django ORM 进行数据库操作

文章目录 创建Django项目和应用定义模型查询数据更新和删除数据总结与进阶聚合和注解跨模型查询原始SQL查询 Django是一个流行的Web应用程序框架,它提供了一个强大且易于使用的对象关系映射(ORM)工具,用于与数据库进行交互。在本文…

第六届“智能设计+运维”国产工业软件研讨会暨2024年天洑软件用户大会圆满召开

2024年5月23-24日,第六届“智能设计运维”国产工业软件研讨会暨2024年天洑软件用户大会在南京举办。来自国产工业软件研发企业、制造业企业、高校、科研院所的业内大咖,能源动力、船舶海事、车辆运载、航空航天、新能源汽车、动力电池、消费电子、石油石…

CATIA二次开发VBA入门(4)——进程外开发环境搭建,vb.net在Visual Studio中开发,创建圆柱曲面的宏录制到二次开发案例

目录 引出vb.net和vb6.0 进程外开发环境搭建vb.net开发环境搭建《CATIA二次开发技术基础》模板 添加宏库引用 vs开发环境初步vs中的立即窗口对象浏览器 建立模板案例:创建一堆圆柱曲面第一步:录制宏第二步:代码精简第三步:for循环…

IsoBench:多模态基础模型性能的基准测试与优化

随着多模态基础模型的快速发展,如何准确评估这些模型在不同输入模态下的性能成为了一个重要课题。本文提出了IsoBench,一个基准数据集,旨在通过提供多种同构(isomorphic)表示形式的问题,来测试和评估多模态…

[数据集][目标检测]老鼠检测数据集VOC+YOLO格式4107张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4107 标注数量(xml文件个数):4107 标注数量(txt文件个数):4107 标注…