【计算机网络学习之路】网络基础1

文章目录

  • 前言
  • 一. 计算机网络发展
    • 局域网和广域网
  • 二. 网络协议
  • 三. OSI七层模型
  • 四. TCP/IP四层(五层)模型
  • 五. 计算机体系结构与网络协议栈
  • 六. 协议形式及局域网通信
    • 数据包封装与分用
  • 七. 跨网络通信
  • 八. MAC地址与网络通信的理解
  • 结束语

前言

本系列文章是计算机网络学习的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步

本篇文章是网络学习的一些前景认识,基本都是概念性的知识

一. 计算机网络发展

最开始,计算机之间是彼此独立工作的,各自处理自己的业务

在这里插入图片描述

接着,因为一个人的业务可能会影响另一个人的业务,所以需要数据共享,于是尝试将多台计算机连接在一起

在这里插入图片描述

然后需要链接的计算机越来越多,就出现了局域网LAN,通过交换机和路由器连接在一起

在这里插入图片描述

最后,为实现全球互联网化,相隔千里的计算机也能互相通信,使用路由器将各个局域网连接,构成广域网

在这里插入图片描述

局域网和广域网

局域网

局域网,缩写LLAN,是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成

广域网
广域网,缩写WAN,又称外网,公网,指的是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,能连接多个地区,城市,国家或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
平常所指的互联网是属于一种公共型的广域网

局域网和广域网的区别

目前看来,二者的区别是范围大小,并且广域网内包含许多的局域网

另外,在之后的学习中,我们会理解:

  • 广域网上的每一台电脑都有一个或多个广域网IP,广域网IP一般要付费申请,且不能重复
  • 局域网上的每一台电脑都有一个或多个局域网IP
  • 局域网IP是内部分配的,两个局域网内的电脑可能有相同的IP,不会影响

二. 网络协议

要想连接多台计算机,实现数据共享,就要保证彼此传送数据的完整和一致
但计算机生产厂商各有不同,操作系统各有不同,计算机网络硬件设备各有不同,如此多的不同,势必影响数据的正确传输
如何解决呢?就是通过共同的标准——协议

就以打电话为例

简单将通行分为两层,语言层和通信设备层

在这里插入图片描述

可见,要想正常沟通,语言层需要协议统一,数据传送也需要协议统一
而语言层和通信设备层之间为低耦合,可以有不同语言或通信设备

三. OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范
  • 把网络从逻辑上分为了7层,每一层都有相关的物理设备,比如路由器,交换机
  • OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输
  • OSI将服务,接口,协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠通讯

但是OSI是最初的理论模型,较为复杂,后续出现了TCP/IP这一四层模型
后续也主要研究TCP/IP模型

OSI七层模型

在这里插入图片描述

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

TCP/IP是一组协议的代名词,它包括许多协议,组成立TCP/IP协议簇
TCP/IP通讯协议采用了5层的层级结构,但最后一层物理层多数不考虑,所以是TCP/IP4层模型
每一层都呼叫它的下一层所提供的网络来完成自己的需求

在这里插入图片描述

  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)等。网络编程主要针对应用层
  • 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机
  • 网络层(互联网层):负责地址管理路由选择、例如在IP协议中,通过IP地址标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)路由器工作在网络层
  • 数据链路层(网卡层):负责设备之间的数据帧的传送和识别。例如网卡设备的驱动,帧同步(从网线上检测到什么信号算作新帧的开始),冲突检测(冲突则重发),数据差错校验等。有以太网,令牌环网,无线LAN等标准,交换机工作在数据链路层
  • 物理层(了解):负责光/电信号的传递方式,比如现在以太网通用的网线(双绞线),早期以太网采用的同轴电缆,光纤,WIFI无线网使用电磁波等都属于物理层概念。物理层的能力决定了最大传输速率,传输距离,抗干扰性等。集线器工作在物理层

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

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

参考博客:TCP/IP四层模型和OSI七层模型的概念

五. 计算机体系结构与网络协议栈

在这里插入图片描述

