网络原理之初识

2023-11-03

目录

网络发展背景

独立模式

网络互联

局域网

广域网

网络通信基础

IP地址

端口号

协议

协议分层

OSI七层网络模型

TCP/IP五层(四层) 网络模型

物理层

数据链路层

网络层

传输层

应用层

封装和分用


网络发展背景

独立模式

独立模式:每个计算机之间相互独立。

网络互联

网络互联:将多台计算机连接在一起,完成数据共享,其中数据共享的本质就是网络数据传输,即计算机之间通过网络来传输数据,也成为了网络通信,其中,根据网络互联的规模可以分为广域网和局域网。

局域网

局域网 简称LAN,局域网是本地,局部组件的一种私有网络,局域网内的主机之间能方便进行网络通信,所以又称为内网,局域网与局域网之间在没有连接的情况下,是无法进行通信的,局域网组建网络的方式有很多种:1.基于网线直连。2.基于集线器组建。3.基于交换机组建。4.基于交换机与路由器组建。

广域网

广域网简称WAN,通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网,广域网内部的局域网都属于他的子网,全世界最大的广域网叫做Internet(因特网)

网络通信基础

IP地址

IP地址描述了网络上的一个主机的位置,IP地址本质上是一个32位的整数,但是由于32位的整数不方便人们来读和记忆,所以一般常见的操作就是把这个32位的整数,按照每个字节分为四个部分,中间用 . 来进行分割这就是所说的点分十进制。

端口号

端口号描述了一个主机上的某个应用程序,端口号的本质是一个2个字节(16位)的无符号整数,其中需要注意的是,两个不同的进程,不能绑定同一个进程,但是一个进程可以绑定多个端口号。

协议

进行有效的通信,前提就是能够明确通信协议,协议的本质就是约定发出来的数据是什么格式,接收方按照对应的格式来进行解析,协议通常由三要素组成

1.语法:即数据与控制信息的结构或格式

2.语义:即需要发出何种控制信息,完成何种动作以及做出何种响应

3.时序:即事件实现顺序的详细说明

协议的最终体现为在网络上传输的数据包的格式

协议分层

网络通信这个过程,其实很复杂,里面有很多很多细节,如果我们只通过一个协议,来约定所有的细节,这个协议就会非常庞大,复杂,这样更好的办法,就是把一个复杂庞大的协议,拆分成很多个小的,更简单的协议,每个协议,负责一部分工作(这就和我们写代码一样,一个复杂的程序,不能只指望一个文件把所有的代码装入,一次性实现,需要把这个代码拆分成更多更小的,更简单的文件,每个文件负责一个小的功能)

这样做的好处有哪些呢?

1.每层协议不需要理解其它层协议的细节(更好的做到了封装)

2.把对应层的协议替换成其他的协议(更好的解耦合)

OSI七层网络模型

这个大家略作了解即可,主要认识下面的TCP/IP五层(四层) 网络模型

TCP/IP五层(四层) 网络模型

 五层协议从下到上由细节到宏观

物理层

物理层主要是网络通信中的硬件设备,如网卡、网线等,针对硬件设备的约定,就是物理层协议所负责的范畴,需要保证所有主机和网络设备之间都是相互匹配的。

数据链路层

数据链路层是负责完成相邻的两个设备之间的通信(局部通信),如有一根网线连接的两个设备。

网络层

网络层是负责点到点之间的通信,网络中的任意节点到任意节点之间的通信(这里就不一定是相邻的了,更多的是指不相邻的),网络层就负责在这两个点之间,规划出一条合适的路线,实际的网络环境结构很复杂,两个点之间的路线有很多条,这里就需要规划出一条最合适的。

传输层

传输层是负责端到端之间的通信,也就是起点到终点,他只关注结果(也就是说数据到没到),并不关心路线过程(就是不关注数据是怎么过来的,怎么走哪条)。

应用层

应用层和应用程序之间密切相关,你传输的数据是干啥用的,不同的应用程序就有不同的用途。

封装和分用

网络分层中的一组重要的概念,封装和分用,这就能知道不同的分层协议之间,是如何相互配合的

首先是封装

我们来句一个例子:比方说我使用qq给朋友发送信息,输入了一个hello,发送过去,这个过层中,首先是应用层,qq应用程序会根据我输入的内容,把数据构造成一个应用层的协议报文(协议报文就是指遵守协议的一组数据) 应用层的协议就调用操作系统提供的API(称为socket API), 吧应用层的数据,交给传输层(进入操作系统内核)

