网络基础(1)

news2024/9/20 18:34:02

目录

    • 1. 网络
      • 1.1 网络是什么
      • 1.2 网络在哪里
    • 2. 协议
    • 3. TCP/IP五层(或四层)模型
      • 3.1 分层细节
      • 3.2 报头
        • 3.2.1 封装与解包
    • 4. 数据传输
      • 4.1 局域网
      • 4.2 IP地址与Mac地址

1. 网络

1.1 网络是什么

网络本质是一个软件,软件是可以进行分层的。例如STL库,实际上分为了STL调用接口和STL库。

网络也是软件,网络协议栈也是层状结构:

在这里插入图片描述

1.2 网络在哪里

这里的网络,其实指的就是网络协议栈,它是一个软件,叫TCP/IP协议栈,属于OS的一部分。

2. 协议

所谓的计算机协议,本质其实就是约定,约定是由编码的程序员自己根据标准文档,或者自己喜好定义的协议。

3. TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  1. 物理层: 负责光/电信号的传递方式,比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。

  2. 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。

  3. 网络层: 负责地址管理和路由选择。例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。

  4. 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。

  5. 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

对于应用层来说,它处于用户层,其他的都是内核层。这也就说明了这层与其他层是解耦的。应用层用于处理程序细节,其他三层用于处理通信细节。

3.1 分层细节

在这里插入图片描述

3.2 报头

报头就是格式+数据,类似于快递单上的报头。

报头本身就是数据,是一种结构化的数据,封装了不同层的报头信息,是通过位段来实现的。

在进行数据传输的时候,需要报头中的数据,来指导当前层进行某种协议决策。

3.2.1 封装与解包

  • 添加报头的过程叫封装,解除报头的过程叫解包。

前面说了报头其实是一种结构化数据,里面封装了对应层的报头。

  • 封装与解包

封装与解包概略图:

在这里插入图片描述

在这个过程中,数据需要自顶向下传输,在每一层都添加各自的报头。来到接收端的时候,进行数据交付。在每一层看来,同层得到的报头数据都是一样的,基于每一层来说,都认为这是对方直接传输给自己的。

对于上图来说,就是先从左顶到左底,再从右底到右上。这些过程包含了许多的封装与解包。但是由于同层报头协议,会导致同层的看起来数据是直接由对方传递给自己的。

封装的过程,其实就是应用层数据通过协议栈发到网络上时,将报头里的位段信息拷贝到数据的前面,让其带有报头信息。那么前部分(首部)就是报头,后部分就是数据。 这些信息中包含了一些类似于首部有多长, 有效载荷有多长, 上层协议是什么等信息。

解包的过程,只需要将其报头的指针指向数据端,就将报头给解除了。 专业的话说就是:数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。

  • 有效载荷

每一层的协议实际上只关心数据中与当前层对应的报头信息,而剩下信息的具体内容根本不必关心,我们将数据中除当前层的报头以外的数据叫做“有效载荷”。

需要注意的是,上层协议在数据封装时添加的报头信息,在下层协议进行数据解包时看来就是有效载荷。比如数据封装时应用层添加的报头信息,在对端主机进行数据解包时,在对端主机的传输层、网络层以及链路层看来,该应用层曾经添加的报头信息就是有效载荷。

所以总结起来就是,几乎每一层的报头中,都要包含两种字段:

  1. 当前报文的有效载荷要交付给上层的哪一个协议
  2. 几乎每个报头,都明确报头和有效载荷的边界

这些是协议的共性。

4. 数据传输

4.1 局域网

对于局域网内的网络传输时,上图内容是适用的。但是对于跨网络的内容传输时,需要有更多的程序来支持。

  • 局域网通信原理

对于局域网内的主机互相通信时,实现方式是A主机向B主机发送macB报头,其他所有主机都会接收到,但是解析以后得到的不是自己想要的,就会进行丢弃,只有B主机成功接收。这看起来就像是A主机单程发送数据给了B主机。

  • 碰撞避免算法

如果同时发送,就可能会发生数据碰撞的问题。所以每台主机都要有碰撞检测的能力,并且要有碰撞避免的算法。

  • 互斥性

局域网里有公共资源,可以让多个主机向里面输入数据,可以看作是临界资源。为了保证碰撞避免,任一时刻都只能让一台主机向局域网中发送数据。这就是局域网数据传输的互斥性。

以太网就是基于这种碰撞的方式来实现的。

跨网段的主机的文件传输,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。

在这里插入图片描述

4.2 IP地址与Mac地址

  • IP地址

IP地址是在IP协议中, 用来标识网络中不同主机的地址。

对于一个报文来说,IP地址的作用就是标识其从哪来到哪去。或者说IP地址最大的意义是指导一个报文如何进行路径选择。

  • Mac地址

MAC地址用来识别数据链路层中相连的节点。

在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

Mac地址就是标识数据上一站从哪里来,下一站从哪里去。并且一直在变化。

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

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

相关文章

文件包含漏洞1 | iwebsec

文章目录00-文件包含漏洞原理环境01-本地文件包含读取敏感文件信息配合文件上传getshell配合日志文件getshell配合SSH日志配合运行环境00-文件包含漏洞原理 为什么要文件包含? 为什么会有文件包含漏洞? 因为将被包含的文件设置为变量,用来进行动态调用…

169_技巧_Power BI 依据促销日历计算销售金额

169_技巧_Power BI 依据促销日历计算销售金额 一、背景 在各位表格表姐们计算销售金额的时候,有一个绕不开的问题:商品有促销的问题,需要使用对应的促销价来计算销售额。 按照惯例还是先来看看结果 Power BI 公共 web 效果:htt…

