初识网络原理(笔记)

2023-11-12

目录

​编辑局域网

网络通信基础

IP 地址

端口号

协议

协议分层

TCP / IP 五层网络模型

网络数据传输的基本流程

发送方的情况:

接收方的情况


局域网

 搭建网络的时候,需要用到 交换机 和 路由器

路由器上,有 lan 口 和 wan 口

虽然路由器只有 4 个 lan 口

实际上组建的局域网,可以有更多的设备,就可以用到交换机

交换机的口是不分 lan 口 和 wan 口 的,所有的 口 都是等价的

组件企业网络,往往需要一个企业级路由器+ 若干个企业级交换机,延伸出很多的网线,供大家使用

AP 相当于一个不用插网线的小交换机(提高无线热点扩容能力)

路由器,可以进行三层(网络层)转发

交换机,是进行两层(数据链路层)转发

这个定义是站在经典的路由器/ 交换机的定义上看待的

实际上现代的交换机/ 路由器之间的差异越来越小了,之间的功能也是有很多重合的

集线器是把一根网线,分成多个岔口,但是和交换机有本质区别

交换机分出来的这个岔口,彼此之间是独立的,不干扰的

集线器分出来的岔口,是会冲突的

局域网和广域网,并没有一个明确的界限

当局域网中,设备数量非常多,局域网空间跨度特别大,就可以称为广域网了


网络通信基础

IP 地址

使用 ip 地址,来描述网络上一个设备所在的位置


端口号


用来区分一个主机上不同的应用程序

一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口进行展开的


协议

描述了网络通信传输的数据的含义

网络通信协议,虽然更复杂,但是本质上也是认为约定出来的一些规则

网络发展这么多年了,很多细节,都已经有规定出来的协议了

我们做的主要就是学习已经约定好的协议

为什么要约定好协议呢?

电脑种类很多,设备的厂商也很多,必须有一份统一的协议标准,让大家按照同样的标准来研发设备,这样大家弄出来的东西就可以在一起相互通信了


协议分层

网络通信,是一个比较复杂的工作,会涉及到一系列非常繁琐,非常细节的工作

靠一个协议解决所有问题会导致这个协议非常复杂,非常庞大

因此就需要对协议进行拆分,由于拆分出来的协议有点多,就对这些协议进行分类,分层

对于网络协议来所,往往分成几个层次进行定义

上层协议调用下层协议

下层协议给上层协议提供服务支持

也就是属于这些协议搞了明确的层级关系,可以避免跨层级调用引起的混乱,降低耦合,提高了整个系统的可读性

这个图就很好描述了分层

(1)上层不需要了解下层的细节(封装)

(2)灵活的 调整 / 替换 某层的协议


协议分层,主要有两种方式:OSI 七层网络模型(只是在教科书上) , TCP / IP 五层网络模型

TCP / IP 五层网络模型

如果算上物理层,就是五层,如果不算上物理层,就是四层

因为物理层是偏硬件的,和软件关系不大 

物理层:

描述的是网络通信中的一些基础设施需要遵守的规范

会约定 网线,网口是什么样子的

数据链路层

相邻节点之间,数据如何运输 

网络层

进行路径规划 

上海 -> 北京,有很多的路线走法 ,快递公司就需要规划处商品走哪个路线

传输层

只关注起点和终点,不关注中间过程(数据从哪里出发,要到哪里去) 

应用层

拿到这个数据,具体用来干什么

不同的应用程序,就会使用不同的应用层协议来通信(也可能用相同的)

传输层协议,网络层协议,都是属于操作系统中的,已经内置的

驱动程序,是硬件厂商提供的,驱动程序会和系统内核进行适配,进一步的系统就可以通过驱动来操作硬件了


网络数据传输的基本流程

用四个字概括:封装和分用

以 QQ 发送消息为例,介绍网络数据传输的基本流程

A 把消息通过 QQ 发给主机 B

网络通信中的 “五元组” : 源ip ,源端口,目的ip ,目的端口,协议类型

发送方的情况:

1、应用层

QQ 应用程序,从输入框获取到你要输入的消息,构造成应用层数据报(根据应用层协议)

很多应用程序里会自定义应用层协议,QQ 使用的是什么协议,我们是不知道的

假设  QQ 的应用层协议是这样的:

所谓的 “构造应用层数据报” 过程,就是按照一定格式进行字符串拼接

发送方和接收方,需要达成一致

应用程序,就会调用传输层提供的接口,把上述数据交给传出层进行处理


2、传输层

传输层协议有很多,其中最主要的是 TCP 和 UDP 

此处假设使用 UDP

上面数据从应用层传到了传输层,交给了 UDP ,于是 UDP 协议就要按照自己的格式,生成一个 UDP 数据报

