网络原理初识

news2024/11/24 14:43:32

网络原理初识

文章目录

  • 网络原理初识
    • 网络发展历程
      • 独立模式
    • 网络互联
      • IP地址
      • 端口号
    • 网络协议
      • OSI七层
      • TCP/ IP协议
    • 封装与分用
    • 封装
      • 一.应用层
      • 二.传输层
      • 三.网络层
      • 四.数据链路层
      • 五.物理层
    • 分用
      • 六.物理层
      • 七.数据链路层
      • 八.网络层
      • 九.传输层
      • 十.应用层

网络发展历程

独立模式

一开始电脑之间是相互独立的,并没有网络的概念

网络互联

根据网络互联的规模不同,就分为了局域网(LAN) 和 广域网(WAN)

局域网(local area network)是在一定的空间范围内进行电脑联机

广域网(wide area network) 通过路由器, 将多个局域网连接起来

IP地址

IP地址主要是用于识别网络主机 其他网络设备的网络地址, 也就是说, ip地址是用来定位主机的网络地址

回环地址: 127.0.0.1

端口号

在网络通信中, ip地址是用于识别主机地址网络,端口号是识别主机中发送 数据 接收数据的进程的, 也就是说, 端口号用于定位主机中的进程

网络协议

协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。
例如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互
通信交流。通常由三要素组成:

  1. 语法:即数据与控制信息的结构或格式;
    类似打电话时,双方要使用同样的语言:普通话

  2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
    语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。
    类似打电话时,说话的内容。

  3. 时序,即事件实现顺序的详细说明。
    时序定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。比如是采用同步传输还是异步传输。
    协议(protocol)最终体现为在网络上传输的数据包的格式。

简单来说,协议是一种约定, 发送方和接收方约定好, 按照特定的格式进行传输

协议有很多并且也很复杂,这就不是很好

所以可以把这些协议按照相应的功能进行分层

协议分层

上层协议调用下层协议

下层斜体给上层协议提供服务

不能隔层调用

当前的网络分层主要是两种典型的分法:

OSI 七层

TCP/ IP五层(四层)

OSI七层

image-20221009133149416

TCP/ IP协议

OSI主要是存在于教科书上的,显示生活中还是主要是TCP/IP协议为主,所以是重点,之后会重点进行讲解

image-20221009133419108

其实OSI与TCP/IP协议最下面的四层是一样的,只是表述不同

OSI协议上面的三层合成一个就变成了TCP/IP的应用层了

应用层 : 应用程序

传输层 : 端与端的传输

网络层 : 点与点的传输

数据链路层: 相邻节点的传输

物理层 : 底层基础设施

最后一层是物理层,属于硬件,对于程序员来说,可以不用管物理层,所以有的资料上说, TCP/IP只有四层,但是最好还是记得五层

插一个小知识点: 缓存cache

在有些比较复杂的计算, 耗时会比较久, 为了提高速度,减少计算次数, 就可以把重复的计算结果记录下来, 这种用于记录结果的数据结构就叫做缓存(cache), 广义上说,动态规划也就是一种缓存,本质就是记录中间的结果

封装与分用

进行数据传输的时候,到底是如何进行的呢?

这就要用到TCP/IP七层协议了

假设当前A在2022年10月29号的20点给B发了一条微信"hi",这条数据到底是如何 传输的?

封装

一.应用层

微信程序已经约定好了一种应用层协议(自定义协议),具体是怎么约定的,我们不得而知,假设是按照下面的自定义协议

image-20221030111756869

微信的应用程序会将这个数据报交给传输层协议 ,进行进一步处理

二.传输层

传输层是操作系统内核实现的, 操作系统会提供一些API给应用程序调用, 就能将应用层的数据交给传输层(交给了操作系统内核)

这里的操作系统提供的API叫做socket api

所以的API 全名叫做application programing interface

应用程序变成接口, 所谓的API就是别人写好的一组类/方法,给我们直接来调用

传输层里面有很多的协议, 最典型的就是TCP协议, 此处就以TCP协议为例

TCP协议要在之前数据的基础上, 加上TCP的数据报头,之前的部分看做是载荷部分(palyload)

image-20221030112914815

TCP数据报头之后就要交给网络层处理了

三.网络层

在网络层中也是有很多的协议,其中最典型的就是IP协议

IP协议会把之前的这个TCP数据报看做是载荷部分, 在前面加上IP协议报头

image-20221030113112170

