我的计算机网络(总览篇)

总览--网络协议的角度

在一个庞大的网络中,该从哪里去了解呢?我先细细的讲一下我们访问一个网站的全部流程,当我们的电脑连上网络的时候,就会启动DHCP协议,来进行IP地址,MAC地址,DNS地址的分配,拿到我们的IP地址后,使用UDP协议进行DNS服务器的查询,DNS有什么?查询什么?可以将DNS服务器理解成一个域名和IP的映射集合,通过域名进行IP的查找,查找到我们所需要访问的网站的IP之后,再次通过UDP数据报返回给我们,然后我们就要面临选择了,如果我们需要实时性,就选择UDP协议,需要安全性就选择TCP协议,我先介绍TCP协议,因为UDP太简单了。首先我们知道了各自的IP,但是还不知道MAC地址,MAC地址在全球具有唯一标识,跟IP地址相比更类似于一个物理标识,而IP更偏向于软件。此时我们通过IP地址,在ARP协议中寻找对应的MAC地址,ARP协议包含了IP和MAC的映射集,然后我们就拥有了和我们目的服务器建立连接的基本条件--IP和MAC,然后就通过TCP三次握手建立连接,之后就可以通过HTTP协议进行数据的交换,但是为什么说TCP协议可以保证安全性呢?因为有HTTPS协议,那么HTTP和HTTPS有什么不同的呢?请记住一个等式:HTTPS=HTTP+SSL/TSL,HTTP协议中文就是超文本传输协议,而SSL/TSL协议就是一种非对称加密协议,经过加密之后别人就别想看了,然后就可以使用HTTP协议进行数据交换了,但是交换的前提就是使用IP协议,IP协议最重要的两个功能就是分组转发和路由选择,何为分组转发?我们将分组(上一层的PDU)转发到目的IP,何为路由选择?我们不能只知道IP目的地,还得知道怎么走,而路由选择就是告诉我们再去往目的IP的这个过程中怎么走,走哪些路由器。我们做完这些之后就可以进行数据交换了,但是数据交换的过程依旧提心吊胆,因为数据如果错误怎么办?数据如果丢失怎么办?数据如果超时怎么办?该怎么保证数据的可靠传输呢?别急!!!针对这三个问题,伟大的前人已经想好了各种协议去解决,我们一个一个来:

面对数据的错误-首先我们可以使用差错校验去进行数据错误的判断,具体的方法有奇偶校验和循环冗余校验,但是奇偶校验会发生漏码,就是特定情况下不能检测出误码,但是循环冗余校验则不会,如果发现误码,接收方就会丢掉。

面对数据的超时-首先进行数据交换的双方非常的有礼貌,当他们收到数据的时候都会回复一个收到,而正是因为这个收到发送方才能知晓对方收到,而这个收到在他们的语言里叫做ACK,如果在规定时间里发送方没有收到ACK,那么就会触发发送方的超时重传,所以无论是超时还是丢失,只要接收方没有发送ACK,那么发送方就会重传。

