初识网络原理

news2024/11/19 16:29:28
网络的迅速发展普及了计算的使用,网路由一开始的独立模式(计算机之间相互独立)到局域网(局域网内的主机之间能方便的进行网络通信)再到现在的广域网(通过路由器将多个局域网连接起来,在物理上组成很大范围的网络),很大程度的提升了网络通信,实现了数据传输,那么数据是如何在不同主机(计算机)之间实现传输的呢?

IP地址

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址,简而言之,IP地址用于定位主机的网络地址;例如我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

IP地址解决了网络通信时,定位网络主机的问题,但是还在一个问题,传输到目的主机之后,由哪个进程(即应用程序)来接收这个数据呢?这时就需要端口号来标识。

端口号

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程,简而言之,端口号用于定位主机中的进程例如发送快递时,不光需要指定的收货地址(IP地址),还需要指定收货人(端口号)。

端口号可以定位到主机中的进程,网络传输的数据类型可能有很多种,不同类型的数据其格式也不相同,那目的主机如何识别源主机传输的数据呢?这就需要使用到协议了。

协议

协议也叫网络协议,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵守的一组约定和规则,协议最终体现为在网络上传输的数据包的格式;这个协议控制了网络数据传输过程中建立连接、相互识别的问题。

协议分层

网络通信是一个比较复杂的事情,需求场景复杂了,实现功能也会比较复杂,如果一个协议太复杂,学习成本、使用成本、维护成本都会非常高,因此协议采取了分层协议的做法(即针对一个复杂的大协议拆分成若干个相对简单的小协议)。

协议分层的好处

  1. 一个复杂的大协议拆分成若干个简单的小协议,大大降低了学习成本、使用成本、维护成本;

  1. 可以灵活的针对一些小协议进行替换(有一些不同的小协议,诸多功能相似,此时可以灵活的替换掉相似的小协议);

  1. 分层最大的好处类似于面向接口编程时,使用者不需要知道接口的内部实现细节,只需在使用时实现相应接口即可。

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

TCP/IP是一组协议的代名词,它还包括许多协议;TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

应用层:应用程序,描述了传输的数据,负责应用程序间沟通;

传输层:负责两台主机之间的数据传输,端与端之间的传输,如TCP和UDP协议;

网络层:负责地址管理和路由的选择,如IP协议;

数据链路层:负责设备之间的数据帧的传送和识别;

物理层:负责光/电信号的传递方式,如以太网;

物理层属于硬件层面,考虑的较少,因此很多时候也称为TCP/IP四层模型。

网络数据传输过程示例

假设A在2023.1.1 12:00的时间给B发送了一条微信消息,消息内容是“在干嘛?”,那么这样一条消息是如何传输到B的设备上的呢?我们以发送方和接受方的过程来演示。

发送方

  1. 应用层

假设一个应用层协议的格式为一个字符串:发送方微信号 +发送时间 +接受方微信号 +消息内容

此时应用层会生成一个“应用层数据报”(本质上就是一个遵守了约定格式的字符串),程序要调用操作系统的api,把这个应用层数据交给传输层

  1. 传输层(操作系统内核)

在传输层中,就要把上述应用层数据构造成传输层的数据报,传输层中用到的协议最知名的就是UDP/TCP,假设此处使用的是UDP,就需要构造出UDP数据报(在应用层数据基础上加个UDP报头),传输层就把这个UDP数据报交给网络层

这里加报头是为了描述源端口和目的端口的信息!!!

  1. 网络层(操作系统内核)

最知名的协议是IP协议,IP协议要基于上述数据,打包成一个IP数据报,网络层数据准备好,还需要进一步的交给数据链路层

IP报头最核心的信息是源IP和目的IP!!!

  1. 数据链路层

最知名的协议是“以太网”,基于上述数据,还要打包成一个“以太网数据帧”,然后这个数据继续往下传输,交给物理层

  1. 物理层

