【JavaEE初阶】网络层-IP协议

目录

IP协议

IP协议的报文结构

IP协议/网络层做的工作是什么

IP协议的各部分的含义和作用

4位版本

4位首部长度

8位服务类型(TOS)

16位总长度(字节数)

拆包组包功能是如何实现的

8位生存时间(TTL)

TTL是64bit够用吗?

什么是"六度空间"?

8位协议

16位首部检验和

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

那IP地址不够用了咋办?


IP协议

IP协议的复杂程度和TCP差不多

日常开发的时候,最多是用到传输层就够了,关于网络层,除非你是专门开发路由器的工程师,否则一般不会涉及

IP协议的报文结构

IP协议/网络层做的工作是什么

  • 地址管理:使用IP地址来标识网络上的某个设备的位置
  • 路由选择,在两个通信节点之间,规划出一个合理的路径

IP协议的各部分的含义和作用

4位版本

  • 标识了IP协议的版本号,开发阶段主要使用IPv4
  • IPv6是最近几年才多起来的
  • IPv6是大规模商用的版本

4位首部长度

  • IP协议的报头长度(也有"选项"以供扩充长度)
  • 以4字节为基本单位
  • 四位 最多可以表示 1111 -> 换算成十进制->15,说明4位首部长度最多可表示 15*4=60 字节的长度

8位服务类型(TOS)

  • 决定了IP协议的工作方式
  • 8位服务类型:3位优先字段(已弃用),4位TOS字段,和1位保留字段(必须置为0),4位TOS分别为
  • 最小延时(A->B花时尽可能短)
  • 最小成本(系统开销低)
  • 最大吞吐量(单位时间传输最多)
  • 最高可靠性(可靠性传输优先)
  • 这四者相互冲突,**只能选择一个,**当前的系统要最优先保证哪个性能
  • IP协议可以切换工作状态↑

16位总长度(字节数)

  • 一个IP报头+载荷的长度->一个IP数据包的长度
  • 最大长度为64KB
  • IP协议内置了拆包组包功能
  • 比如,IP要携带一个比较大的TCP数据报,IP协议就会自动拆成多个,通过多个IP数据报共同传输一个TCP数据报
拆包组包功能是如何实现的
  • 16位标识的作用:拆包:把拆出来的多个包,设为相同的标识、组包:把标识相同的数据包组合到一起
  • 3位标志:其中一个标志位,表示是否触发了拆包操作,还有一个表示当前包是否是最后一个
  • 13位片偏移:表述了数据报的先后顺序,偏移量小的放前面,偏移量大的放后面

【面试题】如果基于UDP实现传输超过64KB的数据,要怎么设计?

  • 可以参考IP协议
  • 在应用层协议中,程序员自己手动写代码来实现 "标识符"、"标志位"、"片偏移"

8位生存时间(TTL)

  • 一个IP数据报在网络上传输的最大"次数"
  • IP数据报每经历一次路由器的转发,TTL值就-1,TTL减到0,就说明包到不了,这个包就会被丢掉
  • 比如发了一个错误的数据包(目的IP写错了),是注定不可能达到的,这个包也不能无限传输啊,不仅占宽带还没有用~
  • 通过cmd指令查看TTL的情况:ping+想要访问的域名
TTL是64bit够用吗?
  • 当64步还不能到达目的ip时,TTL还可以自动设置为更大的值->128
  • 其实网络中还有一个"六度空间"理论->两个设备之间,不需要经历这么多次转发
什么是"六度空间"?
  • 每个路由器虽然只认识与它相邻 的设备,但是路由器可以发动朋友(相邻的路由器)/朋友的朋友去找目的设备
  • 每层朋友都会竭尽全力地去找
  • 一般来说,最多经过六层"朋友",就能找到目的设备

8位协议

  • 标识了传输层使用了哪种协议
  • 数据链路层到网络层=>也有一个类似的协议编号
  • 网络层到传输层=>8位协议
  • 传输层到应用层=>端口号

16位首部检验和

  • 只检验首部
  • 而载荷部分是由TCP、UDP进行校验

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

  • 是IP协议最关键的部分
  • IP地址本质上是通过32位的整数来表示的
  • 由于32位整数不方便阅读,于是通常会通过点分十进制的方式来表示IP地址
  • 用三个点,分出四部分
  • 每个部分的取值范围是 0-255
  • 32位IP地址,只能表示42亿9千万个不同的IP
  • 随着移动互联网时代开启。物联网时代开启(冰箱空调等)
  • 现在看来,IP地址的分配已经捉襟见肘了

那IP地址不够用了咋办?

方案一:动态分配IP

  • 上网的分配,不上网的不分配

方案二:NAT机制 网络地址转换【当前世界的最主要方式】

  • 把所有的IP分为两类:公网IP和外网IP

关于NAT机制,下节会进行详细解说~

太棒了!你居然耐心地看完了这些知识!

有这个毅力你做什么都能成功的!(๑•̀ㅂ•́)و✧

下节再见✿✿ヽ(°▽°)ノ✿~

相关推荐
andxe3 分钟前
算力网络融合下的 5G 承载升级:高速光模块,构筑稳定光承载底座
网络·5g·光模块·光通信
红红谈说9 分钟前
定时发布关机就停,本地定时任务的补跑策略怎么设计?
运维·服务器·定时任务·本地调度·补跑策略·幂等互斥·执行记录
甜到心里的蛋糕15 分钟前
抖音评论自动回复机器人部署实践:无头 Chrome + DeepSeek + NapCat(2C2G 云主机)
java·jvm·chrome·python·抖音·deepseek
Java爱好狂.20 分钟前
阿里1658页Java面试题总结(含答案)
java·后端·高并发·架构师·java面试·java面试题·java八股文
lazy H25 分钟前
【计算机网络】第 12 篇:IPv6 详解——地址格式、地址类型与双栈网络
网络·经验分享·后端·学习·计算机网络·408
Thanks_ks27 分钟前
从 0.1+0.2 不等于 0.3 说起:聊聊浮点数精度问题
java·python·数值计算·精度丢失·bigdecimal·浮点数·ieee754
2401_8685347829 分钟前
论纯IPv6(IPv6-Only)演进与地址规划设计与实施
服务器·网络
海鸥-w35 分钟前
区域名称同步存储实现笔记
java·笔记
爱和冰阔落37 分钟前
【Linux网络】UDP 服务器怎么写?从 socket、bind 到 recvfrom/sendto,手写完整回显服务器
linux·运维·服务器·网络
Rain的Java大神之路42 分钟前
LeetCode 21 合并两个有序链表:一道 Easy 题,凭什么刷掉一半候选人?
java·后端·算法