网络基础(一)

news2025/1/20 4:39:04

网络基础(一)

  • 计算机网络背景
    • 网络发展
      • 独立模式: (计算机之间相互独立)
      • 网络互联: ( 多台计算机连接在一起, 完成数据共享)
      • 局域网LAN: (计算机数量更多了, 通过交换机和路由器连接在一起);
      • 广域网WAN: (将远隔千里的计算机都连在一起);
  • ip地址、端口、协议:
    • ip地址
      • ip地址简介
      • 理解源IP地址和目的IP地址
    • 端口
      • 认识端口号
      • 理解 "端口号" 和 "进程ID"
    • 协议
      • 认识 "协议"
      • 协议分层
      • OSI七层模型
      • TCP/IP五层(或四层)模型
  • 网络传输基本流程
      • 网络传输流程图
    • 数据包封装和分用
    • 网络中的地址管理
      • 认识IP地址
      • 认识MAC地址

在这里插入图片描述

📌————本章重点————📌
🔗了解网络发展背景, 对局域网/广域网的概念有基本认识;
🔗了解网络协议的意义, 重点理解TCP/IP五层结构模型;
🔗学习网络传输的基本流程, 理解封装和分用;
✨————————————✨

计算机网络背景

网络发展

 众所周知,计算机最早设计出来是进行单机计算(计算弹道导弹),那网络的发展流程是咋样的呢?请往下看:
首先我们先弄清楚以下几个名词:

中继器:数据传输时候信号会减弱,会把信号放大,有俩=端口,一个进一个出
集线器:数据传入集线器,集线器把数据广播出去(大家都听见),数据太杂,效率低,通俗的讲就是多端口的中继器
交换机:端口更多,进行跨网络,不同网络直接进行数据交换
路由器:数据单独发给某个用户,涉及路径的选择
网络:通俗来说,就是大量路由器互相连接起来的(星型连接结构,就是每个路由器像星星一样连接起来)
网卡:实现数字信号和电信号的转化

独立模式: (计算机之间相互独立)

在这里插入图片描述

网络互联: ( 多台计算机连接在一起, 完成数据共享)

每个用户都不能离服务器太远

局域网LAN: (计算机数量更多了, 通过交换机和路由器连接在一起);

在这里插入图片描述

广域网WAN: (将远隔千里的计算机都连在一起);

在这里插入图片描述
 所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域

ip地址、端口、协议:

ip地址

ip地址简介

 这时候就有小伙伴有疑问了:我要想发一篇文章给我女朋友,怎么才能保证发给的是我女朋友而不是上铺小黑呢?这就引出一个新概念:ip地址,原来我发了消息之后,路由器会根据ip地址找到对应的交换机,交换机再将数据发送给具体的用户。
**ip地址:**网络中每一台主机的唯一标识,并且网络传输数据中,必然会有俩个要素:源端ip地址,目的端ip地址,这俩个信息标识了期待你和终点,数据从哪里来到哪里去。

  1. 网络中的路由器,就会辨别这个目标主机IP地址属于哪个网络,然后规划路径将数据发送到对应网络
  2. 目标地址:明确目标网络,进行网络中的路径规划
  3. 源端地址:让对方知道数据来源与哪里,以便于进行回复
    本质:
    ipv4: uint32_ t 类型的数据----无符号32位的整形数字
     uint32_ t类型,最大的数字2^32-1,大概就是42亿9千多万,也就是说IP地址在实际使用中其实是不够用的。
    ipv6: uint8_ t ip[16] —128位的数据 2^32 * 2^32 2^32 * 2^32,(16个字节相当于16*8个bit,128位,相当于42亿的四次,几乎永远用不完)
     但是ipv6并不向前兼容ipv4,也就是如果直接使用ipv6标准通信,以前基于ipv4的设备,程序就都用不了了,因此推广很慢很慢,而当前主要的网络通信还是基于ipv4的通信

基于此,目前共有俩种解决方法

  1. DHCP技术–动态地址分配技术(谁上网给谁分配地址)
  2. NAT技术:网络地址转换技术—主要应用于私网的组建(私网中的大量主机可以使用同一个公网地址进行上网)

