网络基础之网络传输基本流程

news2024/11/23 21:13:44

网络基础

此小节介绍网络基础概念

首先要明确的是 网络是层状结构!分层->OP->解耦

网络发展:最早的时候,每台计算机之间是相互独立的。后续发展到网络互联,就是将多台计算机连接在一起,完成数据共享。

协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎样建立连接、怎样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。

网络协议–协议分层

在实际生活中,有很多不同的计算机生产厂商,不同的计算机操作系统,不同的计算机网络硬件设备,想让这些不同厂商之间生产的计算机能够相互顺畅地通信的方法==>遵守相同的网络协议。网络协议是软件协议。

操作系统要对协议进行管理,同样的道理,也得先描述再组织。

网络协议本质是软件,而软件是可以被分层的(面向对象的思想,每一层看作是一个对象)。

划分为层状结构的原因:a.网络通信场景复杂(比如距离越远通信越复杂);b.功能解耦(每一层解决不同的问题,便于维护)。通信复杂是协议栈要解决的问题。

在网络中,为了完成通信,必须使用多层上的多种协议,这些协议按照层次顺序组合在一起,构成了协议栈(Protocol Stack),也称为协议族(Protocol Suite)。

从TCP/IP协议(传输层协议TCP+网络层协议IP)的角度来看以下应用场景

  • 应用范畴存在的问题:0.如何处理数据(应用层)

  • 通信范畴存在的问题:1.丢包(传输层问题);2.定位(网络层问题);3.解决下一跳主机的问题(数据链路层、物理层的问题)

  • OSI七层模型

国际标准化组织(ISO)为了规范协议层次的划分制定了开发系统互联(OSI,Open Systems Interconnection)模型,即ISO/OSI参考模型。此模型根据网络功能制定出7层网络协议结构,由低到高分别为物理层数据链路层网络层传输层会话层表示层应用层

OSIOSI各层对应的功能系统TCP/IP
应用层为计算机用户提供针对特定应用的接口和服务(如电子邮件协议、远程登陆协议、文件传输协议等)lib,shell,应用软件等应用层
表示层数据处理(不同类型的数据按照网络标准格式进行编码解码、加密解密等)lib,shell,应用软件等应用层
会话层管理(建立、维护、重连)通信会话(比如何时建立连接、断开连接以及保持连接的时间)lib,shell,应用软件等应用层
传输层管理端到端的通信连接操作系统–system call传输层
网络层数据路由(决定数据在网络的路径)操作系统互连网络层
数据链路层管理相邻节点之间的数据通信(互联设备之间传送和识别数据帧)驱动网络接口层
物理层数据通信的光电物理特性(0/1比特流与高频/低频电子信号之间的切换)硬件物理层

该模型比较复杂,但是很规范!但是简单起见,我们按照TCP/IP四层模型来介绍。

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

核心协议是传输层协议TCP+网络层协议IP。五层与四层之间差着个物理层。因为物理层不属于软件层面,故我们了解4层模型。

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

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

TCP/IP功能在该层工作的设备
应用层负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。应用程序
传输层负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
网络层负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)
数据链路层(网络接口层)负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作,有以太网、令牌环网、无线LAN等标准局域网中的交换机(Switch)
物理层负责光/电信号的传递方式。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层集线器、调制解调器(即Modem猫,用于模拟信号和数字信号的转换工作)

注意:局域网的标准有可能是不一样的(以太网、令牌环网、无线LAN等标准)

一般来说

  • 对于一台主机,它的操作系统内核实现了从传输层到网路层的内容;
  • 对于一台路由器,它实现了从网络层到物理层 或者 从传输层到物理层;
  • 对于一台交换机,它实现了从数据链路层到物理层 或者 从网络层到物理层;
  • 对于集线器,它只实现了物理层;

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

网络传输基本流程

两台主机在同一个局域网下,是可以进行数据传输的。

从逻辑层面来说,我们就当作应用层之间可以相互传递数据。但是在物理层面来说,数据必须先由A主机的应用层自顶向下传到物理层,在此进行数据交互,然后由B主机的物理层自底向上传给应用层。

每层都有自己的协议制定方案,所以每层协议都要有自己的协议报头。

自顶向下交付数据时,要添加每层特定的报头自底向上交付数据时,要删除每层特定的报头。【我们可以这样理解:越上层的报头越靠数据内侧,自顶向下添加报头就是在压栈,自底向上删除报头就是在出栈。】在逻辑上看作可以同层通讯,实际得自顶向下再自底向上。

