初识计算机网络

news2024/11/24 1:53:27

目录

网络的发展

重新看待计算机结构

大型存储平台

认识 "协议"

网络和OS之间的关系

初识网络协议

协议分层

OSI七层模型

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

网络传输基本流程 

局域网通信的原理

如果进行跨网络传输

网络通信里面的基本轮廓 

数据包封装和分用

下图为数据封装的过程

下图为数据分用的过程 

网络中的地址管理

认识IP地址

认识MAC地址


C语言总结在这常见八大排序在这

作者和朋友建立的社区:非科班转码社区-CSDN社区云💖💛💙

期待hxd的支持哈🎉 🎉 🎉

最后是打鸡血环节:想多了都是问题,做多了都是答案🚀 🚀 🚀

最近作者和好友建立了一个公众号

公众号介绍:

专注于自学编程领域。由USTC、WHU、SDU等高校学生、ACM竞赛选手、CSDN万粉博主、双非上岸BAT学长原创。分享业内资讯、硬核原创资源、职业规划等,和大家一起努力、成长。(二维码在文章底部哈!

网络的发展

独立模式 : 计算机之间相互独立 ;(网图)

网络互联: 多台计算机连接在一起, 完成数据共享;

局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;

广域网WAN: 将远隔千里的计算机都连在一起; 

所谓 " 局域网 " " 广域网 " 只是一个相对的概念 . 比如 , 我们有 " 天朝特色 " 的广域网 , 也可以看做一个比较大的局域网。
路由器:局域网和局域网间进行数据包转发(路由器是来连接不同的网络(局域网)的)。
局域网:网络的内部没有路由器。
广域网:有多种路由器还要接入公网。

重新看待计算机结构

首先,计算机内部是怎么传输数据的?其实就是用线连接起来,那么网络怎么传输数据?一样也是用线连接起来,只不过线更长了,网络知识的本质,就是因为线变长了!

其实一台计算机内部就可以看成一个小型网络,各个设备之间也是通过线来传输数据的,不过就是短了些。
对于两台计算机之间,在体系结构上,与其说是两台计算机通信,倒不如暂时说是两台计算机的网卡之间通过网线连接起来了,不过就是线长了些。
PS:我们一般把外设和内存连接的总线称为IO总线,CPU和内存连接的线为系统总线(一般说的32位,64位)。

大型存储平台

大型存储平台:就像一些大公司有各个集群,一个集群里面有多台主机。存储集群把任务放到缓冲集群,以任务队列的方式唐计算集群去运算,然后把结果返回到缓存集群,最后缓存集群再把结果写到存储集群,这就是使用多主机互相连通,实现宏观上的冯诺依曼体系结构

认识 "协议"

计算机之间的传输媒介是光信号和电信号 . 通过 " 频率 " " 强弱 " 来表示 0 1 这样的信息 . 要想传递各种不同的信息, 就需要约定好双方的数据格式。

比如计算机生产厂商有很多,计算机操作系统, 也有很多,计算机网络硬件设备, 还是有很多,如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议。

所谓协议,就是一方和另一方的约定。

有协议也要有标准,不止是软件上的标准,硬件上也要有。(比如硬件上传递 0 1 信号的方式要一样,这样才能在传递和提取的时候保证不会出现问题)

网络和OS之间的关系

在网络当中主机之间直接通信一定是由用户发起,使用应用层协议(可以自己写也可以用现成的),贯穿对应的协议栈,到我们的物理层,再经过网络路由转发到对方的物理层,然后提交到对方的数据链路层,依次向上提交,最后到对方的用户。

1. 体系结构决定,数据包在主机内进行流动的时候,一定是要自顶向下或者自底向上的进行流动的,所有的IO都是这样。(为什么要自顶向下或者自底向上交付原因就是体系结构决定的,要网络通信就要把数据从应用层交到底层,因为只有硬件能接发数据)

2. 同层协议都认为自己在和对方直接通信。

3. 为了维护协议,一定要在被传输的数据上,新增其他数据(比如你买快递上面会有快递单号,虽然你只要快递,但是如果没有单号你就无法被快递员正确送达你的快递),我们把每一层要交付给下一层的数据,给他添上本层的“多出来的数据”拼接在原始数据的开头。(这个多出来的数据就叫做 报头)((封装和解包就是数据自上而下必须要添加每一层的协议(添加报头),自下而上的时候解包再把报文再拆出来))

初识网络协议

打电话为例(网图):

在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.

在打电话人的层面,都认为是和对方直接沟通的,在通信设备层也一样,他们也认为是和对面直接沟通的(每一层都认为自己那一层是在直接沟通的),所以在自己的那一层,改变了通信协议,是不影响下面或者上面的层的。

协议分层

然后为什么要分层?

我们知道软件是可以分成的,他的好处就是:

1. 软件在分层的同时,也把问题归类了。

2. 分层的本质:软件上的解耦。

3. 便于工程师进行软件维护。

--》网络本身的代码,就是层状结构。 

每一层都认为自己那一层是在直接沟通的 

分完层最大的好处就是上层只需要调用下层的接口/方法就可以了,不必关心底层实现(比如之前调用系统接口等)

OSI七层模型

OSI Open System Interconnection ,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
把网络从逻辑上分为了 7 . 每一层都有相关、相对应的物理设备,比如路由器,交换机 ;
OSI  七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输 ;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整 . 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
但是 , 它既复杂又不实用 ; 实用的是 TCP/IP协议。 
OSI定的非常好,但是在实施的时候,发现有些层是不好处理的,所以实际制作的时候,做出来的是五层协议

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

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
操作系统内部,有一个模块,叫做tcp/ip协议,网络协议栈是隶属于操作系统的。
TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
物理层 : 负责光 / 电信号的传递方式 . 比如现在以太网通用的网线 ( 双绞 线 ) 、早期以太网采用的的同轴电缆 (现在主要用于有线电视 ) 、光纤 , 现在的 wififi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器 (Hub) 工作在物理层。
数据链路层 : 负责设备之间的数据帧的传送和识别 . 例如网卡设备的驱动、帧同步 ( 就是说从网线上检测到什么信号算作新帧的开始) 、冲突检测 ( 如果检测到冲突就自动重发 ) 、数据差错校验等工作 . 有以太网、令牌环网, 无线 LAN 等标准 . 交换机 (Switch) 工作在数据链路层。
网络层 : 负责地址管理和路由选择 . 例如在 IP 协议中 , 通过 IP 地址来标识一台主机 , 并通过路由表的方式规划出两台主机之间的数据传输的线路( 路由 ). 路由器 (Router) 工作在网路层。
传输层 : 负责两台主机之间的数据传输 . 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。
应用层 : 负责应用程序间沟通,如简单电子邮件传输( SMTP )、文件传输协议( FTP )、网络远程访问协议(Telnet )等 . 我们的网络编程主要就是针对应用层。
PS:
集线器:可以放大信号(肾上腺激素属于是)
调制解调器:在网络里传输和在家传输信号编码格式是不一样的。有一种是数字信号,有一种是模拟信号。主要是将数字转模拟或者反过来,一个是比较利于在局域网进行通信的,一个是利于长距离转发的。所以说从外网进来的数据是要经过锚转发到你的路由器然后被你所识别的。

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.

一般而言

对于一台主机 , 它的操作系统内核实现了从传输层到物理层的内容 ;
对于一台路由器 , 它实现了从网络层到物理层 ;
对于一台交换机 , 它实现了从数据链路层到物理层 ;
对于集线器 , 它只实现了物理层 ;

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);

