网络——入门基础

目录

协议    

网络协议

OSI七层模型

网络传输基本流程

网络传输流程图

局域网通信

数据包的封装和解包

广域网通信

网络地址管理

IP地址

MAC地址


协议

        关于什么是局域网,什么是广域网,我这里就不过多赘述了,我们直接来谈一下什么是协议。

        “协议”其实就是一种约定,双方想要通信就需要做某种约定,通过这种约定来完成某种特定事情。比如小时候和同学做的约定,敲一下门要做什么,敲两下要做什么。

        网络协议就是通信计算机双方必须共同遵守的约定,所以用计算机语言将这种约定表达出来,双方计算机才能识别约定的相关内容。但是计算机之间的传输媒介是光信号和电信号,可能有的通过频率或者强弱来表示0或1这样的信息,有的可能通过不同的策略,因为计算机只认识0和1,所以各个做硬件的厂商也要共同遵守某种约定,让不同的计算机识别的信息是一样的。

        那么操作系统要不要进行协议管理呢,那就又是先描述再组织。协议本质上就是一个软件,那么软件是可以“分层”的,什么是分层呢?曾经我们写过的各种类,在类外中我们叫做使用这个类中的方法,在类中就是方法的实现,使用和实现就是两层;面向对象的多态,实现多态就要有继承体系,每个继承体系就可以叫做一层软件层。


网络协议

        所以协议在设计的时候也是要分层的。

        两个人在打电话的时候,你并没有直接跟对面的人说话,而是把你的声音交给了手机,你的手机把声音交给了对方的手机,对方才能在手机中听到你的声音。

        为什么要分层呢?原因就是以后的通信场景变得很复杂了,我们将功能解耦,更便于维护,某一层出了问题只需要解决某一层,其他层不会受到影响。

        这些都是分层的好处,为了让网络通信也变的更好,也对网路协议进行了分层。


OSI七层模型

        我们通信的复杂程度主要和通信的距离是正相关的,从通信的方面来说:

  • 如果两个人的通信距离过远,会有没收到的情况,这就叫做丢包
  • 在发送的时候,如何找到对方主机的位置,这就是定位问题
  • 通信距离远的时候,我们的信息不可能直接发给对方,需要通过多个路由器帮我们跳转,那怎么保证下一个路由器是正确的
  • 不管是发送还是接收信息,都是通过信号的频率或强弱来识别的,也要有硬件的支持

        再从我们应用的方面来说:

  • 为了实现通信,我的数据一定是经过一些处理才发给对方的,对方收到了也是要经过处理才能看得懂,那如何处理数据也是一个问题。

        为了解决上面的这些问题,就有了网络协议的层状结构,这些问题对应的层分别是:传输层、网络层、数据链路层、物理层、应用层。

        我们也把左边的网络协议层也叫做TCP/IP协议。

        未来我们也是使用传输层提供的系统调用接口进行网络编程。

物理层:
        负责光电信号的传递,他决定了最大传输速率、传输距离等。

数据链路层:

        负责设备之间的数据帧的传送和识别,例如网卡驱动,交换机就工作在数据链路层。数据链路层和物理层就负责数据的发送过程。

网络层:
        负责地址的管理和路由的选择,路由器工作在网络层。

传输层:
        负责两台主机的数据传输,确保数据的可靠发送。比如传输过程中可能会出现丢包问题。

应用层:
        负责应用程序之间的沟通,应用层需要根据通信的目的,对数据进行分析与处理,达到某种业务性的目的。

        这一层一层的结构也叫做网络协议栈,网络协议栈的下三层主要的完成就是信息传输,而应用层完成的就是数据分析和业务处理。

        但其实最开始提出的协议层并不是TCP/IP协议,而是OSI七层模型。

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


网络传输基本流程

网络传输流程图

局域网通信

同一个局域网下的两台主机的通信流程就是这样的:

        这幅图举个例子就很好理解了,你住在一栋楼的10楼,你现在要给另一栋也住在10楼的小伙伴送个东西,那你一定要一层一层的下楼,然后跑到他的楼下,再一层一层的上楼,这样你才能把东西送给他,他也不会管你是怎么来的。

        所以局域网中的两台主机是可以直接通信的。那我们接下来就要再说一下网络的概念:

  • 每层都有自己的协议定制方案。
  • 每层协议都要有自己的协议报头
  • 从上到下交付数据的时候要添加报头
  • 从下到上拿到数据的时候要去掉报头

        再来举个例子说一下什么是报头,我们买东西的时候一定是在网上给卖家说我要买这个,经过一系列的操作,卖家要被快递交给物流,物流拿到东西之后一定要给这个快递贴上快递的信息,再经过一系列操作到了楼下的快递站,我们从快递站拿到这个快递,拆开就能用了。这个快递中的物品就好比是数据,这个快递信息就好比是协议报头,通过这个报头就可以送到我楼下的快递站,我拿到了快递再拆开去掉协议报头就拿到了里面的数据。