每一层封装的本质是添加报头,解包/分用是去掉报头并展开分析报头。

局域网通信,即在整个局域网发消息,每一台主机都会收到,只不过发的消息是包含目的主机MAC地址(MAC地址是主机的唯一的标识)【IP地址(公网IP)也标定了主机的唯一性】,只有指定主机能收到该消息,其余主机收到该条消息会直接丢弃。如果局域网内同时有很多主机在发消息,会导致局域网内的消息碰撞,无法正确递达消息,所以局域网内会有避免消息碰撞的机制。

查MAC地址 ifconfig

[yyq@VM-8-13-centos ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.8.13  netmask 255.255.252.0  broadcast 10.0.11.255
        inet6 fe80::5054:ff:fef3:9e66  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:f3:9e:66  txqueuelen 1000  (Ethernet)
        RX packets 83502872  bytes 18443326066 (17.1 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78996573  bytes 13513298487 (12.5 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 5372787  bytes 1070906369 (1021.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5372787  bytes 1070906369 (1021.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0表示是云服务器的网络接口,ether 52:54:00:f3:9e:66,ether叫做以太,跟着的是16进制的数字,以:做分隔,8个比特位=1字节,6*8=48个比特位,6字节,就是以太网地址(MAC地址)。

inet 10.0.8.13inet即ipnet,是云服务器的主机地址,也叫做内网ip。

IP地址

IP地址是在IP协议中,用来标识网络中不同主机的地址。IPv6和IPv4是不兼容的。

对于IPv4来说, IP地址是一个4字节, 32位的整数,IPv6是用128位整数来标识。

我们通常也使用 “点分十进制” 的字符串表示IP地址,例如 192.168.0.1;用点分割的每一个数字表示一个
字节,范围是 0 - 255。

MAC地址

路由器的每一个端口,都有独立的 MAC 地址。路由决定了源IP和目标IP途径哪些MAC地址(下一跳的问题)。

MAC地址用来识别数据链路层中相连的节点。

长度为48位,即6个字节。一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。

在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突; 也有些网卡支持用户配置mac地址)

两者的区别

1、对于网络中的一些设备,路由器或者是PC及而言,IP地址的设计是出于拓扑设计出来的,只要在不重复IP地址的情况下,它是可以随意更改的;而MAC地址是根据生产厂商烧录好的,它一般不能改动的,一般来说,当一台PC机的网卡坏了之后,更换了网卡之后MAC地址就会变了。

2、在前面的介绍里面,它们最明显的区别就是长度不同,IP地址的长度为32位,而MAC地址为48位。

3、它们的寻址协议层不同。IP地址应用于OSI模型的网络层,而MAC地址应用在OSI模型的数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

4、分配依据不同。IP地址的分配是基于我们自身定义的网络拓扑,MAC地址的分配是基于制造商。一个是主观的,而另一种是可观的。

报文是要被封装的,那就要按照规定来封装,方便后续解包。每一个协议都要解决的2个问题:1、决定报文的封装和解包;2、如何将有效载荷交付给上层有效协议。

在这里插入图片描述

附:更详细的讲解可以看一篇文章如果让你来设计网络 (qq.com)

IP地址和MAC地址改变与否的情况分析

首先要划分三种情况。

第一种:数据帧仅在交换机之间转发

交换机是在链路层的。可以设想一种情况,即在以太网中两台主机进行数据交换,直接通过交换机进行交换即可。

这种情况,数据帧在交换机之间转发不更改源MAC地址和目标MAC地址。

主机A和主机B通过若干个交换机相连(并没有路由器在中间),源MAC地址自然是主机A的网卡所对应的MAC地址,目标MAC地址则是主机B的网卡所对应的MAC地址,这种情况下转发数据帧是不会改变MAC地址的。

第二种:数据帧在路由器之间转发

这种情况下,源IP地址和目标IP地址一定不改变,但是MAC地址一定会改变

IP数据报的首部写有源IP地址和目标IP地址两个字段,同时还会检验和字段检验首部是否出错,在正常情况下这两个字段是不会改变的。MAC帧中写了源MAC地址和目的MAC地址这两个字段,MAC地址改变的原因是,采用了ARP协议将IP地址转化为下一跳的MAC地址,原来的MAC地址被通过ARP协议获取的行的MAC地址覆盖了,所以MAC地址才会改变。

在这里插入图片描述

当然,在特殊情况下,IP地址也会改变。

第三种:数据帧在主机之间转发

3.1 两个主机在同一个子网(网段)

在同一个网段,此时就不需要经过路由器转发。那么源IP和目的IP、源MAC地址和目的MAC地址都不会发生改变。

3.2 两个主机在不同的子网(网段)

不在同一个网段,需要经过路由器转发。经过路由器R1时,使用NAT将内部IP地址转换为外部公用IP地址,即NAT将源IP地址转换为网关的IP地址。主机A–>路由器R1,源IP地址是A,目的IP地址是B;经过路由器R1之后,源IP地址就会变成R1。

在这里插入图片描述

看一下这道题,加深理解

在这里插入图片描述

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

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

相关文章

Jmeter配置元件之csv数据文件配置

一、csv简介 csv是非常通用的一种文件格式&#xff0c;适用于批量导入数据到接口参数中&#xff0c;或者保存测试结果都可以使用csv数据文件(jmeter不仅仅支持这一种读取文件的方式)&#xff0c;csv数据一行即为数据表的一行&#xff0c;多个字段用逗号隔开。 登录接口 …

A+CLUB管理人支持计划第四期 | 香农投资

免责声明 本文内容仅对合格投资者开放&#xff01; 私募基金的合格投资者是指具备相应风险识别能力和风险承担能力&#xff0c;投资于单只私募基金的金额不低于100 万元且符合下列相关标准的单位和个人&#xff1a; &#xff08;一&#xff09;净资产不低于1000 万元的单位&…

Vue3技术7之toRaw与markRaw、customRef、provide与inject、响应式数据的判断、组合式API的优势分析

Vue3技术7 toRaw与markRawtoRawApp.vueDemo.vue markRawDemo.vue 总结 customRefApp.vue总结 provide与inject目录结构App.vueChild.vueSon.vue总结 响应式数据的判断App.vue总结 组合式API的优势配置式的API存在的问题组合式API的优势 toRaw与markRaw toRaw App.vue <te…

HDR tone mapping介绍

文章目录 HDR and tone mapping1.什么是HDR&#xff1f;2.为什么需要HDR&#xff1f;3.hdr文件格式4.tone mapping4.1 aces tone mapping4.2 Fast Bilateral Filtering for the Display of High-Dynamic-Range Images 5 参考 HDR and tone mapping 1.什么是HDR&#xff1f; 就…

nginx + springboot 实现限流

1.spring项目打成jar包后&#xff0c;运行起来 &#xff1a;例如我启动项目 ip 端口号&#xff1a;172.168.0.217:8090 2.修改nginx配置&#xff0c;增加如下配置 nginx 中有两个主要的指令可以用来配置限流&#xff1a;limit_req_zone 和 limit_req upstream myserver{serve…

面试篇:Redis

一、缓存穿透 1、缓存穿透 查询一个不存在的数据&#xff0c;mysql查询不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都查数据库。即&#xff1a;大量请求根本不存在的key 2、查询流程 3、出现原因 业务层误将缓存和库中的数据删除了&#xff0c;也可能是有人恶…

3台服务器+StarVCenter,搭建“超融合云平台”-完美体验-跑100台虚拟机

3台服务器StarVCenter&#xff0c;搭建“超融合云平台”-完美体验-跑100台虚拟机 我们通常讲的“超融合&#xff08;HCI&#xff09;”是一种云平台基础架构方案&#xff0c;它无需专用的存储设备&#xff0c; 每台服务器既承担计算又存储数据&#xff0c; 只需增加服务器&…

SpringMVC-RESTful架构风格

目录 RESTful架构风格 1、RESTful概述 2、RESTful的六大原则 3、RESTful的实现 4、HiddenHttpMethodFilter RESTful风格的CRUD 1、环境搭建 2、功能需求 3、功能&#xff1a;访问首页 4、功能&#xff1a;查询所有数据 5、功能&#xff1a;删除一条数据 6、功能&…

Web服务

安装 WEB 服务&#xff1b; ~ 服务以用户 webuser 系统用户运行&#xff1b; ~ 限制 web 服务只能使用系统 500M 物理内存&#xff1b; ~ 全站点启用 TLS 访问&#xff0c;使用本机上的“CSK Global Root CA”颁 发机构颁发&#xff0c;网站证书信息如下&#xff1a; C…

财报解读:涅槃重生之后,新东方还想再造一个“文旅甄选”?

新东方逐渐走出了“微笑曲线”。 图源&#xff1a;新东方2023财年Q3财报 2023年4月19日&#xff0c;新东方披露了2023财年Q3财报&#xff08;截至2023年2月28日止&#xff09;&#xff0c;营收7.5亿美元&#xff0c;同比增长22.8%&#xff1b;归母净利润为8165万美元&#xff…

2023年4月份上新的视频领域分割模型设计系列论文(附下载链接)

来源&#xff1a;投稿 作者&#xff1a;王老师 编辑&#xff1a;学姐 论文1 论文标题&#xff1a; Boosting Video Object Segmentation via Space-time Correspondence Learning 论文链接&#xff1a; https://arxiv.org/pdf/2304.06211v1.pdf代码链接&#xff1a;暂未开源 …

QGIS数据可视化学习笔记02——CSV数据和表连接

在其他的GIS软件中&#xff0c;表的连接操作是十分常用的操作&#xff0c;在QGIS中也是一样的&#xff0c;接下来我们介绍QGIS中属性表之间的连接以及如何添加CSV数据到属性表中。 1、表的连接 &emsp如关系型数据库一样&#xff0c;两表连接的前提是&#xff0c;两个表中都…

使用大模型进行代码阅读——关于LLaMA模型代码的一些思考

使用大模型进行代码阅读 关于LLaMA模型代码的一些思考 关于这个模型的代码其实挺简单的&#xff0c;如果了解transformer decoder的代码&#xff0c;这个代码理解起来相对会比较容易一些&#xff0c;但是在这个代码里面有几个问题&#xff0c;是自己的一些思考或者是疑问点吧…

【NLP教程】用python调用百度AI开放平台进行情感倾向分析

一、背景 Hi&#xff0c;大家&#xff01;我是 马哥python说 &#xff0c;一名10年程序猿。 今天我来演示一下&#xff1a;通过百度AI开放平台&#xff0c;利用python调用百度接口进行中文情感倾向分析&#xff0c;并得出情感极性分为积极、消极还是中性以及置信度结果。 二…

HTB-Cache

HTB-Cache 信息收集80端口 立足www-data -> ashash -> luffyluffy -> root 信息收集 80端口 主页是一些hacker的介绍。 作者介绍能收集可能的用户名ASH以及有一个其他项目可能有用&#xff0c;如下&#xff1a; “Check out his other projects like Cache:HMS(Hosp…

【Python小技巧】使用Gradio 构建基于ChatGPT的AI绘图 Web 应用(附源码)

文章目录 前言一、Gradio是什么&#xff1f;二、使用Gradio构建基于ChatGPT的 Web 应用1. 安装gradio库2. 安装openai库&#xff08;ChatGPT的python库&#xff09;3. Web 应用示例&#xff08;源代码&#xff09; 总结 前言 都说ChatGPT也可以生成图片&#xff0c;好奇的我也…

母婴市场竞争激烈,如何通过软文营销脱颖而出

如今&#xff0c;随着宝宝数量增加以及人们对孩子的重视程度的增加&#xff0c;母婴市场愈发火爆。然而&#xff0c;母婴行业的竞争也越来越激烈&#xff0c;企业需要不断开拓新市场才能生存。在这样的情况下&#xff0c;软文营销成为了母婴企业拓展市场的一种有效方式。 首先&…

Docker Compose的安装教程、使用教程示例

Docker Compose的安装教程、使用教程示例 安装教程下载修改权限创建软链测试是否安装成功 使用教程1: 定义python应用2.创建容器的Dockerfile文件3.定义docker-compose脚本web容器&#xff1a;redis容器&#xff1a; 4.使用Compose构建并运行您的应用程序5.访问浏览器 安装教程…

【人体姿态估计】(一)原理介绍

【人体姿态估计】&#xff08;一&#xff09;原理介绍 一、背景 人体姿态估计本质上是一个关键点检测的项目&#xff1b; 关键点检测在生活中的应用十分广泛&#xff0c;包括人脸识别、手势识别&#xff0c;而人体姿态估计则是对身体的关键点进行检测&#xff1b; 本文将介…

Python学习中更适合中国宝宝的报错整理~

人生苦短&#xff0c;我用python 最近有很多小伙伴说实在是看不懂报错的类型&#xff0c; 这次就给大家整理好了基本上玩python会遇到的报错问题 更适合中国宝宝体制喔~ python 安装包资料:点击此处跳转文末名片获取 在python中不同的异常可以用不同的类型 &#xff08;pyt…