在IP协议中有很多的信息,最关键的就是源IP和目的IP

构造好IP数据报之后,IP协议继续将整个数据报交给数据链路层

上面提到的传输层的TCP协议和网络层的IP协议里面都有很多的信息,后面会重点讲解

四.数据链路层

数据链路层的协议也很多,最主要的就是"以太网协议"

电脑差插上网线, 这个网线叫做以太网线,也是遵守以太网协议的

以太网协议既管数据链路层,又管物理层

以太网协议会将之前的这个数据报看做是载荷部分,在前面和后面分别加上帧头和帧尾

image-20221030114027551

接下来,数据链路层就会将上面的数据报交给物理层

五.物理层

数据已经组织好了,通过物理层的网卡将上述的二进制bit刘, 转换成光信号/电信号,并进行传输

以上的五个步骤,数据从上到下, 层层添加信息的过程叫做"封装"

分用就是封装的逆过程

举一个例子:

封装就是一步一步打包快递

分用就是一步一步拆快递

分用

具体的分用过程 :

六.物理层

接收方的网卡收到的光信号/电信号,就把这个数据交给了数据链路层,又以太网协议负责解析

七.数据链路层

当前拿到了以太网数据帧,由以太网协议,去掉帧头和帧尾,取出载荷部分

将取出的载荷部分交给网络层

image-20221030114748650

八.网络层

IP协议达到数据报,去掉IP报头,得到载荷部分,交给传输层

image-20221030114911026

九.传输层

传输层TCP协议对数据报进行解析, 去掉TCP报头,交给应用层

image-20221030115016790

十.应用层

微信程序对数据报进行解析, 取出其中的信息显示在界面上

这就完成了A给B发送微信的整个过程

以上的过程只是描述了发送发和接受方的封装与分用, 实际上传输还有很多的中间过程, A和B之间不是一个网线直连,所以中间还要经过交换机/路由器进行转发,所以真实的过程只会更加复杂.

上层协议调用下层协议,下层协议给上层协议提供服务

这里相邻的层是可以相互交互的,但是不能跨层

以上就是关于网络部分的初识,主要是介绍一下关于网络协议的概况,后面会具体展开介绍网络协议的细节。

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

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

相关文章

【InnoDB ClusterSet】快速部署

快速部署 InnoDB ClusterSet 文章目录快速部署 InnoDB ClusterSet前言前期准备架构设计部署过程1. 使用配置账号通过 MySQL Shell 连接到 InnoDB Cluster 任一成员2. 为主 InnoDB Cluster 实例设置变量3. 创建以当前集群作为主集群的 ClusterSet4. 为每个独立服务器实例添加配置…

382. 链表随机节点-哈希表法

382. 链表随机节点-哈希表法 给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。 实现 Solution 类: Solution(ListNode head) 使用整数数组初始化对象。 int getRandom() 从链表中随机选择一个节点…

Vue Element动态生成的表单如何用 el-form 校验

<el-form :model"dynamicValidateForm" ref"dynamicValidateForm" label-width"100px" class"demo-dynamic"><el-form-item prop"email" label"邮箱" :rules"[{ required: true, message: 请输入…

研究良久,终于发现了他代码写的快且bug少的原因

前言 读者诸君&#xff0c;今日我们适当放松一下&#xff0c;不钻研枯燥的知识和源码&#xff0c;分享一套高效的摸鱼绝活。 我有一位程序员朋友&#xff0c;当时在一个团队中开发Android应用&#xff0c;历经多次考核后发现&#xff1a; 在组内以及与iOS团队的对比中: 他的任…

java项目请求url存在特殊字符 400错误

java项目请求url特殊字符 400错误 1 现象 请求路径带特殊字符&#xff0c;就会400错误&#xff0c;这就泄露了服务器版本和报错信息&#xff0c;无疑是敏感信息泄露&#xff0c;实属安全漏洞。 补充项目环境&#xff1a;springmvc、tomcat 8.5.59 2 原因 经排查和报错信息…

STM32--ADC模数转换器

学习江科大自化协stm32教程记录的笔记 ADC模数转换器 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 DAC是数字-模拟转换器&#xff0c;但是P…

AI 助你轻松剪视频 # AutoCut

如果你还在犯愁每次剪视频都要反复听才能下手&#xff0c;不妨试试AutoCut , AI 大神李沐开源的一个剪辑神器&#xff0c;使用 Python 开发&#xff0c;它可以通过字幕来剪切视频。AutoCut 对你的视频自动生成字幕。然后你选择需要保留的句子&#xff0c;AutoCut 将对你视频中对…

