【网络】网络基础(一)

news2024/11/23 7:57:39

目录

一、网络协议初识

1、协议分层

2、OSI七层模型

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

4、对网络协议栈的理解

二、网络传输基本流程

1、网络传输流程图

1.1、同一个网段内的两台主机进行文件传输

1.2、跨网段的主机的文件传输

三、数据包封装和分用

四、网络中的地址管理

1、IP地址

2、MAC地址


一、网络协议初识

1、协议分层

 在这个例子中,我们的协议只有两层。但是实际的网络通信会更加复杂,需要分更多的层次。分层最大的好处在于 "封装" 。把相关的问题放到一起,不相关的问题分开,实现高内聚,低耦合。

 软件分层之后,每一层都只关注自己同层的功能,只使用下层的接口,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本。

2、OSI七层模型

  •  OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
  •  把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。
  •  OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输。
  •  它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
  •  但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解。

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

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

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

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

 物理层我们考虑的比较少。因此很多时候也可以称为 TCP/IP四层模型。由于网络协议栈中,处于核心地位的,一定是属于操作系统范畴的,因此整个协议栈被命名为TCP/IP协议栈

一般而言

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

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

4、对网络协议栈的理解

 由于Linux下一切皆文件,所以对于网络的管理可以被归属为对网卡的管理,也就被归属为对文件系统的管理。

 我们要学习的网络,本质就是操作系统的一部分。操作系统的种类非常多,但是网络(操作系统内的TCP/IP)只能有一种。把网络协议栈隶属于文件系统,是大部分操作系统具体实现方案的一个细节。

 数据链路层的标准是不一样的,因为他是在网卡驱动层实现的。局域网环境的不同,网卡驱动就不同,数据链路层的实现就不同。

二、网络传输基本流程

1、网络传输流程图

1.1、同一个网段内的两台主机进行文件传输

 两个主机通信的本质,是两个主机的OS与网络协议栈在通信。网络协议栈的每一层都有自己的协议,协议的表现形式是协议报头

 类比到我们日常的网购中,我们买了东西,最后并不是直接收到了买到的商品,而是一个包裹,包裹上面贴着快递单。虽然这个快递单对于我们自己来说不是必须的,但是对于快递员来说是必须要有的。在物流体系中,快递单 + 商品,才是物流的主体。同理,在每一层协议中,协议报头 + 有效载荷才是协议的主体

 现在,张三向李四发了一条消息,消息会从张三的应用层开始,依次向下,每一层都会把上层交给自己的数据作为自己的有效载荷,并添加一个报头,最后通过以太网发送给李四。冯诺依曼体系决定了李四在收到数据时,一定是硬件层先收到的。硬件层收到后,会把信息交付给上一层,依次向上,每一层都会把自己的报头与有效载荷分离,最后传递到李四的应用层,最终传递给用户李四。

总结:

  1. 每一层,都会把上层交给自己的数据作为自己的有效载荷
  2. 每一层,都有自己的协议报头
  3. 对应的层,报头 + 有效载荷 = 自己要发送的报文。
  4. 在逻辑上,同层协议,都认为自己在和对方的同层协议在通信。
  5. 同层协议,能够互相认识对方的报头。能做到:
    a.将报头进行和有效载荷的分离。
    b.将有效载荷交付给上层的哪一个具体协议。
  6. 任何协议都要有两个基本功能:
    a.报头必须要能够和有效载荷分离。
    b.报头必须能支持将有效载荷交付给上层:数据报分用。

 宏观上,一个报文自顶层开始要发给对方的顶层,需要经历的从上到下的贯穿协议栈叫做封装,将报文自底向上进行交付叫做解包 + 分用。

 任何人要通信,需要有唯一的标示符,对于计算机也是如此,每台计算机都配有网卡,网卡在出厂时,就在内部被写入了sn号,也称MAC地址,全球唯一。

1.2、跨网段的主机的文件传输

数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。

 路由器也是一台主机,至少要级联两个子网,至少要有两个网络接口。

 现在,张三向李四发送了一条信息,数据从张三的应用层依次向下传递,每层都会添加自己的协议报头,最后发送给路由器。由于网络中有很多主机,为了能够准确的把数据传递给指定主机,就需要通过IP地址标识所有的主机。

 IP地址在现在的协议中叫做IPV4,对应一个 4 字节的整数。常见为 192.168.X.Y ,这是一种字符串风格的点分十进制方案的IP地址,其每一个字节是 8 个比特位,所以取值范围为[0.0.0.0,255.255.255.255] 。IP地址标识公网中主机的唯一性。 

 张三的报文在自顶向下发送的时候,会经过网络层,在网络层中根据目的IP查询路由表,确定目标主机与自己不在同一个网络,并把报文添加报头(包含目的IP,为报文定制最终目标,路上根据该地址进行路径选择)后向下交付给自己的数据链路层,并添加链路层的报头(包含目的MAC,根据路径选择的结果,来选择下一跳主机)。以上工作完成后,报文就会通过内网被转发到路由器了。

 报文被转发到路由器的数据链路层后,会进行向上传递,把报文传递到网络层,由于网络层的报头中含有目的IP,所以路由器就可以根据目的IP进行下一站的路径选择。并把报文向下传递到数据链路层,添加报头,包含已选择路径的目的MAC,最终通过令牌环传递给李四。

 IP协议及其以上的协议都没有看到任何网络方面的差异,IP协议以下,网络可以有明显的差异。这是因为IP地址屏蔽了底层网络的差异,这时路由器+IP协议的作用。所以IP是全球网络的底层基础。

三、数据包封装和分用

  •  不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
  •  应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
  •  首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  •  数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理。

下图为数据封装的过程:

 下图为数据分用的过程:

四、网络中的地址管理

1、IP地址

IP协议有两个版本:IPv4和IPv6。凡是提到IP协议,没有特殊说明的,默认都是指IPv4。

  •  IP地址是在IP协议中, 用来标识网络中不同主机的地址;
  •  对于IPv4来说, IP地址是一个4字节, 32位的整数;
  •  我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

2、MAC地址

  •  MAC地址用来识别数据链路层中相连的节点;
  •  长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  •  在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

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

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

相关文章

配置微服务负载均衡的两种方式

说明:在微服务开发中,每个服务是通过服务名称来区分的,当两个微服务名称相同时,注册中心会视为这两个服务是相同的。配置对应的负载均衡策略,当其他服务发送请求过来的时,可以对这两个微服务进行规则访问。…

Linux的起源

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的"老大哥&…

Prompt本质解密及Evaluation实战与源码解析(二)

9.4 Evaluation for Agents源码解析 如图9-4所示,转过来,我们再看一下LangChain框架代理评估(Evaluation for Agents)的源代码。 图9- 4 LangChain的evaluation agents目录 在trajectory_eval_prompt.py文件里面,写了一个非常经典的提示词。 1. """提示…

抽象轻松有点使用的JavaScript

数据类型转换 定义概念:将一种数据类型通过用特定的方法转换成另一种数据类型 拆分: 数据类型转换 A1(一种数据类型) A2(方法) A3(转换成另一种数据类型) 理解:A1 &…

使用STM32 再实现电动车防盗钥匙扣

实现目标 1. 点击遥控器 A 按键,系统进入警戒模式,一旦检测到震动(小偷偷车),则喇叭发出声响报警 2. 点击遥控器 B 按键,系统退出警戒模式,再怎么摇晃系统都不会报警 硬件介绍 1. 震动传感器…

安装orcle报错:指定的 Oracle 系统标识符 (SID) 已在使用

安装orcle报错:[INS-35075]指定的 Oracle 系统标识符 (SID) 已在使用 说明前面的orcle没有彻底删除 解决这个问题: 搜索框 —— > 输入:regedit ——> 回车 运行regedit,选择HKEY_LOCAL_MACHINE SOFTWARE ORACLE&#xff…

【Android】从零搭建组件化项目

组件化系列文章介绍的内容稍微多了点,本着研究透这玩意的精神,从组件化的简介开始说起。 目录 简介组件化、模块化与插件化开始创建配置共享文件打包模式配置APT与JavaPoet 简介 什么是组件化? 将多个功能模板拆分、重组的过程。 为什么要使…

GEE入门学习,遥感云大数据分析、管理与可视化以及在林业应用丨灾害、水体与湿地领域应用丨GPT模型应用

目录 ①海量遥感数据处理与GEE云计算技术实践应用 ②GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用 ③GEE遥感云大数据林业应用典型案例实践及GPT模型应用 ④遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用 ①海量遥感…

78. 左旋转字符串

目录 链接: 题目: 思路: 代码: 图片: 链接: 原题链接 题目: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 请定义一个函数实现字符串左旋转操作的功能。 比如输入字…

Talk预告 | 天津大学博士生赵煜:从平面图像中理解空间语义 - 视觉空间位置描述

本期为TechBeat人工智能社区第512期线上Talk! 北京时间7月12日(周三)20:00, 天津大学博士生—赵煜的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “从平面图像中理解空间语义-视觉空间位置描述”,届时将与大家…

webpack插件安装

webpack插件安装 1、html-webpack-plugin插件2 、css-loader和style-loader插件3、less-load插件 1、html-webpack-plugin插件 1、下载插件 yarn add html-webpack-plugin -D2、webpack.config.js添加配置 *const HtmlWebpackPlugin require(html-webpack-plugin); const p…

Linux系统编程(信号处理机制)

文章目录 前言一、中断,异常,信号的区别二、信号在Linux中的标识三、信号处理相关函数四、代码实验总结 前言 本篇文章我们来讲解信号的处理机制,信号处理在Linux操作系统中必不可少,这一点值得大家注意,信号又会与中…

打通前后端 -- 创建第一个JSP页面

前言 JSP是由Sun Microsystems公司主导创建的一种动态网页技术标准。 JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。 JSP技术以Java语言作为脚本语言&…

从0-100:约拍小程序开发笔记

背景 摄影师预约小程序功能是一种方便摄影师和客户之间进行预约和安排拍摄的工具。通过该功能,摄影师可以在小程序上设置自己的可预约时间,客户可以根据摄影师的日程安排选择合适的时间进行预约。这样可以提高预约的效率,减少沟通成本&#…

【工具】tempormonkey 同步插件

tempormonkey 同步插件 1.打开tempormonkey的dashboard界面 2.右上角的setting 3.选择谷歌云盘

数字孪生建筑3D可视化运维管理平台降低成本

深圳是我国数字经济重镇,数字经济核心产业增加值占全市GDP逾三成,数字产业化和产业数字化正呈双向融合发展之势。越来越多的企业正与深圳华锐视点一道,利用互联网、大数据、云计算、人工智能、区块链、5G、数字孪生等技术优势,赋能…

Red Hat Linux官网下载地址

注册一个账号,就可以从官网下载最新版本的Red Hat 企业版Linux。

从0到100:定制公交预约小程序开发笔记

业务背景 可以让用户通过手机随时随地进行公交车的预约,无需排队等候,节省了用户的时间和精力。通过公交预约小程序,用户可以提前预约座位,避免了拥挤和等待时间,提高了公交出行的效率。可以根据用户的预约情况&#…

软考A计划-系统集成项目管理工程师-项目成本管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

k8s 的命名空间一直 Terminating

查看命名空间状态,[NAMESPACE] 处于 Terminating kubectl get ns使用强制删除命令没有效果 kubectl delete namespace [namespace] --force --grace-period0 解决办法:删除部署文件 yaml 中的 finalizers 属性 kubectl get namespace [NAMESPACE] -o …