理解源IP地址和目的IP地址

& emsp;在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址.思考: 我们光有IP地址就可以完成通信了嘛? 想象一下发qq消息的例子, 有了IP地址能够把消息发送到对方的机器上,但是还需要有一个其他的标识来区分出, 这个数据要给哪个程序进行解析.(比如:小明给小红发的消息是QQ消息,凭什么这个QQ消息就- -定是QQ这个程序处理的,而不是主机上的xshell处理的,因此网络中传输的数据,还必须在一条主机 上标识应该由哪个进程来处理)

端口

认识端口号

 端口:在一个主机上用于标识唯一一个网络通信进程的
**本质:**无符号16位整数——uint16 _t

端口号(port)是传输层协议的内容.

  1. 端口号是一个2字节16位的整数;
  2. 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;
  3. IP地址 + 端口号能够标识网络上的某一台主机的某一个进程;
  4. 一个端口号只能被一个进程占用.

 因此,在网络传输数据中,不但要有源端ip,对端ip,还要有俩个信息:源端端口,对端端口,这俩个信息描述了,是指定俩个主机上的哪俩个进程之间的通信(理解:网络通信也是一种进程间通信),一个端口智能属于一个通信进程,但是一个网络通信程序可以有多个端口。

理解 “端口号” 和 “进程ID”

 我们之前在学习系统编程的时候, 学习了 pid 表示唯一一个进程; 此处我们的端口号也是唯一表示一个进程. 那么这
两者之间是怎样的关系?

因为进程id当程序重启的时候会发生改变,而端口不会改变。另外, 一个进程可以绑定多个端口号; 但是一个端口号不能被多个进程绑定;

 因此,对端B的IP和端口就必须固定,不固定,A端不知道对方的地址和端口,无法通信。如果B端主机上的QQ所使用的固定端口,万一被其他程序占用了, QQ用不了就必须换个端口才行,但是换个端口对方找不到了。因此,实际上我们大多数的网络应用通信(qq,微信), 并不是两台客户端主机之间的直接通信,而是有一个网络服务提供商,搭建了服务器,这个服务器使用固定的地址和端口不会改变,每个用户用的都是客户端,实质上的通信时客户端与服务器的通信,A主机QQ与QQ服务器通信,告诉QQ服务器,我的这条数据要发送给哪个QQ号,对应QQ号的主机上线后,会登录QQ服务器,QQ服务器就知道了它的地址和端口,然后将数据转发过去,历史消息就是保存到了服务器中。
在这里插入图片描述
 实际的网络通信中,必然有一 端主机的地址和端口是固定的,是让所有人都知道的。这一端通常叫做服务端(为用户提供服务的一端)。我们使用的客户端程序,都封装了自己的服务器主机地址和端口在里边。

协议

认识 “协议”

“协议” 是一种约定.,是网络通信中的数据格式约定,不同主机必须遵守相同的网络通信协议(不是一个单个的协议,而是一组协议)才可以实现实质通信。

 计算机生产厂商有很多;计算机操作系统, 也有很多;计算机网络硬件设备, 还是有很多;如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议;

举个有趣的例子:
 小明给小红发送了一 条:我想你了,对应的二进制011111001111xxx转换为电信号的高低电平进行传输,但是如果小明和小红的主机上的网卡是不同厂商生产的,他们对于高低电平的波长解释不同,就会导致010101111,实际对方收到的是1010111111,可能就被翻译成为:吃了吗,小红回复了:还没呢,小明收到了:收到的数据被解释成为:滚蛋,这时候的小明和小红,并没有形成实质上的通信。

协议分层

 协议分层:按照网络通信环境,不同层次所提供的服务,使用的协议,提供的接口,对整个通信环境进行了分层。

在这里插入图片描述
在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.分层最大的好处在于 “封装” .

