「计网」网络初识

🎇个人主页: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% 到达对方那里

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

在这里插入图片描述

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

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

相关文章

Xcode设置cocoapods库的最低兼容版本

目录 前言 1.使用cocoapods遇到的问题 2.解决办法 1.用法解释 1. config.build_settings: 2.IPHONEOS_DEPLOYMENT_TARGET 2.使用实例 3.注意事项 1.一致性 2.pod版本 前言 这篇文章主要是介绍如何设置cocoapods三方库如何设置最低兼容的版本。 1.使用cocoapods遇到的…

小红书图片视频下载利器,无水印!

在刷小红书时,总能看到一些博主发的好看的壁纸或者视频,想下载下来做头像或者设置为手机电脑的桌面。不过众所周知,直接保存的图片和视频都是有水印的,那如何去掉水印呢? 有些朋友肯定说,我知道有去水印的…

如何区分解析亚马逊网站产品搜索结果页HTM代码中广告位( Sponsored)和自然位的产品ASIN及排名

在开发亚马逊产品广告排名插件的时候需要通过页面HTML代码分别找出属于广告位和自然搜索结果的产品ASIN及排名,所以需要找到区分广告位和自然搜索结果的HTML代码属性: 所有搜索结果页的产品不管是广告位还是自然位,都包括在 标签里&#xff…

服务器数据恢复—服务器raid常见故障表现原因解决方案

RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对于单独的物理硬…

kali中切换python版本

kali中切换python版本 在日常使用的过程中,可以通过一些工具来做打靶环境,或者工具的启动,都和python关联,而有时存在工具安装,或者运行的时候出现报错,这时候极大可能是因为我们本地的kali中python的版本不…

安装pytorch深度学习模型时要知道自己的电脑显卡是否支持CUDA

安装pytorch深度学习模型时要知道自己的电脑显卡是否支持CUDA,如何知道自己的显卡是否支持呢?可以去下面的网站,打开后就可以见到如下图所示: CUDA | 支持的GPU | GeForce (nvidia.cn)

【Mac】XMind for mac(XMind思维导图)v24.04.10311软件介绍和安装教程

软件介绍 XMind for Mac是一款功能强大的思维导图软件。它具有以下主要特点: 1.多样化的思维导图功能:XMind for Mac提供了丰富的思维导图编辑功能,用户可以创建各种类型的思维导图,包括组织结构图、逻辑图、时间轴图等&#xf…

基于优化Morlet小波的一维信号瞬态特征提取方法(MATLAB R2018A)

小波分析方法近些年逐步得到发展的一门数学分析技术,它对许多学科都有十分重要的影响。与傅立叶变换等其他传统方法相比,小波分解的方法中所用的小波基有着多种多样的结构,总结来说又包括正交小波系与非正交小波系。正交小波在信号处理领域目…

超越传统插值:利用深度学习提升视频帧率与清晰度

视频帧率的提升是视频处理领域中一个重要问题,它直接影响到视频的流畅度和观感。随着技术的发展,人们对于视频质量的要求越来越高,尤其是在捕捉快速运动场景时,高帧率视频能够提供更加清晰和连贯的视觉效果。然而,传统…

(2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X

Lumina-T2X: Transforming Text into Any Modality, Resolution, and Duration via Flow-based Large Diffusion Transformers 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 …

Dynamics CRM 修改新建记录的CreatedOn字段值

CRM在创建新记录时,一些系统属性例如创建者、创建时间是取当前创建记录的人以及当前的时间,而有时这些属性需要更改,例如创建时间,这个场景更多的用在数据迁移的时候,老数据有他的原始创建时间,不能因为迁移…

python在cmd中运行.exe文件时报错:不是内部或外部命令,也不是可运行的程序或批处理文件。的解决办法

添加系统环境变量: 设置环境变量,在用户变量里面添加 【PATH:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Windows\SysWOW64】 在系统变量里面添加,【变量名:ComSpec】 【变量值:%SystemRoo…

springboot+vue的养老院管理系统

免费获取方式↓↓↓ 项目介绍036: http://localhost:8080/ admin 123456 测试用户 123456 测试护工 123456 二、技术栈 所有场景都支持 适合零基础小白练手和实战;适合二次开发; 项目图片概览: 以上是对本项目的界面预览。 界…

比较3维空间中4个点的不同结构

在4*4*4的3维空间中,取4个点共有635376种可能,有209个结构,继续按旋转对称分类则只有55个不同的结构。如其中的4t12 4个点在同一个平面,有1个点与其中的3个点不在同一行也不在同一列,这样的位置不止一个 这两个结构都是…

JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测

JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测 目录 JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多…

【产品经理】总篇章

引言: 在最近频繁的产品职位面试中,我深刻体会到了作为产品需要的不仅仅是对市场和技术的敏锐洞察,更多的是在复杂多变的环境中,如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享我多年经历和所学到的所以知识&a…

golang线程池ants-四种使用方法

目录 1、ants介绍 2、使用方式汇总 3、各种使用方式详解 3.1 默认池 3.2 普通模式 3.3 带参函数 3.4 多池多协程 4、总结 1、ants介绍 众所周知,goroutine相比于线程来说,更加轻量、资源占用更少、无线程上下文切换等优势,但是也不能…

知识计算概述

文章目录 知识计算研究现状技术发展趋势 知识计算 随着知识图谱技术及应用的不断发展,图谱质量和知识完备性成为影响知识图谱应用的两大重要难题,以图谱质量提升、潜在关系挖掘与补全、知识统计与知识推理作为主要研究内容的知识计算成为知识图谱应用的重…

Hive-因精度丢失导致的 join 数据异常

一、问题复现 不知你是否遇到过 join 结果明显不匹配的情况,例如on t1.join_key t2.join_key中两个join_key明显不相等,但 join 的结果却将其匹配在一起。今日博主在通过用户 id 关联获取用户信息时发现一个用户 id 可以在用户维表中匹配出若干条&…

Simulink中使用ROS1自定义消息

Simulink中使用ROS1自定义消息 简介前提条件操作流程问题一问题二问题三 吐槽 简介 最近在做的项目里需要使用Simulink与ROS联合仿真,这里就遇到了一个问题,Simulink无法直接使用ROS中的自定义消息,需要在MATLAB中生成一下,再引入…