网络基础入门

news2024/12/23 23:51:14

目录

网络存在的意义

网络发展

网络在哪里?

网络是分层的

理解分层

软件可以分层

网络协议栈也是层状结构

认识协议

协议是什么

协议分层

网络传输需要解决的四个问题

OSI七层模型(了解为主)

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

网络传输基本流程

局域网通信

什么是报头

位段变量定义了一个报头

报头和有效载荷

报头中有些什么

以太网和令牌环网

跨网络通信

路由器怎么能认路

数据包封装和分用

网络中的地址管理

认识IP地址

认识MAC地址

本篇博客是博主有关网络学习的第一篇博客,看完本文你能了解到:

  1. 站在系统的角度,理解网络到底是个啥;

  2. 了解网络的基本结构;

  3. 了解网络协议的意义, 重点理解TCP/IP五层结构模型;

  4. 学习网络传输的基本流程, 理解封装和分用;

由于是刚刚开始学习网络,因此具体的协议我会在后面的博客中详谈,本文主要是给大家搭建起一个整体的框架,部分内容更多的是基于感性的认知。全是概念,下篇博客将开启网络套接字的使用,在Linux上通过代码创建我们自己的服务器。

网络存在的意义

提高数据交互的效率

众所周知,计算机最初是美国军方用于计算弹道轨迹的,在这些先进的设备流入高校后,高校内部对于计算机的使用就有数据研究的需求和沟通的需求,为了实现高效的协作,网络便应运而生了,可以说,网络存在的最重要的意义就是提高了数据交互的效率。

网络发展

独立模式: 计算机之间相互独立;

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

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

  • 路由器:帮助我们实现跨网络转换

  • 猫:我们想要上网往往都会需要安装猫,猫又叫做调制解调器,所谓调制,就是把数字信号转换成电话线上传输的模拟信号(更适合远距离传输;解调,即把模拟信号转换成数字信号。

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

        所谓 "局域网" 和 "广域网" 只是一个相对的概念。比如我们国家的广域网,其实也可以看作是一个较大的局域网。

    

网络在哪里?

网络的发展我们也大致清楚了,那么我们所说的网络到底在哪里呢?

这里的网络,指的是网络协议栈。它是一个软件,贯穿体系结构的。

   

 网络在计算机体系结构的哪里呢?

其中传输层和网络层就是所谓的TCP/IP协议栈,是属于OS的一部分。

网络是分层的

理解分层

  1. 软件设计方面的优势,低耦合。

  2. 分层的依据:功能较集中,耦合度高的模块,高内聚。

  3. 每一层都解决特定的问题。

软件可以分层

        以我们常用的STL为例,我们使用其各种容器的接口调用时,并不需要关心其底层的实现,这事实上就形成了分层。

网络协议栈也是层状结构

网络也可以算的上是软件,因而网络协议栈是层状结构也就不足为奇了。

认识协议

协议是什么

"协议" 是一种约定.

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

计算机生产厂商有很多; 计算机操作系统, 也有很多; 计算机网络硬件设备, 还是有很多; 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?

        这时需要有人站出来(一般是行业的龙头老大), 约定一个共同的标准, 大家都来遵守, 这就是网络协议;

比如华为所提出的5G标准。

        

协议分层

以打电话为例子:

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

        分层最大的好处在于 "封装" ,即软件设计时常说的高内聚低耦合。分层让我们更换一层的协议时不需要修改其他层的协议。

网络传输需要解决的四个问题

 

OSI七层模型(了解为主)

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;

  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

  • 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解(去掉物理层是四层)。

 

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

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

 

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wififi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层。

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

一般而言

  • 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;

  • 对于一台路由器, 它实现了从网络层到物理层;

  • 对于一台交换机, 它实现了从数据链路层到物理层;

  • 对于集线器, 它只实现了物理层;

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

网络传输基本流程

局域网通信

从上图,我们可以简单的看出在同一个网段内的两台主机进行信息传输时的流程。数据传到对应层时,都会添加上对应层的报头(首部信息)。

什么是报头

类似快递单

我们寄快递时,需要贴上快递单来标识各种信息。

报头中的数据,能够来指导当前层进行某种协议决策

位段变量定义了一个报头

Linux操作系统是用C语言写的,报头使用到了位段。

上图简单模拟了添加报头和去掉报头的过程。

报头和有效载荷

报头中有些什么

几乎每一层协议的报头都要包含两种字段:

  1. 当前报文的有效载荷要交给上层的哪一个协议。

  2. 几乎每个报头都要明确报头和有效载荷的边界。

以太网和令牌环网

局域网中任何时刻都只能有一台主机在向局域网中发送消息

网络是共享资源

 

  • 主机a向主机f发消息时,实际上该网络上的所有机器都能接收到该消息,发现自己不是该消息的目标后会直接忽略。

  • 如果有多个主机同时向网络中发送数据,可能会造成数据碰撞的问题

  • 每个主机应该有避免碰撞问题的算法。

  • 每个主机应该有检测碰撞的能力。

以太网和令牌环网的区别之一就在于检测碰撞的方法上:

以太网:

  • 主机向网络中发送消息时,自己也会从中收到一份,通过对比来判断是否发生了碰撞,如果发生碰撞就重新发送一份。

令牌环网:

  • 网络中只有一个主机持有令牌,持有令牌的主机才能发消息到网络中。(类似互斥锁)

一种攻击局域网的方式

相信了解了上面的内容,你一定知道了方法,只要我们绕过机器的防碰撞功能,不断向网络中发送垃圾数据,就能造成网络的瘫痪了。

抓包工具

因为网络是共享的,虽然我们的机器会忽视掉不是发送给我们的信息,但通过抓包工具,我们还是能够拿到信息的,不过不用太担心,因为现在我们在网上的数据都是经过加密处理的。

跨网络通信

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

  • 通过路由器,我们实现了以太网协议到令牌环网协议的转换,由此实现了跨网络的通信。

  • 由此,自IP层往上,我们是看不到底层网络的差异的,通过这种设计,我们能够忽略底层的差异,实现不同网络间的大一统

路由器怎么能认路

我们在网络中发送的信息中有着两套地址:

  1. 起始点 IP地址 ------- 目的地(从哪来到哪里去) IP地址

  2. 上一个地点MAC地址 ------- 将要前去的地方 MAC地址

数据包封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).

  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理