数据的可靠传输-我们之前所说的超时重传依赖的就是ACK,而这种方式又叫做停止-等待协议(SW,顾名思义如果没有接收到ACK,那就停止发送,等待至规定时间,然后触发重传,除此之外还有回退N帧协议(GBN)。

在进行完数据交换之后,就进行TCP四次挥手,至此连接断开。

总览--网络分层的角度

我们现在换一个角度去理解计算机网络,那就是分层协议,分层协议可以有两种,一种就是法律意义上的OSI协议,总共有七层,依次是物理层,数据链路层网络层传输层,会话层,表示层,应用层,另一个就是在商业被广泛使用的TCP/IP四层模型:网络接口层,网络层,传输层,应用层。一个数据会经过这些层层包装,然后转发,转发,之后又会层层卸掉包装,那为什么OSI有七层,TCPIP只有四层呢?首先要说的是OSI协议已经不被使用了,因为过于复杂,而且运行效率很低,而且成本很高,缺乏实际经验,没有商业驱动力,所以能够占领市场的就是标准--TCP/IP协议,OSI的表示层,会话层被合并到了TCPIP的应用层,数据链路层和物理层被合并到了网络接口层。那每一层都是干嘛的呢?我们先从繁琐的OSI七层开始讲起。

OSI七层模型概述

物理层:我们熟知的光纤电缆,这种通过物理介质传输的就是物理层的作用

数据链路层:将比特流封装成帧,而且进行流量控制,差错检验,MAC寻址

网络层:通过IP协议进行路由选择,分组转发,实现主机之间的连接

传输层:建立端口到端口的通信,使用TCP/UDP协议

会话层:管理应用之间的对话,支持断点续传和同步

表示层:处理数据格式之间的转换

应用层:直接面向用户,提供网络服务接口,如:HTTP,HTTPS

TCP/IP四层模型概述

网络接口层:封装成帧,将帧转化为比特流,在物流层面进行传输

网络层:通过IP协议,进行路由选择和分组转发,实现主机之间的通信

传输层:通过TCP或者UDP协议实现端口之间的通信,也就是应用之间的通信

应用层:OSI的会话层,表示层,应用层

通过以上的介绍,我们不难发现OSI有两层没有和其他层整合在一起--传输层和网络层,这两层也是所有分层中最重要的。现在我们具体介绍一下,一个数据在每一层都会发生什么,又是通过什么协议发生改变的?

数据在各个分层的状态

首先在应用层,我们的要发送的数据位于应用层,这些数据被称为应用层的PDU,然后这些数据到了传输层,传输层建立端口之间的链接,将这些数据拆分成若干个报文段,将这些报文段进行改造,改造成本层的PDU,经过哪些改造呢?对原报文段增加头部,头部包含源端口和目的端口。然后来到了网络层,还是得在强调一下网络层的作用:分组转发和路由选择,以此实现主机之间的通信,这个分组就是指数据报,这实在是太重要了,网络层拿到了传输层的PDU,然后还要改造,也是要添加头部,头部里包含源IP地址和目的IP地址,这就构成了网络层的IP数据包,然后到了数据链路层,数据链路层给IP数据报添加帧首部和帧尾部,这就是数据链路层的分装成帧,帧首部包含了帧开始符,帧的源地址和目的地址,而帧尾部包含了帧结束符,到了物理层,如何识别比特流中的帧呢?就是靠帧的开始符和结束符,也就是帧定界。

从网络分层和网络协议两个角度去理解计算机网络的全过程就结束了,接下来就是逐个介绍一些很重要的协议了!!!

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

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

相关文章

开源的PMPI库实现及示例代码

开源的PMPI库实现及示例代码 PMPI (Profiling MPI) 是MPI标准中定义的接口,允许开发者通过拦截MPI调用进行性能测量和调试。以下是几个常用的开源PMPI库实现: 1. MPICH的PMPI接口 MPICH本身提供了PMPI接口,可以直接使用。 2. OpenMPI的PM…

Unity 基于navMesh的怪物追踪惯性系统

今天做项目适合 策划想要实现一个在现有的怪物追踪系统上实现怪物拥有惯性功能 以下是解决方案分享: 怪物基类代码: ​ using UnityEngine; using UnityEngine.AI;[RequireComponent(typeof(NavMeshAgent))] [RequireComponent(typeof(AudioSource))] …

PyTorch进阶学习笔记[长期更新]

第一章 PyTorch简介和安装 PyTorch是一个很强大的深度学习库,在学术中使用占比很大。 我这里是Mac系统的安装,相比起教程中的win/linux安装感觉还是简单不少(之前就已经安好啦),有需要指导的小伙伴可以评论。 第二章…

【区块链安全 | 第三十八篇】合约审计之获取私有数据(二)

文章目录 前言漏洞代码代码审计攻击步骤修复/开发建议审计思路前言 在【区块链安全 | 第三十七篇】合约审计之获取私有数据(一)中,介绍了私有数据、访问私有数据实例、Solidity 中的数据存储方式等知识,本文通过分析具体合约代码进行案例分析。 漏洞代码 // SPDX-Licens…

《微服务与事件驱动架构》读书分享

《微服务与事件驱动架构》读书分享 Building Event-Driver Microservices 英文原版由 OReilly Media, Inc. 出版,2020 作者:[加] 亚当 • 贝勒马尔 译者:温正东 作者简介: 这本书由亚当贝勒马尔(Adam Bellemare…

小刚说C语言刷题——第22讲 二维数组

昨天我们讲了一维数组,今天我们来讲二维数组。 1.定义 二维数组是指在数组名后跟两个方括号的数组。 2.语法格式 数据类型 数组名[下标][下标] 例如:int a[5][9];//表示5行9列的数组 3.访问二维数组元素 格式:数组名[行坐标][列坐标]…

Vue 大文件分片上传组件实现解析

Vue 大文件分片上传组件实现解析 一、功能概述 1.1本组件基于 Vue Element UI 实现,主要功能特点: 大文件分片上传:支持 2MB 分片切割上传实时进度显示:可视化展示每个文件上传进度智能格式校验:支持文件类型、大小…

「逻辑推理」AtCoder AT_abc401_d D - Logical Filling

前言 这次的 D 题出得很好,不仅融合了数学逻辑推理的知识,还有很多细节值得反复思考。虽然通过人数远高于 E,但是通过率甚至不到 60%,可见这些细节正是出题人的侧重点。 题目大意 给定一个长度为 N N N 的字符串 S S S&#…

腾讯后台开发 一面

一、手撕 合并升序链表 合并两个排序的链表_牛客题霸_牛客网 顺时针翻转矩阵 顺时针旋转矩阵_牛客题霸_牛客网 二、八股 1、静态变量和实例变量 public class House {public static String buildDate "2024-10-27"; // 静态变量public String color; // 实…

Unity 动画

Apply Root Motion 勾选的话就会使用动画片段自带的位移 Update Mode (动画重新计算骨骼位置转向缩放的数值): Normal : 随Update走,每次Update都计算Animate Physics :与 fixed Update() 同步&#xff0…

NDT和ICP构建点云地图 |【点云建图、Ubuntu、ROS】

### 本博客记录学习NDT,ICP构建点云地图的实验过程,参考的以下两篇博客: 无人驾驶汽车系统入门(十三)——正态分布变换(NDT)配准与无人车定位_settransformationepsilon-CSDN博客 PCL中点云配…

基于HTML + jQuery + Bootstrap 4实现(Web)地铁票价信息生成系统

地铁票价信息表生成系统 1. 需求分析 1.1 背景 地铁已经成为大多数人出行的首选,北京地铁有多条运营线路, 截至 2019 年 12 月,北京市轨道交通路网运营线路达 23 条、总里程 699.3 公里、车站 405 座。2019 年,北京地铁年乘客量达到 45.3 亿人次,日均客流为 1241.1 万人次…

EtherNet/IP 转 Modbus 协议网关

一、产品概述 1.1 产品用途 SG-EIP-MOD-210 网关可以实现将 Modbus 接口设备连接到 EtherNet/IP 网 络中。用户不需要了解具体的 Modbus 和 EtherNet/IP 协议即可实现将 Modbus 设 备挂载到 EtherNet/IP 接口的 PLC 上,并和 Modbus 设备进行数…

PostgreSQL:逻辑复制与物理复制

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

腾讯云COS与ZKmall 开源商城的存储集成方案

ZKmall 开源商城与腾讯云对象存储(COS)的集成,可通过云端资源托管、自动化数据同步、高性能存储架构实现本地存储负载降低与访问效率提升。以下是基于搜索结果的集成路径与核心优化点: 一、存储架构升级:本地与云端协同…

HTML — 浮动

浮动 HTML浮动(Float)是一种CSS布局技术,通过float: left或float: right使元素脱离常规文档流并向左/右对齐,常用于图文混排或横向排列内容。浮动元素会紧贴父容器或相邻浮动元素的边缘,但脱离文档流后可能导致父容器高…

【软件测试学习day1】软件测试概念

前言 本篇学习,测试相关基础概念、常见的开发模型测和测试模型,搞懂4个问题: 什么是需求什么是 bug什么是测试用例开发模型和测试模型 目录 1. 什么是需求 1.1 为什么要有需求 1.2 测试人员眼里的需求 1.3 如何深入了解需求 2. 测试用例…

Flutter常用组件实践

Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…

刘火良FreeRTOS内核实现与应用学习之7——任务延时列表

在《刘火良FreeRTOS内核实现与应用学习之6——多优先级》的基础上:关键是添加了全局变量:xNextTaskUnblockTime ,与延时列表(xDelayedTaskList1、xDelayedTaskList2)来高效率的实现延时。 以前需要在扫描就绪列表中所…

图像预处理-插值方法

一.插值方法 当我们对图像进行缩放或旋转等操作时,需要在新的像素位置上计算出对应的像素值。 而插值算法的作用就是根据已知的像素值来推测未知位置的像素值。 1.1 最近邻插值 CV2.INTER_NEAREST 其为 warpAffine() 函数的参数 flags 的其一,表示最近…