【linux】网络基础

ops/2024/10/24 4:16:06/

1. 网络发展

独立模式->网络互联->局域网LAN->广域网WAN

  1. 独立模式: 计算机之间相互独立
  2. 网络互联: 多台计算机连接在一起, 完成数据共享
  3. 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起
  4. 广域网WAN: 将远隔千里的计算机都连在一起

2. 认识协议

"协议" 是一种约定

计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式

通过网络传输数据,有以下问题:

  1. 如何保证数据能准确到达下一个设备(数据链路层)
  2. 如何定位主机的位置(ip协议)
  3. 长距离传输的数据丢失(rcp协议)
  4. 如何处理发来的数据(应用问题)

要解决以上问题都需要协议

注意:

我们可以把协议看作是一个结构体,里面有各种属性的数据(除了要传输的数据,还有其它的数据,如传送时间,主机名等等),要双方都有同一个结构体,才能达成协议

3. 网络协议

(一)协议分层

协议分成好几层,每一层中还分不同协议

我们以为的协议是两个主机对应一层的交互,实际上通过网络传输数据,是一个主机传数据,从应用层传到底层硬件(网卡),另一个主机接受数据,是从底层硬件传输到应用层的

(二)OSI 七层模型

  1. OSI 七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范
  2. 网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
  3. OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输
  4. 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七

个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯

(三)TCP/IP五层模型

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

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

1. 物理层: 负责光/电信号的传递方式.

比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(可以使得网络数据传送更远)工作在物理层.

2. 数据链路层: 负责设备之间的数据帧的传送和识别.

例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(可以减少在以太网中多数据传输发生的碰撞)工作在数据链路层.

3. 网络: 负责地址管理和路由选择.

例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

4. 传输层: 负责两台主机之间的数据传输.

如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

5. 应用层: 负责应用程序间沟通

如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

注意:

每一层都有每一层的协议,网络通信的本质就是贯穿协议的过程

4. 网络传输基本流程

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

TCP/IP协议通讯过程(同一局域网内):

注意:

  1. 每一层对应的协议不止一个,上述只是写了较为重要的几个协议
  1. 跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

---------------------------------------------------------------------------------------------------------------------------------

跨网段的主机的文件传输

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

5. 数据包封装和分用

前面提过,传输数据其实不止把需要传的数据传了出去,还要附带一些其它数据(和协议有关)

可以把每一个协议都看作是一个结构体

同一网域内:

注意:

  1. 每一层的报头都不一样,除去这一层的报头,剩下的就是有效载荷
  2. 通信的过程,就是不断地封装和解包
  3. 任意协议,都有一种共性:
  • 提供一种能力,将报头和有效载荷分离
  • 提供一种能力,知道将自己的有效载荷传给哪一个协议(每一层都有多个协议)------ 分用

跨网域:

注意:

  1. IP协议屏蔽了底层网络的差异(驱动程序不同),主要靠工作在这一层的路由器
  2. IP报文实现了全球主机的软件虚拟层,一切皆是IP报文

6. 网络中的地址管理

(一)认识MAC地址

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

向以太网传输数据(主机都处于同一个网内):

注意:

  1. 以太网其实是一个共享资源,每个主机都可以向里面传送数据,所以也容易造成数据碰撞(即多个主机同时向以太网传送数据),从而发生传送数据失败,如果失败了,再一次传送即可
  2. 在数据链路层的交换机,可以减少一些碰撞
  3. 由于每个主机在数据链路层其实都能接收到数据,也可能造成网络安全问题,所以在应用层传输数据时,可以对数据进行封装
  4. 数据链路层中的报头存储的MAC地址有可能会发生变化(跨网域的时候)

(二)认识IP地址

  1. IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
  2. IP地址是在IP协议中, 用来标识网络中不同主机的地址(全网的)
  3. 对于IPv4来说, IP地址是一个4字节, 32位的整数

我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255(1个比特位)

区分 IP地址 和 MAC地址:

  1. 从一个主机到另一个主机传送网络数据(发送主机和接收主机不会变)----- 利用IP地址
  2. 从一个主机到另一个主机传送网络数据的过程中,如果是跨局域网的,中途可能还会经过多个路由器,数据链路层的发送和接收地址会发生变换(如 A->B->C这一过程,发送和接受就是:A,B;B,C)


http://www.ppmy.cn/ops/128001.html

相关文章

【MySQL 保姆级教学】表结构的操作(4)

表结构的操作 1. 定义和语法2. 创建表 CREATE2.1 创建表的本质2.2 表的存储引擎2.3 表的字符集和校验规则2.4 创建表实例 3. 查看表结构 DESC3.1 作用3.2 示例 4. 修改表结构 ALTER4.1 添加列 ADD4.2 修改列 MODIFY4.3 删除列 DROP4.4 更改列名 CHANGE 5. 修改表名 RENAME6. 删…

CRMEB标准版Mysql修改sql_mode

数据库配置 1.宝塔控制面板-软件商店-MySql-设置 2.点击配置修改,查找sql-mode或sql_mode (可使用CtrlF快捷查找) 3.复制 NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 然后替换粘贴,保存 注:MySQL8.0版本的 第三步用…

记录一个容易混淆的 Spring Boot 项目配置文件问题

记录一个容易混淆的 Spring Boot 项目配置文件问题 去年,我遇到了这样一个问题: 在这个例子中,由于密码 password 以 0 开头,当它被 Spring Boot 的 bean 读取时,前导的 0 被自动去掉了。这导致程序无法正确读取密码。…

【Flutter】基础入门:自定义Widget

在 Flutter 开发中,除了使用丰富的内置 Widgets 构建界面外,自定义 Widget 是让你的应用更灵活和个性化的重要手段。Flutter 允许你根据需求自定义 StatelessWidget 和 StatefulWidget,以实现复杂的 UI 组件或功能模块。 本教程将通过实例讲…

Git Push(TODO)

最近经常碰到GIT push不上去的问题。到处求人解决也真是尴尬,想自己看看,所以刚刚在github上建了一个仓,试了下。结果如下: 暂时可能还不行,因为数据都是加密的,没法看到具体GIT的交互信息。。。 后面再想办…

CTFHUB技能树之SQL——布尔盲注

开启靶场,打开链接: 输入1: 显示查询成功但没有回显出相关信息,初步判断是布尔盲注入、时间盲注或报错注入 输入1: 还是没有回显 输入1": 还是没有回显,到这里已经可以确认是布尔盲注了&a…

深入理解 SQL 中的高级数据处理特性:约束、索引和触发器

在 SQL(Structured Query Language)中,除了基本的查询、插入、更新和删除操作外,还有一些高级的数据处理特性,它们对于确保数据的完整性、提高查询性能以及实现自动化的数据处理起着至关重要的作用。这些特性包括约束、…

redis过期提醒

文章目录 redis过期提醒 redis过期提醒 有一次看redis的配置文件发现一个notify-keyspace-events配置,注释里边长篇大论的,那我得看看这是干啥的,看完注释内容,发现不得了了,redis竟然还有过期提醒的功能 接下来得大…