计算机网络 1

两台主机想通信,其实本质就是两个文件的资源交换,但是长距离的通信,面临的是很多的问题。这个时候需要通过一些方式来保证可靠性
在这里插入图片描述

什么是协议

这样一个例子,我是住在农村,我读高中了我需要去县里面读书。这个时候呢,本来给的生活费就不多,我不想把生活费浪费在打电话上。我就和家里面有一个约定。说,如果电话响了一声,证明我安全达到学校,如果电话响了两声,就证明我没有生活费了,你需要给我打钱,如果电话响了两声以上,就是证明我有其他事情找你,你必须接电话了。

但是这样就行了吗?

这个是代表我们能够正常的聊天,但是在真正聊天之前我们还需要做一些事情的。
比如说我们是一个帮派,很大很大。就是全国各地都有,我们为了确认对方是不是跟我们是一个帮派的,这个帮派的军师定了一个暗号,说“天王盖地虎” -》回答“小鸡炖蘑菇”才算正确。这个跟我们上面讲的协议差不多,但是有各种各样的人啊。方言对于军师来说听得懂,但是对于那些普通的小跟班,听不懂啊!怎么办?就不把对方当成一派的,杀了、。后面军师怪罪下来,说你为什么把对方杀了,对方回答正确了,那个小跟班说我听不懂啊我确认不了。军事一想确实是这样,但是就要求只是要这个帮派的都要学习普通话,用普通话会答暗号。这样就没问题啦。

这就是传说中的网络分层模型

在这里插入图片描述

为什么要分层,想想我们上面的两个例子。

在这里插入图片描述

协议 = 报头+有效载荷

协议我知道了,这个报头和有效载荷是什么呢?
我们想一下我们在网上购物,我们买了一个东西,但是商家发快递的时候会包装一个纸盒,顺丰快递呢会包装一个快递单在纸盒上。那我明明就只是买了东西(有效载荷),为什么要给我一个快递单子(报头呢)?这个快递单就是一个报头。使用俩区分是哪家快递公司的。同样,这里的每一层都有对应的协议。

在这里插入图片描述
在这里插入图片描述

mac的理解

我们要知道,ipv4现在已经不够用了,但是为了保证全国的机器可用,就会先给一个区域的位置的分一个地址,这个地址叫ip地址,然后,我们对这个区域的机器里面是公用一个ipv4地址的。然后但是我们又要区分这个区域里面的每一个机器,这个地址就是mac地址。到时候我们通信的时候,大多数都是由路由转到这个地址(mac地址)
在这里插入图片描述

这是一个用户A给用户b发送请求的过程,每一层都需要加一个报头。

在这里插入图片描述
在这里插入图片描述

有两个关键的问题

1 如何判断哪里是报头,哪里是有效载荷?
2 如何判断自己的有效载荷要交给上层的哪一个协议呢?

如何找这个问题很简单,就是一个倒着的多叉树,往上每一个节点一一比对就行。
针对第一个问题,可以用一个特殊额分隔符作为切分(这里后面会自己实现)

在这里插入图片描述

局域网的类别

在这里插入图片描述

西游记的例子
首先我们会有一个例子,唐僧的目的地是从东土大唐到西方如来佛主哪儿去,但是他到女儿国的时候,这样给女儿国国王说,女儿国国王给他说你的下一步是去黑风岭。
在这里插入图片描述

那么接下来我们要理解一下传输的过程了

在同一个局域网中,这个并不会完整的这样进行。当我们访问127.0.0.1的时候,直接从连路层直接就回到本机了。
在这里插入图片描述

令牌环网机制就是锁(后续了解一下)

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.
在这里插入图片描述
简要的叙述一下流程,首先我们跟上面的西游记一样,有一个初始ip 和 目标ip 但是网络这么大,不可能一下就从A发到B 。这时候我们用一些图的深度优先啊,广度优先啊算法之类。搜索目标路径。我们从物理层开始传输,传输到下一个节点的时候,物理层要往上开始分解之前的报头,分解之前的ip。到了这一步判断ip对不对。不对,就往下封装自己的报头,在物理层这样一步一部的往下发送,直到ip正确。

数据包封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封(Encapsulation).
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理

下图为数据封装的过程

在这里插入图片描述

解封过程

在这里插入图片描述

网络中的地址管理

认识IP地址

IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
IP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数;
我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

认识MAC地址

MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

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

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

相关文章

01.并发编程简介

1 什么是并发编程 所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。 2 为什么我们要学习并发编程? 最直白的原因就是因为面试需要,大厂的 Java 岗的并发编程能力属于标配。 而在非大厂…

基于长短期记忆网络 LSTM 的送餐时间预测

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

Java进阶学习笔记30——BigDecimal

