小言_互联网的博客

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

395人阅读  评论(0)

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接收数据报,分用


转载:https://blog.csdn.net/weixin_46078890/article/details/116856304
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场