UDP 不关心应用层数据里面都有啥,都是啥内容,只是把应用层数据当做一个字符串,构造出一个 UDP 数据报

类似于快递小哥在取件的时候,不关心快递具体是啥东西,只是关心尺寸和重量(包裹中能不能放下)

快递小哥在拿到东西之后,会再包装一下,贴上标签

此时,传输层会把构造好的 UDP 数据报,进一步交给网络层


3、网络层

网络层最主要的协议,就是 IP 协议

IP 协议也会根据自己的格式,构造出一个 IP 数据报

IP 协议不关心这里的载荷内容是啥,只是单纯的把在和当做一个字符串,再这个基础上拼接上另外一个 IP 报头

接下来, 还需要把数据传输给数据链路层


4、数据链路层

以太网(平时上网需要插一个网线)

以太网,又会针对 IP 数据报,进行进一步封装,再添上数据头和数据尾

以太网也不关心载荷里是啥,只是把载荷当成字符串,进一步拼接上帧头帧尾,构造成 以太网数据帧

上述这样的数据,还需要进一步交给物理层


5、物理层

硬件设备(网卡)

本质上都是二进制的数据(一组0101 构成的)

硬件设备就需要对上述数据进行转换了(光信号 / 电信号 / 电磁波)

到这里,主机A 完成了发送过程


接收方的情况

此处,我们先不考虑中间过程

1、物理层

硬件设备受到 光信号 / 电信号 / 电磁波,需要把受到的信号进行解调,得到了一串 0101 的二进制数据序列,也就是以太网数据帧

调制:把你要传输的信息放到光电信号中

解调:从光电信号中把信息取出来

这个数据就需要被交给上一层,数据链路层


 2、数据链路层

数据链路层的以太网协议,就会针对这个数据进行解析

 此时,再把载荷部分取出来,交给上层(IP协议)


3、网络层

IP 协议针对这个数据报进行解析,去掉 IP 报头,取出载荷,进一步的交给传输层


4、传输层

根据 IP 报头里的字段,就知道当前这个载荷是一个 UDP 数据报,交给 UDP 处理

UDP 也是要针对数据报进行解析,去掉报头,取出载荷,进一步交给应用程序


 5、应用层

UDP 报头中,有一个字段,目的端口,根据目的端口找到关联的应用程序,就交给这个程序即可

qq程序接收到了这个数据,就会按照qq 的应用层协议,进行解析

把这里的数据显示到页面上

在qq 中,对应的头像就开始闪烁,点进去,就能显示出这个新的消息以及消息的时间等信息


主机 A 从上到下,依次添加报头的过程,称为封装

主机 B 从下到上,依次解析报头的过程,称为分用

封装就是在打包快递,分用就是在拆快递

每次网络数据的传输,都是要经历这个过程的

消息转发到某个设备,每个设备处理流程都是和上面的封装分用是一样的

如果是一个交换机,交换机分用到数据链路层即可

交换机解析出以太网数据帧,进一步的获取到帧头中的 “mac 地址” ,根据 mac 地址查询到交换机内部的转发表,确定接下来数据从哪个网口发出去

在发送之前,又会重新把以太网数据帧封装好

路由器则是封装分用到网络层

解析出 ip 数据包,获取到 ip 报头,根据 ip 报头中的目的ip 进一步规划接下来要走的路线

接下来又会把这个数据进行转发

上述描述的交换机路由器,只是一个经典的交换机路由器

实际上现代的交换机路由器,会做更多的事情,很可能是封装分用到应用层

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识网络原理(笔记) 的相关文章