可以看到网络协议栈是贯穿计算机体系结构的,层层对应。
并且传输层和网络层是在操作系统内部的,实际是属于文件系统的一部分。虽然不同操作系统的具体实现有所不同,但网络的这部分必须达成一致,才可以在大环境中实现通信。
数据链路层是驱动,可以有不同,比如以太网和令牌环网
用户这里指的不是所有人,而是会使用语言的工程师等

六. 协议形式及局域网通信

讲协议形式前,我们先举个例子,方便大家理解

  • 我们在网购时,比如购买一个键盘,快递员最后并不是直接将键盘送达,而是将包裹送达。而包裹外有快递单,上面有我们的地址,电话,用户名等等信息。
  • 网络通信的数据就像一个个商品,从发送方开始,就需要包裹,并且附带目的地址
  • 快递是商品+快递单,而网络数据是有效载荷+协议报头

接下来我们从协议栈角度,讲述“在吗”这一消息(有效载荷)如何通过网络协议栈上传到网络,又如何从网络中抓取解包的

在这里插入图片描述

这是简化的收发双方的网络协议栈,每层各自举例比较有代表性的协议

在这里插入图片描述

可以看到

  • 每一层都会给有效载荷添加自己的协议报头
  • 每一层都将上层所交付的数据当成有效载荷
  • 每一层也要能将自己的协议报头和有效载荷分离,并向上交付
  • 从协议层来看,每层都是跟对方的协议层直接通信
  • 同层协议,能够互相认识对方的报头

其中,最为重要的两点是
每个协议层都要

  1. 能将自己的报头和有效载荷分离
  2. 能将有效载荷向上交付

这两点分别称为解包分用

后续具体协议层的学习,我们也会围绕这两点展开

数据包封装与分用

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

下图为数据封装的过程
在这里插入图片描述

下图为数据分用的过程

在这里插入图片描述


局域网通信

举例:
就像在课堂上,王老师在讲台上问张三,昨天作业交了没,这个消息其实全班同学都听到了,但是因为对象不是自己,所以就忽略,丢弃这个消息了。只有张三会捕获这个消息,给出答复。
如果同时有多个人说话,那么彼此之间的话语就会影响,导致传输异常

所以,在局域网通行中,任何时刻只允许一个人向局域网中发送消息

七. 跨网络通信

图中为跨一个路由器的两个局域网(子网)

在这里插入图片描述

此处故意让双方主机使用不同的数据链路层,上面也说过,数据链路层不在操作系统中,可以不同

可以看到,路由器是级联两个不同局域网主机的媒介
路由器也是一台主机(节点),其有1.物理层 2.链路层 3.网络层
路由器因为要连接不同局域网,所提至少要级联两个子网,至少要有两个网络接口


主机A想要和主机B通信,需要先将数据发送给路由器,然后由路由器转发给主机B

