首页 > 编程语言 >Java学习 - 网络IP协议簇 讲解

Java学习 - 网络IP协议簇 讲解

时间:2024-06-23 10:30:50浏览次数:22  
标签:ARP 协议 Java IP 报文 分片 讲解 ICMP

IP协议

IP协议全称

  • Internet Protocol
  • 互联网互连协议

IP协议作用

  • 实现数据在网络节点上互相传输

IP协议特点

  • 不面向连接
  • 不保证可靠

IP协议数据报结构

在这里插入图片描述

组成说明
版本目前有IPv4和IPv6两种版本
首部长度单位4字节,所以首部长度最大为 15 * 4 = 60字节
区分服务不同服务的优先级不同,从而保证服务质量保证(QoS)
总长度IP首部与数据部分字节之和,最大为 2^16-1个字节
片偏移占13位,本分片再原始数据报文中相对首位的偏移位
生存时间TTL,指数据包跳转次数剩余,最多255跳
协议指明上层使用的协议,从而确定要给哪个进程
标识IP协议软件中的一个数,用于唯一标识主机发送的数据报
在发出IP报文时,每个分片会被分配一个数
每分配一个报文,这个数加1,溢出则从0开始算
标识用于分片达到目的主机后进行重组
标志最低位(MF):MF=1表示后面还有分片,MF=0表示已经是最后一个分片
中间位(DF):DF=1表示不允许分片,DF=0表示允许分片
  • 片偏移计算

    在这里插入图片描述

  • 片偏移示例

    在这里插入图片描述

ICMP协议

ICMP协议全称

  • Internet Control Message Protocol - 互联网控制报文协议

ICMP协议作用

  • 用于主机、路由器之间传递控制信息
  • 控制信息指:网络是否流畅,路由器是否可用,主机是否可达

ICMP协议使用

  • ICMP数据报一般被TCP/UDP协议使用,也可以被用户进程使用
  • 命令行使用:trace IP地址,即可看到IP数据包沿途所经过的路由器的信息

ICMP协议数据报传输

  • ICMP报文被封装再IP数据报内,随IP数据报进行传输

在这里插入图片描述

ICMP报文类型和代码

在这里插入图片描述

ARP协议

ARP协议全称

  • Address Resolution Protocol
  • 地址解析协议

ARP协议作用

  • 用于将以太网(局域网)中的IP地址解析为MAC地址
  • 因为当一个IP数据报来到一个局域网时,它不知道应该去哪个计算机,于是使用ARP协议发出一个广播,内容是你们谁的IP地址是xxx.xxx.xxx.xxx的,告诉我你的MAC地址,我发数据给你,目标计算机收到广播后,用ARP协议广播我是啊,我的MAC地址是yyyy
  • 点到点链路使用PPP协议,不需要ARP协议

ARP协议使用

  • 命令行使用:arp -a,看到本机存储的IP地址 <--> MAC地址的映射表

IGMP协议

IGMP协议全称

  • Internet Group Manage Protocol
  • 互联网组管理协议

IGMP协议作用

  • 用于组播功能的实现
  • 主机通过IGMP协议通知路由器希望接收或离开某个特定的组播组
  • 路由器通过IGMP协议周期性查询组播组中成员状态,维护组播组中成员的关系

组播是什么

  • 在发送者与每一个接收之间实现一对多的网络连接
  • 如果发送者需要给多个接收者发送相同的数据,只需要发送一份数据就行
  • 不用针对每个接收方都发送一份,提高了通信效率,减少资源使用

标签:ARP,协议,Java,IP,报文,分片,讲解,ICMP
From: https://blog.csdn.net/paofuluolijiang/article/details/139773849

相关文章

  • Java学习 - 网络静态路由与动态路由 讲解
    网络畅通的条件数据报包有去有回网络中的路由器必须知道且只需要知道下一跳的地址【路由器只要知道下一跳地址就行,不必知道如何到达任意的路由器,因为如果要实现,路由表将非常非常巨大,这是不可能的】静态路由静态路由是指网络管理员手动构建路由器的路由表,告诉路由器下一跳......
  • Java学习 - 网络IP地址与子网划分 讲解
    IP地址作用用于决定数据包最终到达哪个计算机组成由32位比特组成,即4个字节这32位可以分为两个部分,称为网络号和主机号同一网段的计算机网络号相同,路由器负责连接不同的网段,而交换机负责连接同一网段中不同的计算机同一网段的计算机主机号不同计算机在和其他计算机进行通......
  • Java学习 - MySQL存储过程、函数和触发器练习实例
    存储过程存储过程是什么存储过程是一组已经编译好的SQL语句存储过程优点有什么安全性能高提高代码复用性创建存储过程的语法DELIMITER$#不能加分号CREATEPROCEDURE存储过程名(IN|OUT|INOUT参数名参数类型)BEGIN存储过程语句块END;$DELIMIT......
  • 纯CSS制作3D动态相册【流星雨3D旋转相册】HTML+CSS+JavaScriptHTML5七夕情人节表白网
    这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看。此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,生性腼腆的人即使那个TA站在眼前都不敢向前表白。说不出口的话就用短视频告诉TA吧~制作一个表......
  • 第一百二十节 Java面向对象设计 - Java接口方法
    Java面向对象设计-Java接口方法方法声明您可以在接口中声明三种类型的方法:抽象方法静态方法默认方法在Java8之前,您只能在接口中声明抽象方法。修饰符static和default用于分别声明静态和默认方法。缺少静态和默认修饰符使得方法抽象。以下是具有所有三种类型方法的接口......
  • Java正则表达式
    Java正则表达式1.正则表达式是什么?正则表达式是用于匹配和操作文本模式的工具。它由字符和特殊元字符组成,能够实现强大的文本搜索、验证、替换等功能。2.正则表达式基本语法(1)匹配普通字符匹配数字[0123456789]简写为[0-9]匹配小写字母[a-z]匹配大写字母[A-Z]匹配大小......
  • 9.2JavaEE——JDBCTemplate的常用方法(一)excute()方法
    execute()方法用于执行SQL语句,其语法格式如下:jdTemplate.execute("SQL语句");下面以创建数据表的SQL语句为例,来演示excute()方法的使用,具体步骤如下。1、创建数据库        在MySQL中,创建一个名为spring的数据库。 mysql>createdatabasespring;QueryOK,1......
  • 手把手教你java CPU飙升300%如何优化
    背景今天有个项目运行一段时间后,cpu老是不堪负载。排查top命令TOP命令topt按cpu排序topm按内存使用率排序从上面看很快看出是pid4338这个进程资源消耗很高。top-Hppidtop-Hp4338找到对应线程消耗的资源shft+pcpu占用进行排序,shift+m按照内存排......
  • Java 超详细实现导入导出 (包含时间转换问题和样式)
    序言工作中遇到了导入导出问题,并且出现了导入或导出Excel时间格式变为数字的问题。通过学习解决实现了这些功能,记录总结分享给大家。本文将详细介绍如何使用Java编程语言和ApachePOI库来实现这些功能。我们将通过一个示例项目演示如何从数据库中读取数据并将其导出为Ex......
  • 开发iphone上的app需要什么条件
    开发iPhone上的应用需要满足以下条件:1.硬件和操作系统Mac计算机:需要一台运行macOS的计算机。iPhone设备(可选):虽然可以使用模拟器进行测试,但在实际设备上测试可以确保应用在真实环境中的表现。2.开发工具Xcode:这是苹果提供的集成开发环境(IDE),用于开发iOS应用。可以在Mac......