随机推荐

  • MMDetection新手安装使用教程(无限踩坑)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 MMDetection安装过程 1 torch torchvision的安装 2 mmdetection的安装 二 MMDetection的使用步骤 1
  • c++中的新成员——new,命名空间

    c 中的动态内存分配 优点 使用更加的方便 解决了c中有很时候没有库文件时不能申请堆内存的情况 使用 c 中是通过new关键字来进行内存空间的申请的 c 中动态内存是基于类型进行的 delete关键字用于释放 new在申请的时候可以进行初始
  • opentsdb+grafana监控环境搭建

    opentsdb是在hbase的基础上设计的时间序列数据库 安装opentsdb必须先有hbase hadoop和hbase是以集群的方式安装 如果在单台服务器上安装 下面的配置文件也是适合的 只要把相应的服务器名移除掉就可以 grafan
  • MAC地址会耗尽吗?

    有可能会耗尽 虽然目前离耗尽的日子还很远 先基本解释一下MAC地址的特点 虽然MAC地址有48位 但并非48位都是可以随便用的 就像IPv4虽然有32位 但也不是所有组合都可以使用一样 MAC地址第一字节的最低2位 bit 是标示地址类型的
  • 11.神经网络与机器学习(十)—卷积神经网络(CNN)

    1 引言 我们之前的神经网络结构都是全连接的 也就是说 每一个输入神经元的都和相邻层的每一个神经元连接 但是这种连接带来的数据量太大了 以我们之前的一个三层神经元举例 784 30 10 从输入层到隐藏层有 784 1 30 23550个参
  • 从零开始学HTML+CSS

    本文是基于b站黑马程序员的视频教程 然后总结自己的心得写的 只是自己的个人总结 如有错误 敬请指正 基于此链接最新前端开发入门教程 web前端零基础html5 css3 前端项目视频教程 哔哩哔哩 bilibili最新的web前端html5
  • python面向对象编程高级篇之枚举类Enum

    我们可以定义月份 比如 from enum import Enum Month Enum Month Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec for name member in Mo
  • 如何在opensea批量发布NFT(Goerli测试网)

    一 生成NFT图象 hashlips art engine HashLips Art Engine 是一种用于根据提供的图层创建多个不同的艺术作品实例的工具 1 安装 npm install or yarn install 2 使用 在 l
  • 微信小程序简单的信息表格的提交到数据库(新手篇)(云端数据库)

    微信小程序简单的信息表格的提交到数据库 新手专属 云端数据库 大家好 我是小陈 一名大一的编码爱好者 刚刚结束了大一的学习生活 也总结出了一点编码的经验 希望与大家一起分享 我是学习物联网的 总感觉大一的课程枯燥无味 所以索性自学了一点微信
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 持续集成平台-jenkin

    CI平台诞生的背景 很多公司因为种种原因 不想使用GitHub gitlab上的CI能力 或是希望定制一些功能更加强大的CI CD工作流 这时就需要一些更专业的CI平台了 CI平有那些 github gitlab Aone 阿里巴巴 织云
  • UE5学习笔记(1)——从源码开始编译安装UE5

    目录 0 前期准备 1 Git bash here 2 克隆官方源码 3 选择安装分支 4 运行Setup bat 下载依赖文件 5 运行GenerateProjectFiles bat生成工程文件 6 生成完成 找到UE5 sln UE4
  • mysql 设置默认值_MySQL InnoDB相关参数设置

    MySQL InnoDB相关参数设置 1 InnoDB参数 MySQL目前使用的主要为InnoDB引擎 一些InnoDB引擎参数调整到合理的值将很大程度上改善数据库性能 下面将对一些重要参数做说明 2 InnoDB参数调整 2 1InnoD
  • 【Java】使用iText生成PDF文件

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目 是用于生成PDF文档的一个java类库 通过iText不仅可以生成PDF或rtf的文档 而且可以将XML Html文件转化为PDF文件 项目要使用iText 必
  • fopen()和fwrite()函数介绍及用法

    一 fopen 头文件 include
  • 服务器文件夹设置只有读写权限 IIS,iis 读写服务器的权限设置

    iis 读写服务器的权限设置 内容精选 换一换 打开FTP服务器上的文件夹时发生错误 请检查是否有权限访问该文件夹 浏览器设置了FTP防火墙 以设置IE浏览器为例 打开IE浏览器菜单 工具 gt Internet 选项 选择 高级 标签卡
  • sqlite和一般主流数据在sql语句的区别

    sql语句中经常存在根据类型查数据 有时候条件是字符型 有时候是数字 由于数据库的差异 最好在写sql语句时 同意写成带引号 比如下面 select from tb project info where 1 1 and PROJECT CO
  • Ubuntu20.4 Android-9.0.0_r46源码下载编译

    Ubuntu20 4 Android 9 0 0 r46源码下载编译调试 安装Ubuntu虚拟机 ubuntu镜像下载地址 https ubuntu com download 官网下载地址较慢可以去 清华源 中科大源 华为 阿里源直接下载都
  • C++学习(四十八)homebrew及其安装

    Homebrew是一款Mac OS平台下的软件包管理工具 拥有安装 卸载 更新 查看 搜索等很多实用的功能 简单的一条指令 就可以实现包管理 而不用你关心各种依赖和文件路径的情况 十分方便快捷 在Homebrew中 软件包分为 CLI 软件
  • 初识网络原理(笔记)

    目录 编辑局域网 网络通信基础 IP 地址 端口号 协议 协议分层 TCP IP 五层网络模型 网络数据传输的基本流程 发送方的情况 接收方的情况 局域网 搭建网络的时候 需要用到 交换机 和 路由器 路由器上 有 lan 口 和 wan