OSI七层模型

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

  1. 应用层:负责应用程序之间的数据沟通的格式约定(QQ与QQ的沟通协议,SSH) ;典型协议: HTTP,SSH, SMTP, FTP, …
  2. 传输层:负责进程之间的数据传输的格式约定; 典型协议: TCP/UDP (内部就描述 了源端端口,对端端口)
  3. 网络层:负责地址管理与路由选择;典型协议: IP协议(内部描述 了源端IP,对端IP) ;典型设备: 路由器
  4. 链路层:负责相邻设备之间的数据传输(就像搬运一样,快递员一交给快递员二…最终交给用户);典型协议: ETH协议–以太网协议(内部描述了相邻设别的MAC地址) ;典型设备: 交换机
  5. 物理层:负责物理光电信号的传输;典型协议: 以太网协议(与组网技术有关) ; ;典型设备: 集线器

举一个qq传输的例子:
在这里插入图片描述
注意:
 分层顺序是固定的,但是不一定每一层使用的协议相同,从传输层开始,往下都是定义好的,只能选择用哪一种,不能自定义,但是应用层的协议是程序员可以自定义的,往下都是特定约定的,是一种标准。

拓展:
在这里插入图片描述
在这里插入图片描述

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

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

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

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.一般而言:

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

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

网络传输基本流程

网络传输流程图

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

在这里插入图片描述

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

在这里插入图片描述

数据包封装和分用

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

网络中的地址管理

认识IP地址

 IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4

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

认识MAC地址

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

在这里插入图片描述

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

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

相关文章

vue入门到精通(一)

一、vue简介 Vue是一款用于构建用户界面的 JavaScript 框架。 它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。 无论是简单还是复杂的界面,Vue 都可以胜任。 二、vue3选项式…

Linux编译器-gcc/g++使用

目录 1. 背景知识 2. gcc如何完成 2.1 预处理(进行宏替换) 2.2 编译(生成汇编) 2.3 汇编(生成机器可识别代码) 2.4 链接(生成可执行文件或库文件) 3 函数库 3.1 分类 3.2 图解 4 gcc选项 1. 背景知…

开源工具系列2:Trivy

在云原生安全的场景中,一个常见的场景就是对漏洞和配置进行扫描,以发现整个 K8s 环境的安全问题。今天我们来介绍一个高效的扫描工具Trivy。 Trivy 是什么 Trivy(tri 发音为 trigger,vy 发音为 envy)是一个简单而全面…

QT 学习笔记(十七)

文章目录一、多线程简介1. 基础知识2. 多线程的优缺点及注意事项二、多线程详解1. 背景案例2. 通过多线程对背景案例进行优化3. 方法一:多线程的创建使用(QT 4.7 以前)3.1 方法一的创建步骤3.2 方法一的具体实现及实现代码4. 方法二&#xff…

Android Hook之Frida安装使用

目录Frida安装安装frida-serverfrida-server配置和启动Frida Hook实例1:实例2:Frida 常用命令Frida 是一个动态检测框架,允许开发人员在 Windows、macOS、Linux、iOS 和 Android 上的原生应用程序中注入 JavaScript 或 Python 脚本。该框架可…

Spring复习(二)