把上述二进制的数据转换成电信号/光信号,此时就真正的把数据发送出去了

上述过程中,从应用层到物理层,层层加码,这个过程称为“封装”

接受方

  1. 物理层

网卡接受到的是光信号/电信号在物理层,物理层将这个信号转换成二进制数据,转回的数据是一个以太网数据帧,把这个数据交给数据链路层解析

  1. 数据链路层

数据链路层需要去掉帧头帧尾,取出中间的载荷交给上层的网络层(IP协议),以太网会记录这个载荷是不是一个IP数据报

  1. 网络层

IP协议会针对这里进行解析,解析出IP报头,取出IP协议的载荷,把这里得到的传输层数据报交给上层传输层,IP报头里会记录载荷是UDP还是TCP协议

  1. 传输层

UDP再进行解析,取出报头,取出载荷,再把这个载荷交给对应的应用层程序,UDP报头里有一个重要的字段“目的端口”,因此就可以把这个端口来把数据交给应用程序了

  1. 应用层

此时应用程序是微信,微信就会针对应用层协议进行解析,现实到界面上

上述,从物理层到应用层,层层解析的过程称为“分用”

总结:

整个网络协议中,协议分成很多层,上层协议要调用下层协议(上层协议把数据交给下层,继续封装),下层协议要给上层协议提供支持(下层协议解析好数据交给上层)。

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

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

相关文章

Java多线程进阶

目录1.常见锁策略1.1 乐观锁和悲观锁1.2 读写锁和普通互斥锁1.3 重量级锁和轻量级锁1.4 挂起等待锁和自旋锁1.5 公平锁和非公平锁1.6 重入锁和非重入锁1.7 synchronized锁的特点2.CAS2.1 CAS实现原子类2.2 实现自旋锁2.3 CAS的ABA问题2.4 解决ABA问题3.synchronized的锁优化机制…

“华为杯”研究生数学建模竞赛2004年-【华为杯】B题:有交货时间限制的大规模实用下料问题(附优秀论文)

赛题描述 “下料问题(cutting stock problem)”是把相同形状的一些原材料分割加工成若干个不同规格大小的零件的问题,此类问题在工程技术和工业生产中有着重要和广泛的应用. 这里的“实用下料问题”则是在某企业的实际条件限制下的单一材料的下料问题。 一个好的下料方案首先…

axios踩坑,不同版本默认Content-Type不同

文章目录1、请求封装2、问题axios 0.21源码axios 1.2源码总结1、请求封装 封装代码: /**axios封装* 请求拦截、相应拦截、错误统一处理*/ import axios from axios import QS from qs; import { Message } from element-ui// 环境的切换 if (process.env.NODE_ENV…

大数据必学Java基础(一百二十):Maven工程的介绍与创建

文章目录 Maven工程的介绍与创建 一、Maven工程类型 1、POM工程 2、JAR工程 3、WAR工程

Cookie、Session、Token、JWT详解

Cookie、Session、Token、JWT 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹…

盖子的c++小课堂——第九讲:文件输入输出

前言 作者:哈咯大家好,我是盖…… 粉丝:更新更新!再不更新我来偷你家马桶盖!快更快更~~ 作者:子的盖…… 粉丝:再不更我真来偷你家马桶盖了昂~~ 作者:……啊!&#…

实用!ArcGIS更改字段名称、类型、顺序的技巧

01需求说明 常规来说。ArcGIS属性表中的字段一旦建立,他的顺序、字段名称、字段的类型是没有办法更改的。 我们在属性表中拖动字段,也只是改变了字段的临时显示顺序。一旦数据重新加载就会显示会原来的顺序。 那么有什么技巧来解决这样的问题&#xff0c…

python爬虫的简单复习1【使用etree进行XPath解析】

