JavaEE 初阶第二十五期:IP协议,网络世界的 “身份通行证”(一)

专栏:JavaEE初阶起飞计划

个人主页:手握风云

目录

一、网络层

[1.1. IP协议基础概念](#1.1. IP协议基础概念)

[1.2. IP协议头格式](#1.2. IP协议头格式)


一、网络层

1.1. IP协议基础概念

  • 主机:配有IP地址,但是不进行路由控制的设备;
  • 路由器:即配有IP地址,又能进行路由控制;
  • 节点:主机和路由器的统称

1.2. IP协议头格式

  • 4位版本号:指定IP协议的版本,对于IPv4来说,就是4。
  • 4位首部长度:IP协议中,报头也是变长的。0---15单位是4字节,IP报头最大长度为60字节。
  • 8位服务类型:3位优先权字段(已经弃用),4位TOS字段和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,这四者之间可以转换状态,相互冲突,只能选择一个。
  • 16位总长度:IP数据包,报头和载荷的总长度。如果需要在 IP 数据报中携带超过64KB的载荷数据的时候,IP协议也是能够做到的。IP协议自身支持拆包和组包。如果传输层数据包太长了,IP自动拆成多个,每个IP 数据报,负责携带一部分传输层数据包。
  • 8位生存时间(TTL):当前的IP数据报能够在网络上存活多久,单位不是时间,而是次数。初始情况下生存时间是一个整数,数据报每次经过路由器转发一次,TTL-1。如果为0,还没有到达对方,就可以丢弃。
  • 8位协议:描述的是当前的IP 数据报载荷部分,是使用哪个协议(传输层协议)。接收和分用的时候,就需要知道当前数据包载荷部分是使用哪种协议。传输层的协议中,"目的端口"就解决解决了传输层的数据包载荷,需要交给应用层的哪个协议(应用程序) 来处理。网络层的协议中,"8位协议"区分裁荷交给传输层的哪个协议来处理。
  • 16位首部校验和:使⽤CRC进行校验,来鉴别头部是否损坏。因为计算校验和,本身是需要有开销的,所以IP 协议只关心IP报头自身是否出现传输错误。
  • 32位源地址和32位目标地址:IP地址标识了网络上某个设备所处的位置。我们可以通过cmd终端命令ipconfig查看自己设备的IP地址。理论上需要给不同的设备分配不同的IP,如果IP地址不够用,可以使用动态分配内存地址,也就是上网的人分配,不上网的人不分配。但是现在几乎人人都有智能手机,还是会导致IP地址资源紧张,所以现在使用NAT机制(网络地址映射)。所有的IP可以分为两大类:外网IP和内网IP、公网IP和私网IP。同一局域网中,不同设备的内网 IP 不能重复(否则会冲突,无法联网)。外网不可见,互联网上的设备无法直接识别或访问内网 IP。在NAT机制下,假设有两个设备A和B。如果A和B都在同一个局域网中,直接按照 IP 地址转发即可;如果A和B是在两个不同的局域网中,禁止直接进行传输;如果A是内网IP的设备,B是外网IP的设备,A能主动访问B,B不能主动访问A;如果A是外网IP,B 也是外网IP也不涉及NAT直接转发即可。关于内网 IP 如何通过外网 IP 访问互联网,NAT 相当于路由器扮演 "中介",用自己的外网 IP 替局域网内所有设备与互联网沟通,再把结果分发给对应设备。NAT本质上是让一个局域网内部的所有设备,共用同一个外网IP。本来是一个外网 IP 代表一个设备,现在是一个外网IP代表数以千计个设备了,就如同同一个里面的学生填快递邮寄地址,都会用同一个位置。

如果同一局域网下,两个不同的设备访问同一应用程序,运营商路由器应该怎么区分,把正确的数据包分给对应的设备。这里就是引入了端口号进行区分。

当设备A向应用程序发送请求,构造一个数据包,发给运营商路由器的时候,会把A的源IP替换成运营商路由器的IP地址。然后运营商路由器在替换的时候会记录一个映射关系,再发送给应用程序B。而B在收到请求后,根据它自己的业务代码逻辑计算响应,并构造一个响应数据包发给运营商路由器,NAT数据会根据记录的表格对上述内容进行还原。

如果说两个设备端口号一样,那么运营商路由器在映射的时候就会把相同的端口映射成不同的端口。

NAT还有一个"副作用":加强普通用户的网络安全性。被保护在局域网下的设备,只有主动访问别的服务器,才能给响应。不主动,就不会被别的服务器访问。如果一个设备有外网IP,相当于家的大门开在马路上,有了NAT机制,相当于给大门加了门禁。

NAT机制不是从根本上把IP地址变多了,而是提高了IP 地址的利用率。除了上述方案,IPV6就可以提高IP地址的数量,因为IPV6使用16个字节表示IP地址。但是现在互联网的现状还是以NAT为主,IPV6在世界范围内的普及率非常低。

相关推荐
REDcker38 分钟前
TCP/IP 协议栈详解:协议栈是什么意思?为什么叫“协议栈”?
网络·网络协议·tcp/ip
凯子坚持 c1 小时前
Docker网络架构深度解析:从原理到实战
网络·docker·架构
cdprinter1 小时前
信刻光盘数据自动回读系统,多重保障数据安全及调阅便捷性!
网络·安全·自动化
发光小北2 小时前
SG-CAN (FD) NET-210(双通道 CAN (FD) 转以太网网关)特点与功能介绍
开发语言·网络·php
larance2 小时前
kylinv10 设置网卡自启动和固定ip
网络·网络协议
湫一刀3 小时前
WireShark下载说明
网络·测试工具·wireshark
Ha_To3 小时前
2025.12.18 NAT地址转换、PAT
linux·服务器·网络
火山引擎开发者社区3 小时前
火山引擎 Force 大会发布 veRoCE 传输协议!
网络·火山引擎
ShenZhenDingYue4 小时前
吊车近电报警器的配置标准与事故预防策略
网络
爱尔兰极光4 小时前
计算机网络 --物理层
网络·计算机网络