网络基础(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

相关文章

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu