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

news/2024/4/26 5:57:52/文章来源:https://blog.csdn.net/m0_61780496/article/details/130368050

网络基础

此小节介绍网络基础概念

首先要明确的是 网络是层状结构!分层->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 1500inet 10.0.8.13  netmask 255.255.252.0  broadcast 10.0.11.255inet6 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 0TX packets 78996573  bytes 13513298487 (12.5 GiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::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 0TX 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.luyixian.cn/news_show_103551.aspx

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

相关文章

19.Java文件操作---I/O流

Java文件操作—I/O流 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中&#xff0c;管道是一条不间断的字节流&#xff0c;用来实现程序或进程间的通信&#xff0c;或读写外围设备、外部文件等。一个流&#xff0c;必有源端和目的端&#xff0c;它们可以是计算机内存的某…

【问题记录】docker 搭建 minio

一、搭建过程 docker 搜索minio镜像 docker search miniodocker 拉取镜像 docker pull minio/miniodocker 启动 minio docker run -p 9900:9900 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_KEY1qazWSX -v /usr/local/minio/data:/data -v …

PHP入门【1】环境搭建

目录 一&#xff0c;安装appserv组合包 二&#xff0c;运行第一个php程序 一&#xff0c;安装appserv组合包 组合包&#xff1a;将apache&#xff0c;mysql&#xff0c;php等服务器软件和工具安装配置完成后打包处理 组合包大大提高了我们的效率&#xff0c;不需要为配置环境…

MACH SYSTEMS操作手册 SAEJ2716(SENT) to RS-232/CAN Gateway怎么使用?

双通道SAE J2716 (SENT)至RS-232/CAN总线网关&#xff0c;具有两个双向SENT通道和RS-232 (SENT-RS232) 或CAN总线 (SENT-CAN) 接口。两种变体还提供两个模拟输出&#xff0c;可以直接将输入SENT数据转换为模拟电压。该网关配备了一个免费的PC应用程序&#xff0c;用于SENT通信分…

Linux Ansible创建任务并执行

目录 通过add-hoc执行anbise任务 通过Playbook剧本方式执行任务 Playbook包含的常用对象 Yaml语法 对Yaml格式自动对齐 Playbook语法检测与执行 Playbook任务实施 Playbook特权升级 Playbook常用模块 软件包管理模块 用户管理模块 存储模块管理 文件操作相关模块 …

gpt在线使用-免费的 GPT在哪下载

免费的 GPT&#xff08;Generative Pre-trained Transformer&#xff09; 。现在您可以免费体验我们的 GPT 技术&#xff0c;来让您的业务或项目更加智能。 GPT 是一种基于最前沿的自然语言处理技术&#xff0c;它展现出了令人惊叹的预测能力和交互性能。我们的 GPT 是在世界顶…

TryHackMe-M4tr1x: Exit Denied(boot2root)

M4tr1x: Exit Denied 大多数人只看到一个完美构建的系统。但你一直都是不同的。你不仅看到表面上的东西&#xff0c;还看到 它下面有什么统治;调节和调节的内部关联机制 几乎完美地管理其每个模块&#xff0c;以至于它试图隐藏所有模块 其多面设计中的微小孔。但是&#xff0c…

linux-01-基础回顾-虚拟机安装linux(centos7)、linux常用命令

文章目录 Linux-Day01课程内容1. 前言1.1 什么是Linux1.2 为什么要学Linux1.3 学完Linux能干什么 2. Linux简介2.1 主流操作系统2.2 Linux发展历史2.3 Linux系统版本 3. Linux安装3.1 安装方式介绍3.2 安装VMware3.3 安装Linux3.4 网卡设置3.5 安装SSH连接工具3.5.1 SSH连接工具…

Linux安装mysql(5.7解压版)

Linux服务器安装软件时&#xff0c;建议安装解压版&#xff0c;将文件安装在自己指定的目录。安装版一般会将软件安装在Linux默认的目录&#xff0c;如/usr/local/&#xff0c;配置文件在/etc/&#xff0c;日志在/logs&#xff0c;安装目录比较分散&#xff0c;特别是不熟悉该软…

Linux网络——PXE高效批量网络装机

Linux网络——PXE高效批量网络装机 一、PXE远程安装服务1.PXE批量部署的优点2.搭建PXE网络体系的安装条件 二、PXE 安装进行前的配置1.PXE装机所需的文件2.搭建 PXE 过程中使用的服务和程序①.DHCP服务②.vsftpd服务③.TFTP服务④.syslinux 三、搭建 PXE 远程安装服务器1.安装相…

IPEmotion 2023 R1支持在线能量分析

新发布的IPEmotion 2023 R1提供了许多新功能&#xff0c;其中最重要的是新的“在线功率计算&#xff08;Online Power Calculation&#xff09;”功能。该功能允许使用预定义的功率计算来进行测量任务和数据分析。此外&#xff0c;IPEmotion 2023 R1现在支持一种新的存储模式&a…

Vmware安装Ubuntu出现 unable to find a medium containing a live file system

一、前言 由于未知的原因&#xff0c;使用Vmware安装Ubuntu的时候&#xff0c;总是遇到奇怪的问题。&#xff08;忘记截图了…&#xff09; 大致是&#xff1a; unable to find a medium containing a live file system找了几个帖子&#xff0c;参考1、参考2&#xff0c;但都…

现场工程师救火-UEFI(BIOS)节能设置导致金牌服务器只跑出龟速

近期协助出现场&#xff0c;解决了一个非常典型的UEFI 启动参数配置不当导致的服务器降效案例。错误的节能参数配置&#xff0c;导致价值几十万的服务器变成龟速服务器&#xff0c;并造成严重的生产事故。 1. 现象 朋友公司近期准备升级2010年就部署的服务器组&#xff0c;新…

【LeetCode】188. 买卖股票的最佳时机 IV

188. 买卖股票的最佳时机 IV&#xff08;困难&#xff09; 思路 状态定义 一、首先确定要一天会有几种状态&#xff0c;不难想到有四种&#xff1a; a.当天买入了股票&#xff1b;b.当天卖出了股票&#xff1b;c.当天没有操作&#xff0c;但是之前是买入股票的状态&#xff…

【数据库】数据库的基础知识

目录 前言 1、 查看数据库 1.1、查看所有数据库&#xff08;show databases;&#xff09; 1.2、创建数据库之后&#xff0c;查看创建的数据库的基本信息。 2、 创建数据库 2.1、直接创建数据库&#xff08;create database [数据库名];&#xff09; 2.2、创建数据库的时…

Pytest接口自动化测试实战演练

结合单元测试框架pytest数据驱动模型allure 目录 api&#xff1a; 存储测试接口conftest.py :设置前置操作目前前置操作&#xff1a;1、获取token并传入headers&#xff0c;2、获取命令行参数给到环境变量,指定运行环境commmon&#xff1a;存储封装的公共方法connect_mysql.p…

解决方案:Zotero实现参考文献中英文混排,将英文文献中的“等”转成“et al.”

Zotero 是一款非常实用且易于使用的参考文献管理工具&#xff0c;可帮助用户收集、整理和引用各种类型的文献&#xff0c;包括图书、期刊文章、网页等。在学术写作中起着重要作用。 但是其在中文世界中&#xff0c;运行起来偶尔会出现问题&#xff0c;这里记录一个问题及其解决…

隋唐洛阳“西宫”:上阳宫的GIS视角

隋唐洛阳城简介 营建 隋大业元年&#xff08;605年&#xff09;&#xff0c;在隋炀帝的授意下&#xff0c;隋代著名城市设计师宇文恺&#xff0c;在汉魏故城以西重新选址&#xff0c;历时8个月&#xff0c;日役劳工200万&#xff0c;兴建新都洛阳城。 城和苑 隋唐洛阳城采用…

eBPF技术介绍

前言 eBPF起源于linux内核&#xff0c;它可以以砂箱程序运行在操作系统内核的特权上下文&#xff0c;高效&#xff0c;安全&#xff0c;易于扩展而不需要修改内核源码或者加载内核模块。 操作系统一直是实现观测&#xff0c;安全和网络功能的最理想的地方&#xff0c;因为内核的…

优思学院|精益管理的理念是什么?

作为一个企业&#xff0c;我们都希望拥有高效率和优异的竞争力。但是&#xff0c;如何才能在竞争激烈的市场中脱颖而出&#xff1f;这时&#xff0c;精益管理理念的出现可以帮助我们。 精益管理的基本概念是什么&#xff1f; 精益管理的核心理念是通过消除浪费来实现生产效率…