首先面临的第一个问题是,如何定位路由器。
因为路由器也是主机,在局域网中如何定位呢?
方法就是标识所有主机——IP地址(表示公网中主机的唯一性,公网!公网!公网!

IP地址实际是一个整数
IPV4下,IP是一个4字节的整数
IPV6下,IP是一个16字节的整数
使用点分十进制表示,常见的有192.168.X.Y
范围是0.0.0.0 ~ 255.255.255.255
字符串风格的点分十进制IP地址是给人看的,计算机中是如此实现

struct ip
{
	int part1:8;
	int part2:8;
	int part3:8;
	int part4:8;
}

int srcIP=XXX;//一个IP地址

//转化成结构体
struct ip *p=(struct ip*)&srcIp;
//如此就按比特位填充,并且知道每8个比特位的数值
p->part1=...
p->part2=...

在IP层,会维护一个路由表,其中记录了该主机所属局域网的所有主机IP,所以可以知道目的地址是不是本局域网的主机。如果目的IP地址不是本局域网的,就会将数据转发给路由器,路由器再转发给主机B。
路由器也需要解包,然后匹配目的IP是否是自己的

注意:局域网中是上述的广播,即所有主机都会收到,但是因为其中的目的IP不是自己,所以将报文丢弃

就像大家在学校的学号,我们知道自己的学号,以及其中组成。面对一个陌生的学号,我们可能不知道这个学号是谁的,具体哪个学院的,但可以根据自己的学号,确定是不是和自己一个学院的

另外,路由器还会根据将要转发的数据链路层的协议重新添加链路层的报头,这样就避免了不同链路层无法通信的问题。
只要通过IP地址,就可以找到对应主机。IP协议及以上的协议没有看到任何网络方面的差异,IP地址屏蔽了底层子网机制的差异

其中运用的思想就是软件工程的核心思想:
任何软硬件问题,都可以通过添加一层软件层解决

八. MAC地址与网络通信的理解

MAC地址

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

网络通信的理解

在跨网络通信中,我们只举例了一个路由器连接的两个子网通信,实际上,真实的网络通信有许许多多的路由器和子网,所以路上一定途径多个路由器,进行了多次路由转发

可能路径如下:

在这里插入图片描述

线性如下:

在这里插入图片描述
因为路由器只需要交付到网络层(IP)即可,所以向上的线段较短

结束语

网络基础1的内容到此就结束了,感谢看到此处
欢迎大家纠错和补充
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

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

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

相关文章

plantuml最原始的主题如何设置

在startuml下一行添加 skin rose startuml skin rose:Hello world; :This is defined on several **lines**;enduml 效果如下: plantuml官网地址如下: ​​​​​​使用简单的文字描述画UML图的开源工具。轻松从简单的文字说明创建UML图。也有许多种可…

【proverif】proverif的语法3-认证协议的验证代码-案例分析

proverif-系列文章目录 【proverif】proverif的下载安装和初使用【proverif】proverif的语法1-解决中间人攻击-代码详解【proverif】proverif的语法2-各种密码原语的编码【proverif】proverif的语法3-认证协议的验证代码-案例分析 (本文) 文章目录 proverif-系列文章目录前言一…

【JVM】内存区域划分、类加载机制(双亲委派模型图解)、垃圾回收(可达性分析、分代回收)

一、JVM简介 JVM (Java虚拟机) 是执行Java字节码的虚拟机。它是Java平台的核心,并且为Java代码提供了跨平台的能力。JVM 是一种虚拟的计算机,在其上运行的程序是Java字节码,它提供了Java代码在不同操作系统和硬件平台上执行的能力。JVM 将Ja…

Selenium操作已经打开的Chrome浏览器窗口

Selenium操作已经打开的Chrome浏览器窗口 0. 背景 在使用之前的代码通过selenium操作Chrome浏览器时,每次都要新打开一个窗口,觉得麻烦,所以尝试使用 Selenium 获取已经打开的浏览器窗口,在此记录下过程 本文使用 chrome浏览器来…

云端力量:探索亚马逊云服务器,提升您的业务无限可能

文章目录 前言亚马逊云服务器简介亚马逊云服务器的优势使用步骤Amazon EC2 实例类型常见问题 总结 前言 随着大数据、人工智能和物联网等技术的飞速发展,企业对于高效、灵活和可扩展的计算需求日益增强。在这样的背景下,亚马逊云服务器 以其卓越的性能、…

ubuntu提高 github下载速度

Github一般用于Git的远程仓库,由于服务器位于国外,国内访问速度比较慢,为了提高访问速度,决定绕过DNS域名解析。 获取Github的IP地址 按下ctrl+alt+T打开命令终端,输入: nslookup gi…

电路综合-基于简化实频的集总参数电路匹配2-得出解析解并综合

电路综合-基于简化实频的集总参数电路匹配2-得出解析解并综合 电路综合-基于简化实频的集总参数电路匹配1中介绍了从要匹配的电路结构得到所对应的均衡器的阻抗数值解的过程。我们下一步需要将数值解拟合成正实函数的形式,从而进行电路综合。此处接着这个教程继续。…

redis运维(八)数据类型(一)字符串

一 字符串 说明: 不需要精通,但是得有一个粗略的认识,然后利用help command查看具体使用仅做记录查询 ① 基础概念 说明: ex是用来收敛内存使用率备注: 早期set是不带ex的默认: 不设置ex,是常驻内存 key和value的命名规范 …

<C++> 反向迭代器

我们知道正向迭代器的设计:begin迭代器指向第一个数据,end迭代器指向最后一个数据的下一个位置 。移向下一个数据,解引用得到数据的值,并根据容器储存方式的不同,容器有不同类型的迭代器。 注意:rbegin迭代…

SSH-远程连接服务器

一、理论知识 目前远程连接服务器的主要类型: 文字接口明文传输:Telnet、RSH 等为主,目前非常少用。文字接口加密:SSH 为主,已经取代上述的 Telnet、RSH 等明文传输方式。图形接口:XDMCP(X Di…

数据结构树与二叉树的实现

目录 一、普通树的存储结构 1、双亲表示法 2.孩子表示法 二、二叉树 1.二叉树的顺序存储(必须是完全二叉树,否则很浪费空间) 1)结构体 2.二叉树的链式存储 1)结构体 2)操作 1.创建一颗二叉树 2.创…