一、相关知识1.1 etree的使用1.1.1 编码流程将HTML文本加载到etree对象中调用etree的xpath()函数完成标签定位对标签为所欲为(此时获得的标签其实是xpath()函数返回的对象)1.1.2 环境安装pip install lxml1.1.3 实例化etree对象# 首先导入模块 from lxml…

优思学院|如何更有效地进行5why分析(五问法)?

所谓5-why(五个为什么或五问法),意思是要问五次 "为什么",直到你找到问题的根本原因。具体的过程是:首先确定问题,然后回答"为什么",并记录答案。第二次回答"为什么&q…

虚拟串口及其在串口转以太网中的应用

本文介绍虚拟串口的概念,以及如何在串口转以太网中利用该技术。 1.虚拟串口的概念 虚拟串口是用操作系统的虚拟驱动技术产生的串口(COM口),相对于计算机本身的硬件串口(COM1等)来说虚拟串口并不对应一个物…

贪心法讲解

目录 一、前言 二、贪心法 1、优缺点 2、例子:最少硬币问题 3、贪心和动态规划 4、例题:快乐司机(lanqiaoOJ题号1513) 5、例题:旅行家的预算(lanqiaoOJ题号775) 三、例题 1、翻硬币&am…

数据结构:线性表的类型定义

线性表的类型定义 线性表是最简单、也是最基本的一种线性数据结构。它有两种存储表示方法:顺序表和链表,它的主要基本操作是插入、删除和查找。 线性表是n(n>0)个数据元素的有限序列,表中各个数据元素具有相同特性,即属同一数…

LeetCode 114. 二叉树展开为链表

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 114. 二叉树展开为链表,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 Leet…

2021年大数据挑战赛A题智能运维中的异常检测与趋势预测

2021年大数据挑战赛 A题 智能运维中的异常检测与趋势预测 原题再现: 异常检测(异常诊断/发现)、异常预测、趋势预测,是智能运维中首当其冲需要解决的问题。这类问题是通过业务、系统、产品直接关联的 KPI 业务指标进行分析诊断&…

MD语法 官方参考

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

Python小技巧:if __name__ == “__main__“ 的作用

前言 这里是Python小技巧的系列文章。这是第一篇,if __name__ "__main__" 的作用。 在编写Python程序时候,总是习惯性的在文件的末尾添加这么一段代码。 if __name__ "__main__":...至于它的作用是什么,先不管&#x…

内网渗透-src挖掘-外网打点到内网渗透-3层内网渗透测试记录(2)-2023年1月

1、确定目标之后,先进行信息搜集 对目标的先进行ip端口扫描,发现开放了22和80端口 2、访问80端口,为Laravel框架 3、发现该版本为Laravel v8.78.1 (PHP v7.4.3) 漏洞库中搜索,发现该版本的Laravel存在,CVE-2021-3129-Laravel De…

免费格式转换器有哪些?这几款一定要试试

相信在现在的工作中,大家都或多或少需要处理一些文件,有时候我们需要把PDF文件转为word文件,还可能需要将PDF文件转为PPT文件等等,这个时候我们就需要选择一款好用的格式转换器,如果转换文件量比较大的小伙伴们还需要重…

odoo16 修改odoo加载过程

在odoo加载过程中&#xff0c;title处会显示odoo以及odoo标签图片&#xff0c; 所以我们可以进行修改&#xff0c;将其公司化 1. 修改无公司名称时显示字样 <title t-esc"title or Odoo"/> <!--路径&#xff1a;addons/web/views/webclient_templates.xml…

2022.12 青少年软件编程(Python) 等级考试试卷(一级)

2022年12月 青少年软件编程&#xff08;Python&#xff09; 等级考试试卷&#xff08;一级&#xff09; 分数&#xff1a; 100 题数&#xff1a; 37 一、 单选题(共 25 题&#xff0c; 共 50 分) 1. 关于Python语言的注释&#xff0c;以下选项中描述错误的是&#xff1f;&#…