网络原理---拿捏网络层:IP协议

news2024/12/23 0:09:00

文章目录

  • IP协议
    • 4位版本
    • 4位首部长度、选项
    • 8位服务类型(TOS)
    • 16位总长度
    • 16位标识、3位标志、13位片偏移
    • 8位生存时间(TTL)
    • 8位协议
    • 16位首部校验和
    • 32位源IP地址、32位目的IP地址
      • 解决IP地址不够用的问题
        • 动态分配IP地址
        • NAT机制(主流机制)
        • IPv6
  • IP地址管理
  • 特殊的IP地址
  • IP路由选择

IP协议

学习协议很大程度上就是在学习协议的报文格式,以下便来介绍IP协议的报文格式:
在这里插入图片描述

4位版本

4位版本:虽然用4位进行表示,但是只使用4和6.代表IPv4协议和IPv6协议。

4位首部长度、选项

4位首部长度:和TCP的4位首部长度一样,也是变长的。因为选项可有可无,可以有一个也可以有多个

8位服务类型(TOS)

8位服务类型:其中只有4位有效,表达了当前IP协议不同的工作模式:最小延时、最大吞吐量、最高可靠性、最小成本。 这4位里同时只有1位可以是1,不能同时都是1.

16位总长度

16位总长度:描述了IP数据包的报文长度是多少。

IP总长度 - IP报头长度 = TCP报文长度

IP数据包最大只能是64kb吗?

不是的。IP协议自带了分包分组的机制(将一个大的数据包分成几个小的数据包分别进行传输),通过这个机制可以传输很长的TCP数据包。

16位标识、3位标志、13位片偏移

这三个都是用来实现IP协议的分包分组机制的。
在这里插入图片描述

就像搬家一样,如果要搬的东西太多,一车装不下,就叫几辆车一起搬,每辆车用来搬一部分。
这几辆车都是我找来的,它们的16位标识相同;
先找的车片偏移比较小,后找的车片偏移比较大;
最后一辆车会有特殊的标志;

8位生存时间(TTL)

TTL:单位是”次数“,是一个整数,一般取32/64/128这样的整数。

数据报在传输的过程中,每经过一个路由器转发TTL就 -1 ,如果减到0了就把这个数据报丢掉(不再继续转发了)

预期的正常情况下,每个数据报都可以在很短的次数内传输到世界上任何一个地方的主机上的。(六度空间理论)

如果经过TTL这么多次的转发还没有到达目的地,大概率是地址写错了,就会放弃传输。

8位协议

8位协议:指的是IP载荷中数据报使用的传输层协议。

接收方收到数据报会进行分用,当分用到网络层的时候,下一次就要交给传输层分用。8位协议就决定了把这个数据报交给传输层的哪个协议来解析。

16位首部校验和

16位首部校验和:作用是为了检查数据是否出错了。保证接收方知道接收到的数据是正确的还是错误的。

32位源IP地址、32位目的IP地址

32位源IP地址:描述发件人的地址
32位目的IP地址:描述收件人的地址

IP地址是32位的,是4个字节。为了让人看得更清楚,通常就会把这个32位的整数转化为”点分十进制“的表示方式。比如:

本机IP:127.0.0.1

使用三个点把IP地址分为4部分,每个部分都是1个字节,范围是0-255

解决IP地址不够用的问题

一个IP地址用32位表示,它的范围是0-42亿9千万。而IP地址是用来区分网络中的每一台主机,每台主机的IP地址和别人都是不同的。但是当前地球上的所有主机早已超过了43亿,因此,我们就需要解决IP地址不够用的问题。以下有三种解决策略:

动态分配IP地址

设备上网的时候才分配IP地址,不上网的时候就把IP回收给别人用。

缺点:没有增加IP地址的数量,只是提高了利用率。”治标不治本“

NAT机制(主流机制)

不再强制要求每个主机都有独立的IP,而是把IP分为俩类:
a)外网IP / 公网IP
b)内网IP / 私网IP / 局域网IP

规定的内网IP格式:

  1. 10.*
  2. 172.16.* - 172.31.*
  3. 192.168.*

约定: 在同一个局域网内部IP不能重复,但是在不同的局域网之间IP可以重复。如果在局域网内部想访问某个外网的服务器,就会使用一个外网IP来代替同一个局域网中的所有设备(大大节省了外网IP的个数)

路由器本身就是NAT设备,它就会记录映射关系。在发起请求和做出相应时,都会做出相应的映射。

注:当前网络的现状:动态分配+NAT机制

IPv6

IPv4:用4个字节、32位来表示IP地址。范围是0 - 42亿9千万
IPv6:用16个字节、128位来表示IP地址。 范围是42亿 * 42亿 * 42亿 * 42亿