网络传输基本流程 

局域网通信的原理

1. 每台主机都要有唯一标识:该主机的MAC地址

MAC地址实际上就是网卡地址,就是我们这个机器在出厂的时候配套得装有网卡,网卡上面已经内嵌了当网卡所对应的MAC地址,MAC地址主要工作在局域网,用来在局域网中标定主机的唯一性。

2. 任何一台主机,在任何时刻都可以发消息,这种局域网称为碰撞域的概念(就是局域网内的信息可能会互相干扰)。因为有碰撞域所以会导致我们无法准确的听到对应等待消息。所以每一台主机是能过识别局域网中发生了碰撞的(碰撞检车),然后执行碰撞避免,等到没有人发数据的时候再发。

以太网MAC地址 

ifconfig 查看 

PS:站在系统角度,我们就可以发现以太网就是一个临界资源。

PS: 为什么叫以太网

物理学界是任务任何事物的传播都是有介质的,那么光也一样,那太空是真空,他们就猜想太空中有我们没有发现的物质,他就称为以太,然后就有科学家去证明,然后发现几天就做不下去了,因为所有都指向他是不存在的。然后这个事情就变成了物理界的“笑话”(因为当时很多科学家持肯定态度,一定存在以太)。后来就在上个世纪5 60年代有一批网络工程师,开始通信,构建了一个局域网然后能过通信,他们就在想为这个能通信的局域网起一个名字,他们就想到了物理学界的这个事情,为了去致敬就把当时那种局域网通信的标准称为以太网。