FactoryBean FactoryBean是一个接口,需要创建一个类实现该接口 package com.mao.pojo;import org.springframework.beans.factory.FactoryBean;public class StudentFactoryBean implements FactoryBean {//getObject方法将对象交给Spring容器来管理Overridepubli…

Go web开发

使用 Gin-Plus 框架快速进行 web 开发 一、前言 安装 Get go get github.com/archine/gin-plus/v2v2.0.0Mod # go.mod文件加入下面的一条 github.com/archine/gin-plus/v2 v2.0.0# 命令行在该项目目录下执行 go mod tidy二、项目使用 1、启动入口 定义 main 文件&#xf…

来自一位双非本科大二学生的?自我救赎:堕落——蜕变

回望2022:获得?:失去;开心?:难过;伤心?:释怀 先提一句,总结2022,有后悔、不甘;有开心、感动;2022结束,更多的是…

springboot 2.6.6读不到nacos上的配置文件

搭建了一个微服务项目 spring boot 版本:2.6.6 spring cloud 版本:2021.0.1 spring cloud alibaba 版本:2021.0.1.0 遇到的问题无论是在application.yml还是在bootstrap.properties属性文件里配置服务中心相关的的信息都不能读取nacos上的…

LeetCode[215]数组中的第K个最大元素

难度:中等题目:给定整数数组 nums和整数 k,请返回数组中第 k个最大的元素。请注意,你需要找的是数组排序后的第 k个最大的元素,而不是第 k个不同的元素。你必须设计并实现时间复杂度为 O(n)的算法解决此问题。示例 1:输…

2.5(完结)C语言重点解剖内存管理函数要点速记

1.指针如果有具体的指向,包括野指针,对应的合法性,我们是无法验证的。 2.所有的指针如果没有被直接使用,必须设置为NULL。 3.在函数内部,要验证指针的合法性,本质上是验证指针!NULL。 4.自定义函数传入指…

Odoo 16 企业版手册 - 库存管理之到岸成本

到岸成本 到岸成本可以定义为买方在购买时应支付的产品总价。这包括运输、关税、手续费、服务费、运费等。为了获得产品的销售价格,这些额外费用被添加到产品的实际成本中。根据公司政策,不同公司的到岸成本计算方法将有所不同。在Odoo 库存模块中&#…

JAVA中的for循环使用方法

一. 循环结构1. 概念在学习Java里的循环之前,我们先来了解一下到底什么是循环,以及循环的作用。我们先来看下面这张图:大家想一下,我们在400米的跑道上参加万米长跑,正常情况下要跑25圈,这25圈每一圈的跑步…

FPGA:逻辑运算及逻辑门

文章目录逻辑变量与逻辑函数逻辑运算基本逻辑运算及对应的逻辑门1.与运算与逻辑举例状态表与真值表与逻辑符号与逻辑表达式与门电路2. 或运算或逻辑举例电路状态表状态表与真值表或逻辑符号或逻辑表达式或门电路3. 非运算非逻辑举例电路状态表状态表与真…

Lichee_RV学习系列---认识Lichee Rv Dock、环境搭建和编译第一个程序

Lichee Rv Dock学习系列文章目录 文章目录Lichee Rv Dock学习系列文章目录前言一、认识Lichee RV1、D1-H 芯片2、Lichee RV开发板3、系统镜像二、Lichee RV 固件烧录1、要求基本硬件2、基本资料下载3、固件烧录在这里插入图片描述三、连接上开发板1、ADB方式连接a:A…

【ART-Pi学习FreeRTOS】使用STM32CubeIDE搭建开发环境

【ART-Pi】使用STM32CubeIDE搭建开发环境STM32CubeIDESTM32CubeIDE新建工程进入芯片选型界面HSE和LSE时钟源设置时钟系统(时钟树)配置Generate CodeSTM32CubeIDE STM32CubeIDE安装比较简单,这里略过,可以百度搜索相关教程 STM32…

Excel 中选择行的快捷方式有哪些

在处理不同类型的数据时,用户需要多次选择任意行或多行。在这种情况下,任何人都必须知道选择行的快捷方式。了解一些快捷键,如在Excel中选择行,使任何人都能熟练使用MS Excel,而且这对任何人以更智能的方式工作都很有帮助。当一个人开始使用快捷方式执行他的/她的工作时,…

Spring与SpringMVC的区别和联系是啥?

Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IoC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。 …

餐饮巨头被攻击的“致命”48小时

编者按数字化浪潮蓬勃兴起,企业面临的安全挑战亦日益严峻。腾讯安全近期将复盘2022年典型的攻击事件,帮助企业深入了解攻击手法和应对措施,完善自身安全防御体系。本篇是第八期,讲述了某餐饮巨头遭遇黑客多轮次攻击、全国点餐系统…

Linux ALSA 之六:ALSA ASoc 架构

ALSA ASoc 架构一、ASOC 由来二、从 HW 角度三、从 SW 角度四、重要数据结构关联图1、基于 Linux 3.0 数据结构图2、基于 Linux 4.0 数据结构图一、ASOC 由来 ASoC–ALSA System on Chip,是建立在标准 ALSA 驱动层上,为了更好地支持嵌入式处理器和移动设…