注:IPv6彻底解决了IP地址不够用的问题。就是地球上的每一粒沙子都够表示了。

IP地址管理

  • IP地址分为两个部分:网络号和主机号
    网络号:标识网段,保证相互连接的两个网段具有不同的标识。即:局域网的身份标识
    主机号:标识主机,同一网段内主机之间具有相同的网络号,但必须有不同的主机号

    即:同一个局域网中主机之间的网络号是相同的,两个相邻的局域网中主机之间的网络号必须是不同的,隔着的局域网中主机之间的网络号可以是相同的。

  • 子网掩码:用来划分从哪里到哪里是一个网络号。是32位的,左半边都是1、右半边都是0(不会0和1混着)

    左半边有多少个1就代表IP地址左侧的多少位是网络号
    把子网掩码和IP地址进行按位与运算得到的结果就是网络号

特殊的IP地址

如果一个IP地址,主机号为0,此时这个IP就标识网络号。
如果一个IP地址,主机号为1,此时这个IP往往表示这个局域网的“网关”
如果一个IP地址,主机号为全1,此时这个IP表示广播IP
127.*开头的IP都是”环回IP“

IP路由选择

路由选择:网络层是点到点传输的,路由选择就是在俩点之间规划出一个路线。

路由选择是”启发式“的过程,类似于”问路“

IP数据报中本身就包含一个目的IP,网络数据到达路由器的时候,路由器自身有一个”路由表“的数据结构(路由表就是这个路由器认识的路),一个路由器无法认识到网络的全貌,但是可以认识到附近的一部分。

如果当前的目的IP路由器认识,就会给出一个明确的路线。
如果当前的目的IP路由器不认识,路由器就会把数据报转发给另一个”见多识广“的路由器。
如果转发了很多次都没有找到目的IP(TTL减到0),就舍弃这个数据报

注:路由过程不光是找到一条路,而是筛选出一条更好的路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1185552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

好消息,微信消费者投诉工具升级,可以直接回复用户、处理投诉了。。。

大家好,我是小悟 兄弟们,阅读本文之前,建议先阅读【连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户】。 为了使工具更好用,也为帮助商户更好地处理消费者投诉,提升用户满意度,…

谷歌提出 AGI 完整路线图:目前 ChatGPT 只处于 AGI 的第一阶段

本心、输入输出、结果 文章目录 谷歌提出 AGI 完整路线图:目前 ChatGPT 只处于 AGI 的第一阶段前言谷歌 DeepMind 发布 AGI 分级框架发展 AGI 必须遵循6个基本原则什么是AGI图灵测试详解六大原则AGI 的五大发展过程阶段原文参考弘扬爱国精神谷歌提出 AGI 完整路线图:目前 Cha…

Fabric区块链浏览器搭建

目录 一、创建区块链浏览器相关目录二、配置docker-compose三、配置区块链浏览器四、启动区块链浏览器 书接这一回 Fabric二进制建链,在建好链之后,将为这条链部署一个区块链浏览器。 Hyperledger Fabric区块链浏览器地址:https://github.co…

计网----数据库(一)

计网----数据库(一) 一.什么是数据库 数据库是”按照数据结构来组织、存储和管理数据的仓库“。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 二.数据库的特点 1.规范化的本地存储 2.加密 3.共享 三.数据库的好处…

