网络基础(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系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解