window 搭建 MQTT 服务器并使用

1. 下载 安装 mosquitto 下载地址: http://mosquitto.org/files/binary/ win 使用 win32 看自己电脑下载相应版本: 一直安装: 记住安装路径:C:\Program Files\mosquitto 修改配置文件: allow_anonymous false 设置…

Express.js 与 Nest.js对比

Express.js 与 Nest.js对比 自从 Node.js 发布以来,Javascript 在后端领域的使用有所增加。由于 Node.js 的使用越来越多,每天都会有新的框架和工具发布。Express 和 Nest 是使用 Node.js 创建后端应用程序的最著名的框架之一,在本文中&…

【入门篇】1.1 redis 基础数据类型详解和示例

文章目录 1. 简介2. Redis基础数据类型2.1 String类型场景示例常用命令示例 2.2 List类型场景示例 2.3 Set类型场景示例 2.4 Hash类型场景示例 2.5 Sorted Set类型 3. 使用Redis存储数据的注意事项1. 内存管理2. 数据持久化3. 高并发下的性能考量 4. 参考资料 1. 简介 Redis概…

app在线客服系统怎么对接

随着移动互联网的快速发展,越来越多的企业开始意识到在线客服系统的重要性。而对于一个App来说,一个高效的在线客服系统更是必不可少的。本文将介绍如何对接App在线客服系统,提高用户体验和客户满意度。 一、在线客服系统的作用和优势 1. 提供…

【Linux】:进程间通信

进程间通信 一.基本概念二.简单的通信-管道1.建立通信信道2.通信接口 一.基本概念 是什么 两个或多个进程实现数据层面的交互。 因为进程独立性的存在,导致进程间的通信成本比较高。 为什么 因为我们有多进程协同的需求。 怎么办 a.进程间通信的本质:必须让不…

TMS320F28335使用多个串口时,SCIRXST Register出现错误

TMS320F28335使用多个串口时,SCIRXST Register出现错误 void ClearErrorState(void) {if((SciaRegs.SCIRXST.bit.FE 1)||(SciaRegs.SCIRXST.bit.BRKDT 1)){SciaRegs.SCICTL1.bit.SWRESET 0;SciaRegs.SCICTL1.bit.SWRESET 1;}if((ScibRegs.SCIRXST.bit.FE 1)||(S…

反转链表(图解)

LCR 024. 反转链表 - 力扣(LeetCode) 题目描述 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 样例输入 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2&…

【漏洞复现】NUUO摄像头存在远程命令执行漏洞

漏洞描述 NUUO摄像头是中国台湾NUUO公司旗下的一款网络视频记录器,该设备存在远程命令执行漏洞,攻击者可利用该漏洞执行任意命令,进而获取服务器的权限。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律&…

leetcode栈和队列三剑客

用队列实现栈 队列是先进先出的,而栈是只能在栈顶进行出栈和入栈,那我们这道题要用队列来实现栈的话,这里给的思路是两个队列,因为两个队列的话就可以相互导数据,比如我们来实现这个题目的push函数,我们的栈…