数据包的封装和解包

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

        这次就不是快递了,比如我们给同学发微信:

        通过对数据一层一层的封装,送到另一台主机后再一层一层的解包,所以两台主机在每一层都以为自己在和另一台主机的相同层在逻辑上直接通信,所以不可能把以太网帧直接发给网络层或者其它层。

        在同一个局域网中。除了当前正在通信的主机A和主机F还有其他主机,那怎么只有主机F收到了呢?

        实际主机A发数据给主机F的时候,其他主机也都收到了该数据,只不过除了主机F以外,其他主机识别到该数据并不是发给自己的,此时其他主机就把收到的数据丢弃了

        如果主机A不仅在和主机F通信,还和别的主机也在通信,但是同一个局域网中使用的都是同一个通信信道,每个主机发出的数据就可能会相互干扰

        每个局域网也可以看做一个碰撞域,如果某个主机发送出去的数据与其他主机发送的数据之间产生了干扰,这两台主机在该碰撞域中就发生了碰撞

        那么如何判断发生了碰撞呢?当一个主机将数据发送到局域网,它自己也可以收到这个数据,收到后与之前发送的数据进行比较,如果不同就说明发生了碰撞。

        想要处理碰撞其实很简单,当一个主机发送出去的数据产生了碰撞,那么该主机可以选择等一段时间后,再重新发送该数据。但是计算机处理的速度很快,所以发生的概率不是很大。

广域网通信

        上面说了局域网通信,那我们再来说一下广域网通信,前面我们提到过,我要给很远的一台主机发送信息,要先遵守应用层的协议,通过传输层稳定的把数据发送过去,通过网络层确定是那一台主机,通过数据链路层和物理层发送和接收信号。

        局域网之间都是通过路由器连接起来的,一个路由器至少能够横跨两个局域网。这些被路由器连接的局域网都认为该路由器就是本局域网内的一台主机,所以路由器可以和这些局域网内的任意一台主机进行直接通信。

        主机A使用自己的MAC地址封装报头,到了路由器时解包向上交付,路由器看到IP地址后就知道要转发到哪一个主机下。所以在使用TCP/IP协议时,IP及其向上的协议看到的报文都是一样的,只有数据链路层的MAC会变成不同的,这里只有一个路由器,但事实上是会有很多路由器才能跳转到对应的主机的。


网络地址管理

IP地址

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

        需要注意的是,IP协议有两个版本,分别是IPv4和IPv6。IPv4用32个比特位来标识IP地址,而IPv6用128个比特位来标识IP地址。

MAC地址

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

        那我们再来重新看一下广域网通信。

        如果我在北京,我要给上海的朋友发消息,所以我在北京的主机的IP地址就叫做源IP,上海的朋友的主机的IP地址就叫做目的IP,比如这个信息要先传给当前地区的路由器,这条信息封装了MAC地址,这就是源MAC地址,通过自己家里的路由器放到当前地区的路由器,这就是下一站的MAC地址

        从消息发出到收到消息,源IP和目的IP都是不会变的,他要给下一站提供方向,会变化的就是MAC地址,通过当前地区的路由器就知道下一个路由器在哪里,继续封装MAC地址,这样一步步把消息传递过去。

        上述的源IP和目的IP、源MAC和下一站MAC都分别保存在对应层的报头中。

        在Linux中查看自己的MAC地址就要使用ifconfig命令。

这个ether就有以太的意思。

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

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

相关文章

数据结构:10、排序

本文将会介绍8种排序,并在文章末附上代码 一、排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,…

二、阅读器的开发(初始)-- 1、阅读器简介及开发准备工作