如果进行跨网络传输

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

只要是路由器,只要能过在两个网络中进行跨网络传输数据的时候,那么他至少是有两个网络接口,甚至是两张网卡,分别连接不同的网络。我们可以把路由器分别当作两边网络中的一台主机。

对上补充
IP地址在局域网也是唯一的但是目前不考虑

因为IP层及以上发送和接受主机看到的数据都是一样的,所以我们把网络也称为IP网络,屏蔽了局域网的网络差异(源MAC地址和目标MAC地址不同)。这样在IP层以上全网的主机就都可以使用同一份协议,这就是IP的意义。
上面是怎么做到的:

就是他走到对应的局域网时,套上局域网的报头,经过路由器时会去掉报头,然后到下一个路由的时候重新封装MAC地址,所以在一个IP报文在不断流动的时候,他的目的IP一定是不变,但是他的源MAC地址和目标MAC地址一定是在变的。IP地址不变就相当于用IP层在网络内,将所有的主机设置了一层软件层,也叫做在IP协议往上,所有人在任何设备上看到的数据都是一样的。 

网络通信里面的基本轮廓 

所以网络数据转发的时候,数据自顶向下经过路由器,就是MAC地址一直经过路由器的选择一直在解包和封包再重新进行转发,经过路由器的选择,到达目标主机。
网络传输的本质就是数据在网络传输的过程中,不断的被封包和不断的被解包的过程,同时配合查找IP层对应的各种路由表进行路径选择。 

数据包封装和分用

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

下图为数据封装的过程

下图为数据分用的过程 

决定把自己向上交付给哪一层协议的过程我们称之为 有效载荷 分用 的过程。

(有效载荷:除去报头的部分)

1. 一般而言,任何报头属性里面,一定要存在的一些字段支持,我们进行封装和解包。

2. 一般而言,任何报头属性里面,一定要存在的一些字段支持,我们进行分用! 

网络中的地址管理

认识IP地址

IP协议有两个版本, IPv4IPv6. 我们没有特殊说明的, 默认都是指IPv4。 

1. IP地址是在IP协议中, 用来标识网络中不同主机的地址。
2. 对于IPv4来说, IP地址是一个4字节, 32位的整数。
3. 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

认识MAC地址

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

最后的最后,创作不易,希望读者三连支持💖

赠人玫瑰,手有余香💖

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

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

相关文章

多线程同步

文章目录一、多线程同步竞争与协作互斥的概念同步的概念互斥与同步的实现和使⽤锁信号量⽣产者-消费者问题经典同步问题读者-写者问题一、多线程同步 竞争与协作 在单核 CPU 系统⾥,为了实现多个程序同时运⾏的假象,操作系统通常以时间⽚调度的⽅式&am…

为dev c++配置图形开发环境easyx之mingw32

easyx官方的文档在说明如何配置环境上面不太详细,所以就有了我的那篇博文为dev c配置图形开发环境easyx,默认的是在64位的编译器TDM-gcc下配置的,也就是我们配置的easyx最终都是放在mingw64文件夹下的,5.1版本后的dev c内置的编译…

什么是分层架构

👨‍💻个人主页:微微的猪食小窝 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 微微的猪食小窝 原创 1、什么是架构分层? 分层架构是将软件模块按照水平切分的方式分成多个层,一个系统由多层组成…

同时安装Vue2和Vue3

背景 当我们的工作中使用的还是脚手架还是基于Vue2.x的版本,那么我们想要学习和使用Vue3怎么办?直接升级脚手架的话,会影响到我们现在的项目,那就需要去处理下关于Vue3的东西了。 下载安装Vue3的脚手架 任意磁盘根目录新建一个文件…

【深入理解C++】new/delete和new[]/delete[]探秘

文章目录1.operator new()和operator delete()2.new记录分配的内存大小供delete使用3.new[]/delete[]申请和释放一个数组3.1 基本数据类型(内置类型)3.2 自定义类型(类类型)4.new/delete和new[]/delete[]要配对使用1.operator new…

开发 Chrome 扩展 之 Hello World 心血来潮

开发 Chrome 扩展 Hello, World 项目加载未打包的扩展icon刷新引入 JS 与错误处理 开发 Chrome 扩展 开发 Chrome 扩展除了需要基本的 HTML, CSS, JS 之外, 还可以使用 Chrome 额外提供的 API. 除了需要的 .html, .css 和 .js 文件之外呢, 扩展还包括不同类型的文件, 具体可…