C语言:变量的深入理解

文章目录一.什么是变量C语言中为什么要有类型&#xff1f;C语言中的类型为什么有这么多种呢&#xff1f;定义变量的本质为什么需要定义变量定义变量的本质定义变量时的规则二.深刻理解signed/unsigned定义的变量1.运算时的符号位2.数据的存储情况3.unsigned定义时的小细节三.大…

Android 13 VTS HIDL interface 解析

Android 13 VTS Introduction Android 13已经发布&#xff0c;VTS testcase发生很多变化&#xff0c;在此博客中对其每个测试项目进行流程介绍。 这里先对VTS 做一个介绍&#xff1a; VTS是vendor test suite简称&#xff0c;意为供应商测试套件。目的是确保Vendor层实现的兼容…

Spring Boot自动装配原理

Spring Boot自动装配原理1.Spring Boot 入口2.SpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguration判断自动装配开关是否打开获取EnableAutoConfiguration注解中的 exclude 和 excludeName获取需要自动装配的所有配置类最后3.总结1.Spring Boot…

Github访问量过百万!阿里内部至尊级分布式事务手册,实至名归

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说&#xff0c;就是一次大的操作由不同的小操作组成&#xff0c;这些小的操作分布在不同的服务器上&#xff0c;且属于不同的应用&#xff0c;分布式…

[附源码]JAVA毕业设计养生药膳推荐系统(系统+LW)

[附源码]JAVA毕业设计养生药膳推荐系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

[LeetCode周赛复盘] 第 323 场周赛20221211

[LeetCode周赛复盘] 第 323 场周赛20221211 一、本周周赛总结二、 [Easy] 6257. 删除每行中的最大值1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6258. 数组中最长的方波1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6259. 设计内存分配器1. 题目描述2. 思路分析3. 代码…

web前端期末大作业【足球网页】学生网页设计作业源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

基于C++实现(控制台)单位职工管理系统(数据结构)【100010017】

1需求分析 1.1 问题描述 对单位的职工进行管理&#xff0c; 包括插入、 删除、 查找、 排序等功能。 1.2 问题要求 职工对象数不必很多&#xff0c; 便于一次读入内存&#xff0c; 所有操作不经过内外存交换。 &#xff08;1&#xff09; 由键盘输 入职工对象&#xff0c;…

1564_AURIX_TC275_电压监控寄存器整理

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 1. 如果HSM保护开启了&#xff0c;那么访问修改其他的bit就会导致一个总线错误。 2. SMU中可以配置电压监控的相关alarm是否配置 生效。 这个寄存器是几个欠压阈值的配置&#xff0c;在这…

在Ubuntu中为ROG笔记本安装驱动asusctl

我是在Kubuntu22.04上安装的&#xff0c;系统自带“省电”、“平衡”、“性能”三个电源选项&#xff0c;显卡模式切换是拿nvidia驱动切换的&#xff0c;所以目前装的这个驱动我只用到了灯光调节功能。 文章目录介绍安装安装asusctl卸载显卡模式切换驱动supergfxctl使用方法启用…

LwIP——无操作系统启动流程

目录 启动流程 虚拟网卡控制块 发送流程 接收流程 总结 启动流程 通过阅读正点原子的无操作系统移植工程的源码&#xff0c;可以总结出LwIP的无操作系统的启动流程。 前面一些都是基于其他的外设的初始化&#xff0c;我们只关心这里lwip_comm_init()&#xff0c;这个函数的…

eve-ng ubuntu 20.04 设置iptables

eve-ng ubuntu 20.04 设置iptables一、设置方法1、建立iptables规则开机加载脚本2、建立iptables规则关机/重启保存脚本3、添加可执行权限4、保存当前iptables规则到配置文件二、命令解释一、设置方法 1、建立iptables规则开机加载脚本 sudo vi /etc/network/if-pre-up.d/ipt…

(十一)Vue之条件渲染

文章目录v-if与v-else-if、v-else一起使用v-show关于 <template>标签Vue学习目录 上一篇&#xff1a;&#xff08;十&#xff09;Vue之绑定样式 v-if v-if&#xff0c;默认为true&#xff0c;如果为false&#xff0c;底层实现是直接把这个节点删除 适用于&#xff1a;…