当前位置: 首页 > news >正文

<JavaEE> 了解网络层协议 -- IP协议

目录

初识IP协议

什么是IP协议?

IP协议中的基础概念

IP协议格式

图示

4bit版本号(version)

4bit头部长度(headerlength)

8bit服务类型(TypeOfService)

16bit总长度(total length)

16bit标识(id)

3bit标志字段

13bit分片偏移(framegament offset)

8bit生存时间(Time To Live,TTL)

8bit上层协议类型

16bit头部校验和

32bit源地址和32bit目标地址

选项字段

IP协议有什么功能?


初识IP协议

                                                  

什么是IP协议?

  • IP协议属于网络层协议,主要功能是通过地址管理和路由选择,将数据包传输到目标主机

  • IP协议定义了数据包的格式、寻址方式和路由规则,是互联网通信的基础


IP协议中的基础概念

  • 主机:配有IP地址,但不进行路由控制的设备。

  • 路由器:既配有IP地址,又能进行路由控制的设备。

  • 节点:主机和路由器的统称。


IP协议格式

                                                  

图示


4bit版本号(version)

  • 表示当前报文的IP协议版本,如IPv4

4bit头部长度(headerlength)

  • 表示IP头部的⻓度。

  • 4bit可以表示的最大数字是15,其中每个1表示一个32bit,即4字节,因此头部长度最长为15*4=60字节


8bit服务类型(TypeOfService)

具体包含以下内容:

  • 3bit优先权字段已弃用

  • 4bitTOS字段:表示IP协议的四种不同形态

    1. 最小延时

    2. 最大吞吐量

    3. 最高可靠性

    4. 最小成本

  • 1bit保留


16bit总长度(total length)

  • 表示IP数据报整体占多少字节

  • 16bit最多只能表示65535,即单个报文长度最长为64kb

  • 但是IP协议本身支持“拆包组包”功能,因此报文长度并不是固定的。


16bit标识(id)

  • 用于表示发出的报文,是一个唯一的标识

  • 当IP报文在数据链路层被分片,则每个分片中的id都是相同的,以此识别数据中的同一段报文。


3bit标志字段

具体包含以下内容:

  • 第一个bit,为保留位。

  • 第二个bit,为1表示禁止分片,此时如果报文长度超过MTU,则报文会被丢弃;为0表示可以分片

  • 第三个bit,表示分片结束标识,当存在分片且当前分片是报文的最后一片时,该bit为1;不是最后一片,则为0。


13bit分片偏移(framegament offset)

  • 表示当前分片在原报文中所处的位置

  • 偏移字节数通过该值*8计算得出,因此除最后一个报文外,其他报文长度必须为8的整数倍。


8bit生存时间(Time To Live,TTL)

  • 表示数据报到达目标地址的最大报文跳数

  • 每经过一个路由则跳数-1,当跳数为0时,报文将被丢弃

  • 这个属性的作用是防止出现路由循环


8bit上层协议类型

  • 表示上层(传输层)协议的类型。

  • 描述了IP数据报的载荷部分的协议类型,如UDP数据报或TCP数据报。


16bit头部校验和

  • 使用CRC进行校验,只用于鉴别头部是否损坏,并不校验载荷

32bit源地址和32bit目标地址

  • 是两个32bit的整数,分别表示发送端地址和接收端地址,是IP数据包中最关键的内容


选项字段

  • 长度不定,最多40字节,用于辅助上述字段工作,不做介绍。


IP协议有什么功能?

                                                  

  • IP协议的功能是地址管理和路由选择

<JavaEE> 理解IP协议的两个功能 -- 地址管理和路由选择-CSDN博客


相关文章:

  • 从零到一构建短链接系统(八)
  • 通过jsDelivr实现Github的图床CDN加速
  • Rust常用库之序列化和反序列化库serde(使用 Serde 处理json)
  • Visual Studio 2022下配置 OpenMP 多线程编程环境与运行
  • java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
  • 计算机网络相关
  • 实战打靶集锦-027-SoSimple1
  • 【Redis】Redis常见原理和数据结构
  • AI开源概览及工具使用
  • PHP全新美化广告横幅在线制作源码
  • Qt-QDialog非模态置于窗口之上且操作主窗口不隐藏dialog的方法
  • npm run dev命令的执行顺序和原理
  • 【WEEK4】 【DAY1】整合SSM框架之基本环境搭建—第二部分【中文版】
  • 如何实现跨标签页通讯
  • Windows10无盘母盘制作-以云更新为例
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • AngularJS指令开发(1)——参数详解
  • docker容器内的网络抓包
  • Docker入门(二) - Dockerfile
  • java8 Stream Pipelines 浅析
  • JavaScript实现分页效果
  • Netty 4.1 源代码学习:线程模型
  • Python 基础起步 (十) 什么叫函数?
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vagrant 添加本地 box 安装 laravel homestead
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给新手的新浪微博 SDK 集成教程【一】
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 深入浅出Node.js
  • 试着探索高并发下的系统架构面貌
  • 小李飞刀:SQL题目刷起来!
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 阿里云服务器如何修改远程端口?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #laravel 通过手动安装依赖PHPExcel#
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (02)Hive SQL编译成MapReduce任务的过程
  • (2020)Java后端开发----(面试题和笔试题)
  • (C语言)fread与fwrite详解
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (poj1.2.1)1970(筛选法模拟)
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (强烈推荐)移动端音视频从零到上手(下)
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .dwp和.webpart的区别
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器