A代指我,B指接收方,后面分别是时间和内容

进入传输层(操作系统内核)后根据刚才传过来的数据,基于当前使用的传输层协议,来构造一个传输层的协议报文(村树层中最典型的协议有UDP,TCP)这里我们以TCP为例,添加上TCP协议报头

 接下来就会把这个传输层的数据报交给网络层,网络层也在操作系统内核,网络层拿到完整的数据传输层数据报,就会再根据句当前使用的网络层协议(例如IP) ,再次进行封装,把TCP数据报构造成IP数据报,和TCP数据包类似,添加上一个协议报头

紧接着当前的网络层协议,就会把这个IP数据报,交给数据链路层,数据链路层(驱动程序)在刚才的IP数据报基础上,根据当前使用的数据链路层协议,给构造成一个数据链路层的数据报,典型的数据链路层的协议,就是“以太网” 就会构造成一个“以太网数据帧”

 

最后数据链路层把这个数据交给物理层(硬件设备) 物理层做的工作就是根据刚才的以太网数数据帧(就是一组01)把这里的01 变成高低电压,通过网线传输出去,或者把这里的01编程高频或者低频的电磁波,通过光纤或者无线的方式传播出去。到了这一步,此时的数据就已经离开了当前的主机,前往下一个设备,下一个设备,可能是路由器、交换机,或者其它设备,这时就要进行分用,而分用呢就是封装的逆过程,首先是物理层(硬件设备,网卡)主机B的网卡感知到一组高低电平,然后就回吧这些电平翻译成01的一串数据,然后把这一串01(就是一个完整的以太网数据帧)交给了数据链路层,

数据链路层负责对这个数据进行解析,去掉帧头和帧尾,取出里面的IP数据报,然后交给网络层协议 

 

 网络层协议(IP协议)又会对这个数据进行解析,去掉IP协议报头,取出里面的TCP 数据报再交给传输层

传输层协议(TCP协议)又会对这个数据进行解析,去掉TCP报头,取出里面的TCP数据报,交给应用层

 

应用层就会调用socket API 从内核中读取到这个应用层数据报 在按照应用层协议进行解析,根据解析结果给显示到窗口中 

上面的封装和分用我们讨论的只是起点和终点的情况,但是A和B之间还有很多的路由器和交换机

其中的过程也大致相同

 

 无论网络多么复杂,整体的传输过程都是类似的,只是在不停的重复封装和分用的过程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络原理之初识 的相关文章