下图为数据封装的过程:

 下图为数据分用的过程:

 

了解过之前内容的你应该很容易理解了。

网络中的地址管理

认识IP地址

  • IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4IP地址是在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地址).

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

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

相关文章

LVS --一文精通

目录 dns解析 下一跳机制 LVS:NAT LVS: IP TUN隧道 LVS: DR DR> TUN > NAT > FULL NAT dns解析 DNS本地域名服务器,当用户访问一个网址,计算机就会提出域名解析请求,并发给本地域名服务器,本地域名服务器收到请求…

你真正了解低代码么?(国内低代码平台状况分析)

■ 写在前面■ 低代码产品如何分类,90% 的人都没有搞清楚■ 低代码平台如何比较?Point 在哪儿?一个比喻大家全听懂■ “拼”出来的低代码平台,真的好用吗?■ 推荐一款 C 端低代码产品 ■ 写在前面 都说技术是生产力&a…

每日一个小技巧:1分钟告诉你如何给黑白照片上色

你是否有过这样的经历:在家翻出爷爷奶奶的旧照片时,发现它们都是黑白色的,无法体现当时的真实色彩?由于一些老照片的拍摄时间较早,因此都是以黑白形式存在的,这样的照片不仅影响观感,还抑制了我…

SAS学习第11章:试验设计

试验设计必须遵循以下原则:重复、随机、局部控制。 重复即每个处理都要有至少2个试验单位,目的是估计试验误差,降低试验误差。若只有1个观测值,无法估计试验误差。平均数抽样误差估计值大小与重复次数的平方成反比,适…

Linux基础——DNS服务器原理及搭建

Linux基础——DNS服务器原理及搭建 一、DNS服务器原理1.DNS系统分布式数据结构2.DNS查询类型3.DNS服物器类型 二、搭建DNS域名解析服务器步骤1.安装bind软件包2. 查看需要修改的配置文件所在路径3. 修改主配置文件4. 修改区域配置文件,添加正向区域配置5.配置正向区…

量化择时——LSTM深度学习量化择时(第1部分—因子测算)

之前我们尝试使用SVM,将时序数据转为横截面的数据,使用机器学习的方法进行预测 量化择时——SVM机器学习量化择时(第1部分—因子测算): https://blog.csdn.net/weixin_35757704/article/details/129909497 但是因为股…

轻松解决ChatGPT网络报错,畅享沟通

ChatGPT的确很不错,无论是在什么岗位,使用它都可以让工作的你提升效率,可是我们经常会遇到一个神奇的网络报错(当我们一会不使用就来个这样的效果提示),是不是头大? 好了,开始进入正…

实验二:华为云ModelArts订阅口罩检测模型

