网络基础(1):网络协议初识、TCP/IP五层模型、数据包封装和分用、认识IP和MAC地址、网络传输基本流程

本文主要是介绍网络基础(1):网络协议初识、TCP/IP五层模型、数据包封装和分用、认识IP和MAC地址、网络传输基本流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概览

        • 1. 网络发展
        • 2. 网络协议初识
          • 2. 1 OSI七层模型
          • 2.2 TCP/IP五层模型(或四层模型:不算物理层)
          • 2.3 封装分用的理解
          • 2.4 网络中的地址管理
            • 2.4.1 认识IP
            • 2.4.2 认识MAC
        • 3. 网络传输流程
          • 3.1 理解网络数据传输
          • 3.2 通信五元组
          • 3.3 DNS协议
          • 3.4 网络数据传输流程
            • 3.4.1 网络互联的方式
            • 3.4.2 局域网交换机组网的方式
            • 3.4.3 局域网交换机+路由器组网的方式
            • 3.4.4 广域网网络数据传输流程

1. 网络发展
  • 独立模式: 计算机之间相互独立

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

    • 网络互联:使用交换机
      在这里插入图片描述
    • 局域网:通过交换机和路由器连接在一起
      在这里插入图片描述
    • 广域网:
      组网方式:公网上,网络节点组成,每一个节点,可以是:
      在这里插入图片描述
      所谓局域网和广域网只是一个相对概念,广域网也可以看做一个比较大的局域网。
2. 网络协议初识
  • 协议是一种约定,计算机之间的传输媒介是光信号和电信号,通过频率和强弱来表示0和1这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式。
  • 本质上是数据格式的定义,知名的数据格式,大家都遵循的规范,属于协议。
  • 序列化 / 反序列化:相对比较小众,不属于网络通用
2. 1 OSI七层模型

一种网络分层的设计方法论,比较复杂且不实用,落地时几乎都是TCP/IP 四层/五层模型

由高到底:

  • 应用层:应用程序
  • 表示层:展示不同表现形式的信息
  • 会话层:通过会话管理网络连接,建立和断开
  • 传输层:确保数据传输的可靠性
  • 网络层:地址管理与路由选择
  • 数据链路层:互联设备之间传送和识别数据帧
  • 物理层:界定连接器和网线的规格
2.2 TCP/IP五层模型(或四层模型:不算物理层)
  • TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
  • TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

TCP/IP五层模型图示:
在这里插入图片描述

  • 对于一台主机,他的操作系统内核内实现了从传输层到物理层的内容。主机应用程序在应用层 —— 五层的封装分用
  • 对于一台路由器,他实现了从网络层到物理层 —— 下三层的封装分用
  • 对于一台交换机,他实现了从数据链路层到物理层 —— 下两层的封装分用
  • 对于集线器,他只实现了物理层。
2.3 封装分用的理解
  • 不同的协议层对数据包有不同的称谓,在传输层叫做段,在网络层叫做数据报,在链路层叫做帧。
  • 应用层应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装。
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
    • 封装:发送数据时,从高到低的顺序,按照对应网络分层的协议包装数据
      在这里插入图片描述
    • 分用:接收到数据时,从低到高进行对应网络分层的协议解析
    • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.
      在这里插入图片描述
2.4 网络中的地址管理
2.4.1 认识IP
  • IP地址是在IP协议中, 用来标识网络中不同主机的地址
  • 分为A-E五大类,部分范围是局域网IP,部分范围是广域网IP
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255

作用:

  • 网络号:前三个部分组成用以标识网段
  • 主机号:最后一个部分用以标识主机
  • 局域网内(局域网IP):网段唯一,同一个网段,主机号唯一
  • 公网(公网IP):公网IP唯一
  • IP地址描述的是路途总体的起点和终点 —— 给人用的,网络主机的逻辑地址。
2.4.2 认识MAC

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

  • 和网卡硬件绑定的,全球唯一,出厂时就确定了,不能修改
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

作用:

  • 网络数据传输定位网卡硬件位置。一个主机可能有多个网卡,电脑硬件定位数据发送的目的位置只能使用MAC。
  • MAC地址描述的路途上的每一个区间的起点和终点 —— 给电脑硬件用的,网络主机的物理地址
3. 网络传输流程
3.1 理解网络数据传输
  • IP、MAC起的作用

  • 封装分用:

    • 发送数据从高到低封装
    • 接受数据从低到高分用
  • 结合IP、MAC,理解网络数据传输,本质上是一跳一跳的传输数据

  • 接受数据报的主机:可能在一些情况下(广播,转发),目的MAC不是我,也能收到数据

3.2 通信五元组

—— 源IP、源端口号、目的IP、目的端口号、协议号

  • IP:标识主机,给人用

    • 源IP:发送数据的主机
    • 目的IP:接收数据的主机
  • 端口号:标识某个主机进程

    • 源端口:标识发送数据的进程
    • 目的端口:接收数据的进程
  • 协议号:进程要封装、解析数据报的数据格式

3.3 DNS协议
  • DNS是应用层协议
  • DNS底层使用UDP进行解析
  • 浏览器会缓存DNS结果,主机/路由器存在DNS缓存

域名查询的方式:

  • 树形结构从下向上进行查找(缓存、域名服务器)
  • 特殊的IP、域名:本机IP为127.0.0.1,本机域名为localhost
3.4 网络数据传输流程
3.4.1 网络互联的方式

在这里插入图片描述
主机ARP缓存表存有目的MAC:

流程:

  1. 主机1查找本机ARP缓存表,根据ARP协议,找到MAC
  2. 数据报由主机1,发送到集线器 。数据报中源MAC(主机1),目的MAC(主机3),真实的数据报
  3. 集线器转发数据到除主机1的其他所有相连主机(主机2,主机3)
  4. 主机2接收:数据报中,目的MAC不是我,丢弃
    主机3接收:数据报,目的MAC是我,接收。目的IP是我,交给对应端口进程处理

主机ARP缓存表中找不到目的MAC:

流程:

  1. 主机1查找本机ARP缓存表,发现找不到
  2. 主机1发送广播数据报。 非真实数据,只是要求对应主机返回MAC的数据。
    源MAC:主机1
    目的MAC:FF:FF:FF:FF:FF:FF,以太网帧首部的硬件地址为该地址表示广播。
  3. 集线器转发到主机2,主机3
  4. 主机2接收:要求的IP不是我,丢弃
    主机3接收:要求的IP是我,返回我的MAC
  5. 主机1收到主机3的返回数据(IP,MAC),更新自己的ARP缓存表
  6. 主机1发送真实的数据到主机3
    源MAC/ 源IP:主机1的MAC/IP
    目的MAC/目的IP:主机3的MAC/IP

使用集线器的缺陷:

  • 网络冲突,这样构成的网络区域叫冲突域/碰撞域
  • 数据报中有目的MAC,集线器还是会转发到其他所有端口
3.4.2 局域网交换机组网的方式

在这里插入图片描述
流程:

  1. 主机1查找本机ARP缓存表,如果找不到,发送广播数据报。
  2. 交换机转发到其他所有端口(广播)
  3. 主机2丢弃,主机3返回自己的MAC
  4. 交换机知道主机3的MAC,主机1直到主机3的MAC(更新ARP缓存表)
  5. 主机1发送真实的数据给交换机。
    源MAC:主机1
    目的MAC:主机3
  6. 交换机查找自己的MAC地址转换表,通过MAC找端口,发送到对应端口
  7. 主机3接收:目的MAC是我,目的IP也是我

说明:

  • 前四步和集线器流程一样,根据IP找MAC
  • 后3步是交换机通过MAC找对应端口,直接发送给目的MAC主机,不会影响其他主机。
3.4.3 局域网交换机+路由器组网的方式

路由器:

  • 模式1:
    在这里插入图片描述

  • 模式2:
    在这里插入图片描述
    传输流程:
    在这里插入图片描述

  1. 通过目的IP+子网掩码,计算出目的主机是否和本机在同一个网段
    通过IP和子网掩码按位与的操作,得到网络号,这样在发送数据报时,目的IP和子网掩码计算获得网段,可以判断是否和本机处于同一个网段
  2. 如果是,和之前交换机组局域网流程一致
  3. 如果不是,表示我主机1处理不了,要发送给网关转发
  4. 数据报发送给网关设备
    源IP:192.168.1.x 目的IP:192.168.2.y
    源MAC:主机1的MAC 目的MAC:路由器网卡1的MAC
  5. 路由器接收到数据报,分用:物理层到网络层,所以可以获取目的IP
  6. 路由器查找自己的ARP缓存表(IP找MAC)
  7. 如果找不到,路由器发广播
  8. 有了MAC,直接发到主机2
3.4.4 广域网网络数据传输流程

在这里插入图片描述
主机1:发送http://www.baidu.com网络数据报

流程:

  1. DNS协议:域名转IP,本机DNS缓存中找===> 向上查找,如果根域名服务器找不到,表示公网上没有该域名主机

  2. 找到IP,数据报IP部分,PORT部分都有了
    源IP:主机1的IP 目的IP:百度服务器的IP
    源MAC:主机1的MAC 目的MAC:?

  3. 根据目的IP计算是否和主机1在同一网段
    主机1的IP+子网掩码计算出主机1的网段;目的IP+子网掩码计算出目的主机的网段,比较两个网段是否为同一网段

  4. 不是同一个网关:发送数据报到网关
    找网关的MAC,在本机的ARP缓存表中,基于ARP协议(IP映射为MAC),通过网关IP找MAC
    4.1 如果找不到,发送询问MAC的广播数据报,此时源MAC/IP为主机1,目的MAC:FF:FF:FF:FF:FF:FF,目的IP:网关(路由器1网卡1),最后网关会返回自己的MAC
    4.2 如果找到,发送http数据报到网关(路由器1),此时:
    在这里插入图片描述

  5. 交换机转发:在MAC地址转换表(MAC映射端口),通过目的MAC找端口,不存在数据的封装、分用

  6. 路由器接收、分用数据报
    局域网IP不能在公网上使用要使用公网IP来收发数据
    分用:可以拿到数据报中IP,PORT,MAC
    路由:路由表(信息(很多公网IP+坐标)、复杂算法),计算目的IP方向:数据报下一个发送到哪个网络设备,离目的IP更近
    NAT:局域网IP映射公网IP
    NAPT:局域网IP+局域网端口(该IP主机进程绑定的) ===> 映射为公网IP+公网端口(路由器上的进程端口)
    在这里插入图片描述

  7. 路途中的设备:

在这里插入图片描述

  1. 百度服务器:
    在这里插入图片描述

  2. 路途上的设备:
    在这里插入图片描述

  3. 路由器1接收响应数据: 分用,修改,封装
    在这里插入图片描述

  4. 主机1接收数据报,分用

这篇关于网络基础(1):网络协议初识、TCP/IP五层模型、数据包封装和分用、认识IP和MAC地址、网络传输基本流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/178084

相关文章

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作