使用docker进行Mongoyapi安装,Mongo重启yapi重启

在这里我使用Linux虚拟机作为docker服务器,本机通过xshell进行远程操作。 Mongo安装:docker run -d --name mongo-yapi mongo; yapi安装:1)拉取yapi docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi 2)初…

2023款欧拉好猫上市,12.98万起

上周,2023款欧拉好猫焕新上市。2023款好猫共推出5个车型: •401km标续航,舒享型/豪华型/尊贵型,分别是12.98/13.98/14.98万元; •501km长续航,豪华型/尊贵型,分别是15.58/16.58万元;…

00后整顿职场,当摸鱼测试员遇上了内卷00后。

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…

【PaddleOCR-kie】一、关键信息抽取:使用VI-LayoutXLM模型推理预测(SER+RE)

背景:在训练自己数据集进行kie之前,想跑一下md里面的例程,但md教程内容混乱,而且同一个内容有多个手册,毕竟是多人合作的项目,可能是为了工程解耦,方便更新考虑……需要运行的模型和运行步骤散落…

没有钱怎么创业?一分钱没有如何能创业成功?

限制人创业成功的从来都不是资金,而是能力,这个道理很多人都可能不懂,多数人习惯了庸庸碌碌、日复一日地打工行为,却不知如何创业,那么,没有钱怎么创业?一分钱没有如何能创业成功呢?…

【深度学习】预训练语言模型-BERT

1.BERT简介 BERT是一种预训练语言模型(pre-trained language model, PLM),其全称是Bidirectional Encoder Representations from Transformers。下面从语言模型和预训练开始展开对预训练语言模型BERT的介绍。 1-1 语言模型 语言模型 &#xf…

iOS(一):Swift纯代码模式iOS开发入门教程

Swift纯代码模式iOS开发入门教程项目初始化(修改为纯代码项目)安装第三方库(以SnapKit库为例)桥接OC库(QMUIKit)封装视图并进行导航跳转示例:使用 TangramKit 第三方UI布局库应用国际化添加 R.s…

NICEGUI---ROS开发之中常用的GUI工具

0. 简介 对于ROS来说,如果不具备一定知识的人员来使用这些我们写的算法,如果说没有交互,这会让用户使用困难,所以我们需要使用GUI来完成友善的数据交互,传统的GUI方法一般有PYQT这类GUI方法,但是这类GUI工…

激光炸弹(前缀和)

地图上有 N 个目标,用整数 Xi,Yi 表示目标在地图上的位置,每个目标都有一个价值 Wi。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁一个包含 RR 个位置的正方形内的所有目标。激光炸弹的投放是通过卫星定位的&…

顺序表以及链表的应用及区别(包含OJ讲解)

前面我已经发过怎么实现链表以及顺序表,今天大概的总结一下。 顺序表: 1.能够随时的存取,比较方便。 2.插入删除时,需要挪动数据,比较麻烦,因为是连续存储。 3.存储密度相对于链表来说是比较高的&#…

C++类的组合

C类的组合什么是类的组合初始化参数列表使用类的组合案例分析组合构造和析构顺序问题this指针基本用法和作用什么是类的组合 类的组合就是以另一个对象为数据成员,这种情况称为类的组合 1.优先使用类的组合,而不是继承 2.组合表达式的含义 一部分关系 初…

用户登录请求100w/每天, JVM如何调优

用户登录请求100w/每天, JVM如何调优 大概可以分为以下8个步骤。 Step1:新系统上线如何规划容量? 1.套路总结 任何新的业务系统在上线以前都需要去估算服务器配置和JVM的内存参数,这个容量与资源规划并不仅仅是系统架构师的随意估算的&am…

springboot启动过程加载数据笔记(springboot3)

SpringApplication AbstractApplicationContext PostProcessorRegistrationDelegate ConfigurationClassPostProcessor ConfigurationClassParser 一堆循环和调用 ComponentScanAnnotationParser扫描 processConfigurationClass.doProcessConfigurationClass(configClass, so…

网络编程(二)

6. TCP 三次握手四次挥手 HTTP 协议是 Hype Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器(sever)传输超文本到客户端(本地浏览器…

小众但意外觉得蛮好用的剪辑软件!纯良心分享

爱剪辑 有开屏广告,一共3个界面:首页、剪同款、我的。 剪辑、配乐、字幕、滤镜、加速、贴纸、配音等主流功能都有。 特色功能有剪裁视频、倒放视频、视频旋转、视频转换GIF、转场、提取音频、画中画等。 还可以拼接视频,不过不支持FLV等小众文…

人员摔倒识别预警系统 人员跌倒检测算法 yolov7

人员摔倒识别预警系统 人员跌倒检测算法基于yolov7网络模型计算机识别技术,人员摔倒识别预警系统 人员跌倒检测算法对画面中人员摔倒进行实时检测识别抓拍告警。YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。研究者将对计算层的所有计算块应用相同的组参数和…

buuctf-pwn write-ups (11)

文章目录buu083-x_ctf_b0verfl0wbuu084-picoctf_2018_leak_mebuu085-inndy_echobuu086-hitcontraining_unlinkbuu087-ciscn_2019_final_3buu088-axb_2019_fmt64buu089-wustctf2020_name_your_catbuu090-pwnme1buu091-axb_2019_brop64buu092-[极客大挑战 2019]Not Badbuu083-x_c…

JAVA开发运维(nginx工作原理)

nginx源码目录结构: . ├── auto 自动检测系统环境以及编译相关的脚本 │ ├── cc 关于编译器相关的编译选项的检测脚本 │ ├── lib nginx编译所需要的一些库的检测脚本 │ ├── os 与平台相关的一些系统参数…