[动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子

[动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子 文章目录 [动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子题目解析解题思路状态表示状态转移方程初始化和填表顺序返回值 代码实现总结 LCR 091. 粉刷房子 题目解析 (1) 一排房子,共有n个 (2) 染…

【电路笔记】-基尔霍夫电路定律

基尔霍夫电路定律 文章目录 基尔霍夫电路定律1、框架和定义2、基尔霍夫电流定律3、基尔霍夫电压定律4、基尔霍夫定律应用5、基尔霍夫定律的局限性6、总结 在本文中,将介绍最基本、最重要的电路定律之一。 这些法律由德国医生古斯塔夫基尔霍夫 (Gustav Kirchoff) 于 …

java数据结构--双端队列

一.概念 双端队列的意思是可以在头部和尾部添加和删除元素&#xff0c;更一般的单向链表队列比起来更加的灵活&#xff0c;下面我们用双向循环带哨兵链表和数组来分别实现 二.定义接口Dequeue /*** 双端队列*/ public interface Dequeue<E> {//队头添加元素boolean off…

MSSQL 配置ORACLE ​链接服务器

在有些场景&#xff0c;我们需要整合其他异构数据库的数据。我们可以使用代码去读取&#xff0c;经过处理后&#xff0c;再将数据保存到MSSQL数据库中。如果数据量比较大&#xff0c;但处理的逻辑并不复杂的情况下&#xff0c;这种方式就不是最好的办法。这时可以使用使用链接服…

C++笔记之表驱动法-全局静态结构体变量的应用实例ColorMAP

C笔记之表驱动法-全局静态结构体变量的应用实例ColorMAP code review! 代码 #include <ros/ros.h> #include <visualization_msgs/Marker.h>struct RGBA{RGBA(){red.r 1; green.r 0; blue.r 0;red.g 0; green.g 1; blue.g 0;red.b 0; green.b 0; blue.b…

Netty入门指南之NIO Buffer详解

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言ByteBu…

终究还是翻车了,人肉运维100 次后

翻车现场 5年前的一个晚上&#xff0c;我接到数据组同事的消息&#xff0c;要求将A用户的磁盘快照共享给B用户。我对这个线上运维工作早已轻车熟路&#xff0c;登录线上服务器仅用了2分钟就完成了。 我继续忙着其他事情&#xff0c;3分钟后&#xff0c;我正要打开新的控制台页…

【多线程】synchronized的特性

文章目录 synchronized 的特性互斥可重入synchronized的使用加锁过程 synchronized 的特性 互斥 synchronized 会起到互斥效果&#xff0c;某个线程执行到某个对象的 synchronized 中时&#xff0c;其他线程如果也执行到同一个对象 synchronized 就会阻塞等待。进入 synchron…

【源码篇】基于SSM+JSP实现的网上花店系统

系统介绍 基于SSMJSP实现的网上花店系统采用了时下流行的 Java 程序设计语言进行开发&#xff0c;系统开发的工具采用 Idea 开发工具&#xff0c;普通用户可以在该系统完成注册、登录、购买等一系列操作&#xff0c;致力于为用户提供一个方便快捷的在线购花平台。 前台系统功…

Oracle(14) Managing Password Security and Resources

目录 一、基础知识 1、Profiles 配置文件 2、Password Management 密码管理 3、Enabling Password Mgmt 启用密码管理 4、Password Verification 密码验证 ​编辑5、User-Provided Passwd Func 用户提供的密码功能 6、Verif Func: VERIFY_FUNCTION验证函数介绍 7、Reso…

Web时代下,软件系统的持续进步,是否能完全替代人力节省成本?

Web时代下&#xff0c;软件系统的持续进步&#xff0c;是否能完全替代人力节省成本&#xff1f; 随着全球经济的蓬勃发展&#xff0c;众多经济学家纷纷提出了新的管理理念&#xff0c;例如在20世纪50年代&#xff0c;西蒙提出管理依赖信息和决策的思想&#xff0c;但在同时期的…

2023年云计算的发展趋势如何?

混合云的持续发展&#xff1a;混合云指的是将公有云和私有云进行结合&#xff0c;形成一种统一的云计算环境。随着企业对数据隐私和安全性的要求越来越高&#xff0c;以及在数据存储和处理方面的需求不断增长&#xff0c;混合云正在逐渐成为主流。预计未来混合云将会继续保持高…

,多数据源+Mybatisplus + Sharding JDBC同一库中分表

水平分表是在同一个数据库内&#xff0c;把同一个表的数据按一定规则拆到多个表中,多数据源采用 mybatis-plus的dynamic-datasource 分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter 同一个数据库内分表 目录 1.数据库表 2.配置 3.引入的…

蓝桥等考C++组别六级004

第一部分&#xff1a;选择题 1、C L6 &#xff08;15分&#xff09; 关于switch语句&#xff0c;以下说法正确的是&#xff08; &#xff09;。 A. break语句只能用于switch语句。 B. switch语句中可以使用多个default语句。 C. switch语句中只能使用一个break语句。 D. …

优雅的并发编程-CompletableFuture

目录 了解CompletableFuture CompletableFuture 是 Java 8 引入的一个类&#xff0c;用于支持异步编程和非阻塞操作。它提供了一种简单而强大的方式来处理异步任务&#xff0c;可以轻松地实现并行、非阻塞的操作&#xff0c;并且提供了丰富的方法来处理任务的完成状态、异常情…

iOS加固原理与常见措施:保护移动应用程序安全的利器

​ 目录 iOS加固原理与常见措施&#xff1a;保护移动应用程序安全的利器 前言 一、iOS加固的原理 1. 代码混淆 2. 加密算法 3. 防调试技术 4. 签名校验 二、iOS加固的常见措施 1. 代码混淆 2. 加密算法 3. 防调试技术 4. 签名校验 三、iOS加固的效果和注意事项 参…