1、阅读器工作原理及开发流程 1.1阅读器工作原理简介 电子书(有txt、pdf、epub、mobi等格式)->解析(书名、作者、目录、封面、章节等)->(通过阅读器引擎)渲染 -> 功能(字号、背景色、…

学生信息管理系统--修改信息(非常详细的修改,更新,撤销,删除逻辑)

目录 概述修改包括的操作修改在每个模块中的应用 详解修改与更新取消删除 特殊概念数据集游标 总结 概述 学生信息管理系统,功能相对简单且代码重复性高,应该采用复用的思想来减少代码的冗余和提高代码的可维护性。然而,对于基础入门项目来说…

SQL数据库和事务管理器在工业生产中的应用

本文介绍了关系数据库在工业生产中的应用以及如何使用事务管理器将生产参数下载到PLC,以简化OT/IT融合过程。 一 什么是配方(Recipe) 我们以一家汽车零件制造商的应用举例,该企业专业从事汽车轮毂生产制造。假设该轮毂的型号是“…

echart trigger 为 axis 的时候不显示 tooltip 解决办法

echart trigger 为 axis 的时候不显示 tooltip 解决办法 在项目 vitetsvue3 中使用 echart 显示了一个曲线图: 但当把图表的 trigger 设置成 axis 的时候,鼠标扫过并不显示具体的数值,如上图所示。 但 trigger item 的时候是正常的。 解决…

浏览器工作原理与实践--仅仅打开了1个页面,为什么有4个进程?

无论你是想要设计高性能Web应用,还是要优化现有的Web应用,你都需要了解浏览器中的网络流程、页面渲染过程,JavaScript执行流程,以及Web安全理论,而这些功能是分散在浏览器的各个功能组件中的,比较多、比较散…

idea创建maven-archetype-quickstart框架无法显示src/目录

一、配置好idea中Maven目录 1、不使用idea自带Maven&#xff0c; 2、配置好Maven环境变量M2_HOME 3、修改maven中 setting.xml文件 <?xml version"1.0" encoding"UTF-8"?><settings xmlns"http://maven.apache.org/SETTINGS/1.2.0"…

【C语言】—— 指针三 : 参透数组传参的本质

【C语言】—— 指针三 &#xff1a; 参透数组传参的本质 一、数组名的理解二、使用指针访问数组2.1、指针访问数组2.2、[ ] 的深入理解2.3、数组与指针的区别 三、一维数组的传参本质四、数组指针变量4.1、数组指针变量是什么4.2、 数组指针的初始化 五、二维数组传参的本质 一…

【LabVIEW FPGA入门】插值、输出线性波形

概述 NI 的可重配置 I/O (RIO) 硬件使开发人员能够创建自定义硬件&#xff0c;以在坚固耐用、高性能和模块化架构中执行许多任务&#xff0c;而无需了解低级 EDA 工具或硬件设计。使用 RIO 硬件轻松实现的此类任务之一是模拟波形生成。本教程介绍了使用 CompactRIO 硬件和 LabV…

计算机网络:计算机网络概述

计算机网络&#xff1a;计算机网络概述 因特网概述网络&#xff0c;互连网&#xff0c;因特网因特网发展的三个阶段因特网的标准化工作因特网组成 计算机网络的定义计算机网络的分类按使用者分类按传输介质分类按网络的覆盖范围分类按拓扑结构分类 因特网概述 网络&#xff0c…

投简历没回复?9位DBA公众号集结,快上车!

&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61c;&#x1f61c; 中国DBA联盟(ACD…

Unicode转码 [ASIS 2019]Unicorn shop1

打开题目 我们买最贵的试试看&#xff0c;结果提示只能输入一个字符 抓包分析一下看看 从中可以发现源代码是如何处理price的 使用的是unicodedata.numeric() 但是我们查看页面源代码&#xff0c;发现页面的编码是utf-8编码 所以&#xff0c;前端html使用的是utf-8&#xff0…

【学习】CMMI评估认证的意义和需要注意的问题

​ CMMI认证是软件能力成熟度集成模型&#xff0c;是软件行业中的一种质量管理体系&#xff0c;旨在评估软件开发组织的成熟度和能力&#xff0c;以帮助企业提高软件质量、降低成本、控制风险&#xff0c;并获得更好的商业效益。 一、CMMI评估认证的意义 1. 提高软件质量&am…

win提权第二弹服务提权

阅读须知&#xff1a; 探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者 本人负责&#xff0c;作者不为此承担任何责任,如…

Windows 10中打开控制面板的13种方法,总有一种适合你

前言 虽然有传言称微软将取消控制面板,但它不会那么快消失。一些重要的设置仅在Windows 10的经典控制面板中找得到,它们不在设置应用程序中。本文有13种方法可以打开控制面板。 搜索开始菜单 你可以使用“开始”菜单的搜索功能搜索PC上的任何应用程序。在任务栏左侧的搜索…

基于微信小程序的电影交流平台

技术&#xff1a;springbootmysqlvue 一、背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各行业&#xff0c;尤其是规…

[蓝桥杯 2015 省 B] 生命之树

水一水的入门树形DP #include<iostream> #include<algorithm> #include<vector> using namespace std; using ll long long; #define int long long const int N 2e610; const int inf 0x3f3f3f3f; const int mod 1e97;int n; int w[N]; vector<vecto…

环境检测LIMS系统 环境检测实验室信息管理系统

环境检测行业在所有检测领域流程最长&#xff0c;数据量最大&#xff0c;专家组不同&#xff0c;认证体系的记录单/报告模板也是各自不同&#xff0c;因此如何选择一套适用本企业的LIMS也成为重中之重的工作&#xff0c;好的系统可以给企业带来非常大的便捷&#xff0c;也能大大…

4 Redis持久化

Redis 是一个内存数据库&#xff0c;所以其运行效率非常高。但也存在一个问题&#xff1a;内存中的数据是不持久的&#xff0c;若主机宕机或 Redis 关机重启&#xff0c;则内存中的数据全部丢失。当然&#xff0c;这是不允许的。Redis 具有持久化功能&#xff0c;其会按照设置以…

让AI给你写代码(五)—— 应用Agent,理解Agent,走进现实世界

本文想解决一个问题&#xff0c;理解Agent有啥具体的作用&#xff1f; 所谓读书千遍&#xff0c;不如动手一试&#xff0c;我们还是借助于上一篇&#xff0c;让AI给你写代码&#xff08;四&#xff09;—— 初步利用LangChain Agent根据输入生成&#xff0c;保存&#xff0c;执…