杨辉三角形(Java版)

不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 文章目录1. 什么是杨辉三角形2. 实现思路(方式)2.1 递归方式2.2 递归…

Nginx简单使用

安装龙蜥操作系统 镜像文件在这里下载就行 下载之后新建虚拟机 ISO选择刚才下载文件即可 具体配置可以照我来 也可自定义 基本工具安装 安装一下最基本的网络工具 yum install net-tools openssh-server wget tar make vim -y测试一下ssh连接 方便后期操作 修改主机名 …

Jedis 使用教程总结

一、Redis 常用命令 1 连接操作命令 quit:关闭连接(connection)auth:简单密码认证help cmd: 查看 cmd 帮助,例如:help quit 2 持久化 save:将数据同步保存到磁盘bgsave&#xff…

设计模式之原型模式

文章目录1.前言概念使用场景2.原型模式核心组成UML图3.浅拷贝与深拷贝基本类型与引用类型浅拷贝代码演示深拷贝代码演示4.原型模式的优点与缺点1.前言 概念 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的…

Cpp知识点系列-类型转换

前言 在做题的时候发现了需要用到类型转换,于是在这里进行了简单的记录。 历史原因,慢慢整理着发现类型转换也能写老大一篇文章了。又花了时间来梳理一下就成了本文了。 cpp 之前使用的环境是DEV-C 5.4,而对应的GCC版本太低了。支持c11需要…

【CSS】重点知识梳理,这样上手无压力

推荐前端学习路线如下: HTML、CSS、JavaScript、noodJS、组件库、JQuery、前端框架(Vue、React)、微信小程序和uniapp、TypeScript、webpack 和 vite、Vue 和 React 码源、NextJS、React Native、后端内容。。。。。。 CSS定义: …

docker入门到精通一文搞定

文章目录前言一、Docker概述1.Docker为什么会出现?2.Docker相比VM技术3.Docker 能做什么?3.1 比较Docker和虚拟机技术的不同:3.2 DevOps (开发、运维):4个特点二、Docker安装1.dokcer架构图:2.Docker基本组成&#xff…

python+django体质测试数据分析及可视化设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 B/S架构 4 本选题则旨在通过标签分类管理等方式,实现管理员:管理员:首页、个…

11.前端笔记-CSS盒子模型-外边距margin

1、margin 1.1 margin的语法 盒子与盒子之间的距离 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

linux 系统的磁盘 mbr 转gpt方法

linux磁盘用fdisk格式化挂盘的格式都为mbr, 不支持大于2T的磁盘扩容&#xff0c;需要用parted转化。 查询磁盘格式 输入&#xff1a; fdisk -l 看Disk label type 的值&#xff0c;是dos 的为mbr 是gpt的为gpt 当前&#xff0c;因挂盘时&#xff0c;用的fdisk方式选gpt,挂…

基于STM32的u8g2移植以及学习

实验硬件&#xff1a;STM32F103C8T6&#xff1b;0.96寸OLED&#xff08;12864&#xff09; U8g2库开源网址&#xff1a;https://github.com/olikraus/u8g2 一、u8g2库知识 1.1 什么是u8g2&#xff1f; U8g2是嵌入式设备的单色图形库。主要应用于嵌入式设备&#xff0c;包括我…

正大国际期货:投资外盘期货如何运用K线图中十字星形态?

很多人都明白&#xff0c;做外盘期货需要学会看线图。那么K线图上面的一根两根的柱子代表的什么意思呢&#xff1f;其中星星点点的十字星又是什么意思&#xff1f;下面正大IxxxuanI详细给大家讲解一下&#xff01; 1、什么是多头十字星形态&#xff1f; 多头十字星是一种经典…

KEITHLEY 吉时利2601B源表产品技术参数

KEITHLEY 2601B 吉时利 2601B 源表让您可以比以前更快、更轻松、更经济地进行精密直流、脉冲和低频交流源测量测试。Keithley 2601B 通过结合以下特性&#xff0c;为 IV 功能测试提供竞争产品 2 到 4 倍的测试速度&#xff1a; 吉时利的高速第三代源测量单元 (SMU) 设计 嵌…

【Python】八、函数的使用

文章目录实验目的一、定义函数二、调用函数三、参数的传递和函数的返回值四、编写函数&#xff0c;输入不同的参数&#xff0c;绘制不同的科赫曲线参考代码实验截图实验目的 掌握函数的定义和调用&#xff1b;掌握函数的用法&#xff1b;理解递归&#xff1b;培养学生动手查阅资…