随机推荐

  • 哈希碰撞

    一 什么是哈希碰撞 所谓哈希 hash 就是将不同的输入映射成独一无二的 固定长度的值 又称 哈希值 它是最常见的软件运算之一 如果不同的输入得到了同一个哈希值 就发生了 哈希碰撞 collision 二 哈希碰撞产生原理 举个例子 假设要
  • IDEA更改主题插件——Material Theme UI详解

    原文地址 文章目录 IDEA更改主题插件 Material Theme UI 一 安装 二 设置 1 主设置 1 主题 2 突出颜色 2 高级设置之选项卡 3 高级设置之compact 4 高级设置之图标 icons 关于icons不能使用
  • 导出错误EXP-00091: Exporting questionable statistics

    今天在客户那儿在数据库服务器上导出数据时发生EXP 00091 看看帮助 oracle localhost backup oerr exp 9100091 00000 Exporting questionable statistics Ca
  • Mybatis:了解SqlSessionTemplate

    读完这篇文章 你将会知道 SqlSessionTemplate 和 SqlSessionManager 有什么不同 SqlSessionTemplate 如何实现线程安全 SqlSessionTemplate 怎么和数据库打交道 目录 Sq
  • python 参数**和*用法

    def func 1 kwargs print kwargs def func 2 kwargs print kwargs if name main pilot dqn learn kwargs lr 1e 3 exploration fr
  • Python 反射机制

    对编程语言比较熟悉的朋友 应该知道 反射 这个机制 Python作为一门动态语言 当然不会缺少这一重要功能 然而 在网络上却很少见到有详细或者深刻的剖析论文 下面结合一个web路由的实例来阐述python的反射机制的使用场景和核心本质 一
  • 编码:8421 BCD码(彻底弄懂+6是什么意思,为什么要加6)

    一 解释一下什么是8421 首先要理解的是4bit表示1个十进制位 8421代表的是权值分配 8421码用0000 0001 1001分别表示0 1 2 9的数字 为什么13不是1101 答 不在映射表 8421码的1010 1111没意义
  • 消息中心架构设计

    转载于 https www cnblogs com lilunjia p 8797399 html
  • sql 除以_1.七日留存率-SQL实现

    一 背景 留存率 是用户分析的核心指标之一 它也是经典的AARRR模型 海盗模型 中就有一个重要节点 留存 Acquisition 留存率的计算也是用户分析模型的计算基础 那么如何在数据库中用SQL实现呢 二 什么是留存率 常见的留存率有次
  • GitLab新建删除项目

    新建项目 在主页选择 Create a project 输入Project name 在Project URL选择组或者用户 Visibility Level选择Private 点击 Create project 提示创建成功 点击Clon
  • Vue2项目引入高德地图并展示

    前言 最近项目中需要使用地图来进行展示数据 并且还要进行一些交互的行为 因为之前并没有接触过地图类型的项目 看着原型图感觉还是很不错的 开始开发后也在研究如何在项目中正确引用高德地图 为此也是翻阅了高德官方的文档 发现实现起来还是比较容易的
  • java 蓝桥杯 两道经典国赛 填空题

    目录 求值 题目描述 链接 精选项目课程 IT热门课程 蓝桥云课课程 蓝桥云课 解题思路 源码附上 纯质数 题目描述 解题思路 源码附上 求值 题目描述 链接 精选项目课程 IT热门课程 蓝桥云课课程 蓝桥云课 解题思路 这道题是填空题 所
  • (亲测解决)PyCharm 从目录下导包提示 unresolved reference(完整图解)

    最近在进行一个Flask项目的过程中遇到了unresolved reference 包名 的问题 在网上找了好久解决方案 并没有一个能让我一步到位解决问题的 后来 我对该问题和网上的解决方案进行了分析 发现网上大多数都是针对项目同一目录下的
  • Idea之Java代码Remote JVM Debug

    Idea之Java代码Remote JVM Debug 1 适用场景 在公司中 java代码开发完成之后 一般都会部署到linux服务器上 以供公司客户进行使用 但是作为开发人员 尤其是一名新员工 了解公司产品源代码中的业务逻辑算的上是最重
  • Vue项目element-ui弹窗组件el-dialog、el-drawer,阻止点击遮罩层关闭

    项目需求问题 Vue项目element ui弹窗组件el dialog el drawer 阻止点击遮罩层关闭 Vue项目element ui弹窗组件el dialog el drawer 阻止点击遮罩层关闭 在使用element ui组件
  • 在 VMware Workstation 16 Pro 中安装 Ubuntu Server 22.04.1 并配置静态 IP 地址

    文章目录 1 下载 Ubuntu Server 22 04 1 2 新建虚拟机向导 3 编辑虚拟机设置 4 开启此虚拟机并配置Ubuntu系统 5 设置 root 用户的密码 6 允许远程连接 root 用户 7 配置静态 IP 地址 7
  • CVE-2021-41773 漏洞复现

    漏洞原理 Apache HTTP Server 2 4 49版本使用的ap normalize path函数在对路径参数进行规范化时会先进行url解码 然后判断是否存在 的路径穿越符 当检测到路径中存在 字符时 如果紧跟的2个字符是十六进制
  • PyCharm 集成PyQt5

    PyCharm 安装PyQt5 在Pycharm中安装软件时比较方便的 直接进行File gt Settings 接着进入Project gt Project Interpreter 然后点击右上角的加号 在检索文本框中输入PyQt5 和
  • 【5G消息产业图谱】正式发布!

    5G消息 在所有5G应用中脱颖而出 艳惊四座 那么 作为最快落地的5G应用 5G消息目前的进展如何 到底有多少玩家参与 实际又有多少行业用户在 试水 今天 5G产业圈特别制作的 5G消息产业图谱 正式发布 大家从我们的图谱中可以看到5G消息
  • 网络原理之初识

    目录 网络发展背景 独立模式 网络互联 局域网 广域网 网络通信基础 IP地址 端口号 协议 协议分层 OSI七层网络模型 TCP IP五层 四层 网络模型 物理层 数据链路层 网络层 传输层 应用层 封装和分用 网络发展背景 独立模式 独