初识网络原理(笔记)

目录

​编辑局域网

网络通信基础

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 进一步规划接下来要走的路线

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

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

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

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

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

相关文章

【Leetcode】105.从前序与中序遍历序列构造二叉树

一、题目 1、题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例1: 输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: [3,9,20,null,null,15,7]示例…

关于es中索引,倒排索引的理解

下面是我查询进行理解的东西 也就是说我们ES中的索引就相当于我们mysql中的数据库表,索引库就相当于我们的数据库,我们按照mapping规则会根据相应的字段(index为true默认)来创建倒排索引,这个倒排索引就相当于我们索引…

【stable-diffusion使用扩展+插件和模型资源(上】

文章目录 前言一、插件推荐1.qrcode-monster2.sd-webui-openpose-editor3.sd-webui-depth-lib4.roop(换脸插件)5.sd-webui-qrcode-toolkit(艺术二维码)5.光源控制6.二次元转真人7.动态视频转场(loopback-wave&#xff…

前馈神经网络dropout实例

直接看代码。 (一)手动实现 import torch import torch.nn as nn import numpy as np import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt#下载MNIST手写数据集 mnist_train torchvision.datasets.MN…

一百六十三、Kettle——Linux上安装Kettle9.2(亲测有效,附截图)

一、目的 由于之前发现kettle8.2和kettle9.3这两个版本,或多或少的存在问题 比如kettle8.2的本地服务没问题,但在Linux上创建共享资源库时就有问题; 比如kettle9.3由于不自带shims驱动包,目前在新的下载官网上无法找到下载路径…

PCIE 信息

PCIe(外围组件互连快件)是用于连接高速组件的接口标准。每台台式电脑主板有许多 PCIe 插槽,可用于添加通用显卡,各种外设卡,无线网卡或固态硬盘等等。PC 中可用的 PCIe 插槽类型将取决于你购买的主板. PCIe 插槽有不同…

LeetCode 542. 01 Matrix【多源BFS】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

ubuntu18.04安装keil5(踩坑)看完再享用,别直接上手

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装winewine的总结 二、安装Keil5总结 前言 切记看完再享用,别直接上手,不然安装的时候会和我一样踩坑的(走了很多弯路…

【汇编语言】CS、IP寄存器

文章目录 修改CS、IP的指令转移指令jmp问题分析 修改CS、IP的指令 理论:CPU执行何处的指令,取决于CS:IP应用:程序员可以通过改变CS、IP中的内容,进行控制CPU即将要执行的目标指令;问题:如何改变CS、IP中的…

数据在内存中的储存·大小端(文字+画图详解)(c语言·超详细入门必看)

前言:Hello,大家好,我是心跳sy😘,本节我们介绍c语言的两种基本的内置数据类型:数值类型和字符类型在内存中的储存方法,并对大小端进行详细介绍(附两种大小端判断方法)&am…

打印技巧——word中A4排版打印成A3双面对折翻页

在进行会议文件打印时,我们常会遇到需要将A4排版的文件,在A3纸张上进行双面对折翻页打印,本文对设置方式进行介绍: 1、在【布局】选项卡中,点击右下角小箭头,打开页面设置选项卡 1.1在【页边距】中将纸张…

【校招VIP】java语言考点之List和扩容

考点介绍: List是最基础的考点,但是很多同学拿不到满分。本专题从两种实现子类的比较,到比较复杂的数组扩容进行分析。 『java语言考点之List和扩容』相关题目及解析内容可点击文章末尾链接查看!一、考点题目 1、以下关于集合类…

k8s容器加入host解析字段

一、通过edit或path来修改 kubectl edit deploy /xxxxx. x-n cattle-system xxxxx为你的资源对象名称 二、添加字段 三、code hostAliases:- hostnames:- www.rancher.localip: 10.10.2.180

Linux面试笔试题(1)

1、以长格式列目录时,若文件test的权限描述为:drwxrw-r–,则文件test的类型及文件主的权限是__A____。 A.目录文件、读写执行 B.目录文件、读写 C.普通文件、读写 D.普通文件、读 在这个问题中,我们需要解析文件权限的描述&…

ViT模型架构和CNN区别

目录 Vision Transformer如何工作 ViT模型架构 ViT工作原理解析 步骤1:将图片转换成patches序列 步骤2:将patches铺平 步骤3:添加Position embedding 步骤4:添加class token 步骤5:输入Transformer Encoder 步…

「Qt」文件读写操作

0、引言 我们知道 C 和 C 都提供了文件读写的类库,不过 Qt 也有一套自己的文件读写操作;本文主要介绍 Qt 中进行文件读写操作的类 —— QFile。 1、QFileDialog 文件对话框 一般的桌面应用程序,当我们想要打开一个文件时,通常会弹…

【广州虚拟现实开发】VR智能中控系统进一步提高VR教学管理水平

随着科技的不断发展,虚拟现实(VR)技术已经逐渐走进了人们的生活。在教育领域,VR技术也得到了广泛的应用,尤其是在教学终端中控系统方面。那么,广州华锐互动开发的VR智能中控系统对学校有何益处呢? 首先,VR智…

C# 学习笔记

此笔记极水~ ,来自两年前的库存。 是来自 B站 刘铁猛大佬 的视频,因为 好奇学了学。 其他 c# 变量的 内联赋值 vs. 构造函数内赋值 (引用自:https://www.iteye.com/blog/roomfourteen224-2208838) 上下文:c#中变量的内联赋值其…

Windows Server --- RDP远程桌面服务器激活和RD授权

RDP远程桌面服务器激活和RD授权 一、激活服务器二、设置RD授权 系统:Window server 2008 R2 服务:远程桌面服务 注:该方法适合该远程桌面服务器没网络状态下(离线),激活服务器。 一、激活服务器 1.打开远…

css学习4(背景)

1、CSS中,颜色值通常以以下方式定义: 十六进制 - 如:"#ff0000"RGB - 如:"rgb(255,0,0)"颜色名称 - 如:"red" 2、background-image 属性描述了元素的背景图像. 默认情况下,背景图像进…