• Linux——ip协议


    ip协议也属于tcp/ip协议栈

    ip协议报头格式

    在这里插入图片描述

    ip协议如何将自己的报头和有效载荷分离?

    报头可以做到定长加自描述字段将报头和有效载荷分离出来

    ip协议如何将自己的有效载荷交付给上层协议?

    依靠报头中8位协议决定将自己交付给上层的那个协议

    IP实现跨网络传输的前提是什么

    前提:把报文可以从一台主机送到和自己直接相连的下一台主机(由数据链路层提供:mac帧)——》局域网通信

    分片与组装

    为什么要进行分片

    因为底层的mac帧规定了MTU(最大传送单元)

    如何进行分片和组装的

    实际可以将上述问题分割成以下三个问题:

    1. 如何识别是分片报文?

    2. 如何进行合理组装

    3. 如何发现丢包问题

    4. 如何保证自己收到了所有的分片呢?

      1.通过13位的片偏移+3位标志中的”更多分片“,如果更多分片为0,则的代表没有分片,如果是1则代表有分片。
      2.根据标识聚合所有的分片报文,按照片偏移进行升序排序。
      3.每个报文都有自己的起始片偏移,起始片偏移+自身分片的长度=下一个分片报文的起始片偏移。
      4.开头没有丢失,中间没丢,收到结尾报文(更多分片为0)

    什么是分片和组装

    IP报文无法将报文整体发送给对方,需要将报文拆成多片到对方再进行组装

    mac的有效载荷最大是MTU,其中MTU包含了什么?

    IP的报头+ip的数据=MTU(1500字节),所以每一个分片都要包含IP报头。

    IP:提供一种能力,将数据从A主机跨网络发送给B主机的能力。

    网络划分

    IP地址分为两个部分, 网络号和主机号

    • 网络号: 保证相互连接的两个网段具有不同的标识;
    • 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;

    在这里插入图片描述

    • 不同的子网其实就是把网络号相同的主机放到一起
    • 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复

    在这里插入图片描述

    • A类 0.0.0.0到127.255.255.255
    • B类 128.0.0.0到191.255.255.255
    • C类 192.0.0.0到223.255.255.255
    • D类 224.0.0.0到239.255.255.255
    • E类 240.0.0.0到247.255.255.255

    上述网络划分会浪费很多网络号,所以提出了一种新的划分方案,称为CIRD

    • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号
    • 子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾
    • 将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号

    在这里插入图片描述

    其实每一个子网都有自己的子网掩码

    特殊的IP地址

    • 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网
    • 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包。
    • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

    数据链路层

    以太网

    “以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
    以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等

    以太网帧格式

    在这里插入图片描述

    如何分离?

    定长报头

    如何交付?

    根据两个字节的类型,根据数值不一样然后决定交付给上层

  • 相关阅读:
    指针,动态内存分配
    CMake中target_link_libraries的使用
    微信小程序 实现天气预报接入
    网络安全攻防战:保护个人隐私与数据安全
    先进的无人机GPS/GNSS模块解决方案
    取消elementUI中table的选中状态和勾选状态赋值
    数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法
    常用数据库的最大并发和实际并发
    【深度学习】数据准备-pytorch自定义图像分割类数据集加载
    深度学习(part3)--深度学习框架tensorflow
  • 原文地址:https://blog.csdn.net/weixin_46107667/article/details/126041132