BigDecimal: 用于解决浮点型运算的,出现结果失真的问题。 运行结果: package cn.ensource.d4_bigdecimal;import java.math.BigDecimal;public class Test {public static void main(String[] args) {// 目标:了解BigDecimal类do…

科林Linux5_线程

一、线程基础 进程是操作系统经典的执行任务的生产力。 进程是最小的资源分配单位,进程的内存开销较大,在内存资源不变的情况下,提高进程的执行能力(生产力) 线程寄存在进程中,与进程共享资源&#xff0…

泛型...

定义&#xff1a;在编译过程中约束操作的数据类型。&#xff08;统一数据类型&#xff09; 格式&#xff1a;<数据类型> 泛型中不能写基本数据类型。 泛型类 在一个类中&#xff0c;某个变量的数据类型不确定时&#xff0c;可以定义带有泛型的类。 泛型的底层是Obje…

Java 泛型基础

目录 1. 为什么使用泛型 2. 泛型的使用方式 2.1. 泛型类 2.2. 泛型接口 2.3. 泛型方法 3. 泛型涉及的符号 3.1. 类型通配符"?" 3.2. 占位符 T/K/V/E 3.3. 占位符T和通配符&#xff1f;的区别。 4. 泛型不变性 5. 泛型编译时擦除 1. 为什么使用泛型 Java 为…

Pandas 模块-操纵数据(12)-处理字符串数据

目录 1. .str 模块 1.1 数据准备 1.2 .str 函数详解 1.2.1 .str capitalize() 首字母大写 1.2.2 .str casefold() 返回字符串的副本 1.2.3 .str cat() 连接输出 1.2.4 .str center(width[,fillchar]) 字符串居中 1.2.5 .str contains() 含有特定字符 1.2.6 .str count() 计…

【代码随想录——回溯算法二周目】

1. 组合总和 var (path []intres [][]int )func combinationSum(candidates []int, target int) [][]int {path make([]int, 0)res make([][]int, 0)dfs(candidates,target,0,0)return res }func dfs(candidates []int, target int,tempTarget int,start int) {if tempTarg…

【Xilinx】常用的全局时钟资源相关Xilinx器件原语

1 概述 常用的与全局时钟资源相关的Xilinx器件原语包括&#xff1a; IBUFGIBUFGDS、OBUFGDS 和 IBUFDS、OBUFDSBUFGBUFGPBUFGCEBUFGMUXBUFGDLLIBUFDS_GTXE1IBUFDS_GTE2IBUFDS_GTE3OBUFDS_GTE3IBUFDS_GTE4OBUFDS_GTE4DCM 刚开始看到这写源语&#xff0c;免不了好奇这些源语对应的…

网络空间安全数学基础·群

重点&#xff1a; 1. 群及子群的定义及相关结论 2. 群的判断,子群的判断 3. 群的阶,元素的阶,它们的相互关系 4. 同态,同构,核子群 2.1群的定义 定义&#xff1a;设G是一非空集合。如果在G上定义了一个代数运算&#xff0c;称为乘法&#xff0c;记为ab&#xff0c;而且这个运…

Ubuntu18.04 OpenSSH升级

升级前版本&#xff1a; rootecs-m2eqyb:/opt# ll total 20912 drwxr-xr-x 2 root root 4096 May 10 16:23 ./ drwxr-xr-x 24 root root 4096 May 10 14:38 ../ -rw-r--r-- 1 root root 1848766 May 10 16:23 openssh-9.7p1.tar.gz -rw-r--r-- 1 root root 18038…

程序包org.springframework.boot不存在

springBoot项目启动报错 程序包org.springframework.boot不存在 1、检查依赖 首先检查pom文件判断依赖是否存在 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.4.5…

二维前缀和

我们计算一维前缀和时的得心应手&#xff0c;但是到二维前缀和就有点力不从心了&#xff0c;这里总结了一下规律&#xff1a; 计算二维前缀和时我喜欢从下标为1的时候开始&#xff1a; per[i][j]per[i][j-1]per[i-1][j]-per[i-1][j-1]a[i][j]; i表示行&#xff0c;j表示列,i和…

嵌入式进阶——舵机控制PWM

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 舵机信号线代码示例初始化PWM初始化UART打印日志初始化外部中断Extimain函数 舵机最早用于船舶上实现转向功能,由于可以通过程序连…

Go使用结构体实现类(面向对象)

前置 package main ​ import ("fmt" ) ​ // 矩形结构体 type Rectangle struct {Length intWidth int } ​ // 计算矩形面积 func (r *Rectangle) Area() int {return r.Length * r.Width } ​ func main() {r : Rectangle{4, 2}// 调用 Area() 方法&#xff0c;计…

BUUCTF-WEB3

[极客大挑战 2019]Knife1 1.打开附件链接 一句话木马eval($_POST["Syc"]); 2.中国蚁剑 用中国蚁剑连接 在根目录下找到一个名为flag的文件 3.得到flag [极客大挑战 2019]Upload1

gcc g++不同版本切换命令

sudo update-alternatives --config g sudo update-alternatives --config gcc ubuntu20.04 切换 gcc/g 版本_ubuntu降低g版本-CSDN博客

Python零基础-中【详细】

接上篇继续&#xff1a; Python零基础-上【详细】-CSDN博客 目录 十、函数式编程 1、匿名函数lambda表达式 &#xff08;1&#xff09;匿名函数理解 &#xff08;2&#xff09;lambda表达式的基本格式 &#xff08;3&#xff09;lambda表达式的使用场景 &#xff08;4&…

Linux -- 进程间通信的五种方式

IPC&#xff08;InterProcess Communication&#xff09;的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息队列、信号量、共享存储、Socket、Streams等。其中Socket和Stream支持不同主机上的两个进程IPC。 管道&#xff08;Pipes&#xff09;&#xff1a…

【数据库】基于PyMySQL连接并使用数据库(代码示例)

这里写目录标题 前言1、安装PyMySQL2、打开要连接的数据库3、创建数据库连接4、获取数据库版本5、新建数据库表6、向表中插入数据7、查询表中的相关记录8、更新表中的相关记录9、删除表中的相关记录10、关闭游标和连接完整代码 前言 本文演示了如何基于PyMySQL使用代码来创建数…