华为云ModelArts订阅口罩检测模型 1、通过实验提示的网址进入口罩检测模型;拖动窗口找到并点击订阅按钮;勾选温馨提示中复选框内容; 2、点击红色“前往控制台”按钮,选择华北-北京四,并确定; 3、等待同步完…

Jakarta EE - Java EE的又一个名字

Jakarta EE并不是新技术,他的前身就是大家熟悉的Java EE,老一辈的程序员可能还记得J2EE,是的,他们都是同一个东西,至于为什么会改来改去,这里面就有很多故事了。 1998年12月,SUN公司发布了JDK1…

PySide6/PyQT多线程之 线程锁/线程安全

前言 PySide6/PyQT多线程同时访问同一个共享资源或对象,程序可能会出现预期之外的结果。所以需要考虑线程安全问题。 使用PySide6/PyQT开发GUI应用程序,在多个线程同时访问同一个共享对象时候,如果没有进行同步处理那就可能会导致数据不一致或…

HTML5 <q> 标签、HTML5 <rp> 标签

HTML5 <q> 标签 实例 HTML5 <q>标签用于定义一个短引用。请参考一下内容&#xff1a; 标记一个短的引用&#xff1a; <p>WWFs goal is to: <q>Build a future where people live in harmony with nature.</q> We hope they succeed.</p&g…

019:Mapbox GL加载天地图(影像瓦片图)

第019个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载天地图(影像瓦片图)。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共80行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:h…

2023年定向增发研究报告

第一章 行业概况 定向增发是增发的一种&#xff0c;是指上市公司向符合条件的少数特定投资者非公开发行股份的行为&#xff0c;有时也称“定向募集”或“私募”。定向增发的发行价格由参与增发的投资者竞价决定&#xff0c;发行程序与公开增发相比较为灵活。一般认为&#xff…

中国地图标准坐标和投影参数

目录 一、地理坐标 二、投影坐标 三、ArcGIS投影变换 四、说明 一、地理坐标 GCS_Krasovsky_1940&#xff08;克拉索夫斯基_1940椭球体&#xff09; 具体参数如下图&#xff1a; 每个国家或地区都有各自的基准面&#xff0c;我们通常所说的北京54坐标系、西安80坐标系实际上…

天梯赛练习题集

L2-005 集合相似度 find函数&#xff0c;Nt用集合关系求 #include <bits/stdc.h> #define ios ios::sync_with_stdio(0),cin.tie(0) #define PII pair<int,int> typedef long long ll; const int N1e610; const int inf0x3f3f3f3f;using namespace std; int n,k;…

深度学习(9)之 easyOCR使用详解

easyOCR使用详解 本文在 OCR-easyocr初识 基础上进行修改EasyOCR 是一个python版的文字识别工具。目前支持80中语言的识别。其对应的 github 地址&#xff1a;EasyOCR可以在网站版测试 demo 测试效果&#xff1a;https://www.jaided.ai/easyocr/其在字符识别上的效果如下&…

学系统集成项目管理工程师(中项)系列07_信息(文档)管理

1. 信息系统相关信息&#xff08;文档&#xff09; 1.1. 是指某种数据媒体和其中所记录的数据 1.2. 永久性 1.3. 由人或机器阅读 1.4. 仅用于描述人工可读的东西 2. 分类 2.1. 开发文档 2.1.1. 可行性研究报告和项目任务书 2.1.2. 需求规格说明 2.1.3. 功能规格说明 …

MapReduce高级-读写数据库

MapReduce 读取数据库 为什么要读写数据库 本质上讲数据库是存储数据的介质&#xff0c;MapReduce是处理数据的计算引擎。通常企业会使用关系型数据库&#xff08;RDBMS&#xff09;来存储业务的相关数据&#xff0c;随着业务数据的规模越来越大&#xff0c;不可避免的存在性…

C++ -3- 类和对象 (中) | 拷贝构造函数 赋值运算符重载(二)

文章目录 4.拷贝构造函数什么是拷贝构造函数&#xff1f;应用——示例&#xff1a;日期计算器什么情况下需要自己实现拷贝构造函数&#xff1f; 5.赋值运算符重载运算符重载&#xff08;重要&#xff09;赋值运算符重载 拷贝构造函数和赋值重载函数 4.拷贝构造函数 什么是拷贝…

【进阶C语言】静态版通讯录的实现(详细讲解+全部源码)

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;正在学习C/C、Java、Python等。 &#x1f4d7;本文收录于C语言进阶系列&#xff0c;本专栏主要内容为数据的存储、指针的进阶、字符串和内存函数的介绍、自定义类型结构、动态内存管理、文件操作等&#xff0…