码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • IP协议报文格式


    IP协议报文格式

    • 一: 报头格式
      • 1.1 : 4位版本
      • 1.2 : 4位首部长度
      • 1.3 : 8位服务类型 :
      • 1.4 : 16位总长度(字节数)
      • 1.5 : 8位生存时间(TTL)
      • 1.6 : 8 位协议
      • 1.7 : 32 位源IP / 32 位目的IP

    一: 报头格式

    在这里插入图片描述

    1.1 : 4位版本

    现在使用的也就只有IPv4,IPv6

    1.2 : 4位首部长度

    以 4字节为单位,所以IP报头最长就是64字节,最短就是20字节

    1.3 : 8位服务类型 :

    实际上只有4位有效, 而且这4位是互斥的,只有一位为1

    1. 最小延时 : 传输过程中.消耗的时间最短
    2. 最大吞吐量: 单位时间内,传输的数据尽可能多.
    3. 最高可靠性: 降低丢包的概率.
    4. 最小成本: 比较节省系统开销.

    1.4 : 16位总长度(字节数)

    指的是整个IP 数据包的长度: 报头+ 载荷
    总长度,去掉IP报头长度,就是IP载荷长度,而IP载荷是由TCP/UDP报头+ TCP/UDP载荷组成,所以去掉TCP/UDP报头长度,剩下的就是载荷长度了.
    16bit ,表示IP数据包最大64KB,如果超过64KB,怎么办?
    IP协自身实现了拆包,组包这样的功能,如果数据包的长度超过上限,IP数据包就会自动拆分成多个数据包,每个数据包携带一部分,发送到对方后,再拼接好.

    在这里插入图片描述

    在这里插入图片描述

    1.5 : 8位生存时间(TTL)

    IP 数据包在网络上转发,是由次数限制的,当转发的次数过多,接收方还未收到,这个数据包就要被丢弃.
    8位生存时间,就是限制一个数据包在网络上转发的最大次数.
    一个IP数据包,初始情况下,有一个TTL的值(32/64这样的整数),也是可以配置的.
    这个次数每经过一个路由器的转发,就要-1,减到0了,就要把这个数据包丢弃掉.

    1.6 : 8 位协议

    描述了载荷部分是哪种协议的数据包.
    一个数据包在分用的时候,要交给上层的哪个协议,都是有明确的声明的,
    传输层 ==> 应用层 : 通过端口号来区分

    网络层 ==> 传输层 : 报头中有这个8位协议字段,不同的取值就对应不同的传输层协议

    数据链路层 ==>网络层 : 报文中,类型字段,区分是IP数据包,还是其他的数据包

    1.7 : 32 位源IP / 32 位目的IP

    32位范围: 0 - 42亿9千万,原则上.IP地址应该是唯一的,不重复的,但32位仍然不够用,尤其是现在处于移动互联网的今天.
    32位IP地址不够用,如何解决?

    1. 动态分配 IP地址.
      某个设备,上网就分配 IP地址,不上网,就不分配,
      这样的机制,只能缓解,没办法从根本上解决问题,IP地址没有变多,只是跳过了IP地址的利用率.

    2. NAT机制 : 网络地址映射
      首先,把IP地址分为两类,
      1: 私网IP (局域网内部使用)
      10.x.x.x
      172.16 .x.x - 172.31.x.x
      192.168.x.x
      2: 公网IP(广域网使用): 私网IP以外的IP

    公网IP是唯一的,私网IP可以在不同的局域网中重复.

    == 引入私网IP,如何进行通信呢?==

    1. 同一个局域网内部, 设备之间的通信
      由于一个局域网内部的设备之间的IP是不能重复的,所以这些设备可以正常通信
    2. 广域网和广域网设备之间的通信
      广域网中的设备IP本身就是唯一的,所以也能正常交互.
    3. 局域网1 中的设备A尝试访问局域网2 中的设备B
      这种情况下是不允许进行访问的
    4. 局域网中的设备主动访问广域网设备,
      这个过程中,NAT机制就发挥作用了.
    5. 广域网主动访问局域网设备
      不允许进行访问

    因此, 如果需要进行上述的局域网和局域网设备之间的通信,往往需要广域网中的服务器进行数据转发.

  • 相关阅读:
    Vue前端框架10 组件的组成、组件嵌套关系、组件的注册方式、组件传递数据(props $emit)、数组传递多种数据类型、组件传递props校验、组件事件
    ZZNUOJ_用C语言编写程序实现1211:日期排序(附完整源码)
    Qt-FFmpeg开发-音频解码为PCM文件(9)
    PE文件解析(5):重定位表详解
    【校招VIP】“推推”产品项目课程:产品的脑图分析
    SQL语言---视图操作
    Flink CDC引起的Mysql元数据锁
    代码随想录算法训练营第23期day27|93.复原IP地址、78.子集、90.子集II
    java对象反序列化流
    CentOS与Xshell,开启ssh协议sshd服务远程控制
  • 原文地址:https://blog.csdn.net/2302_77978695/article/details/139483936
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号