JAVA EE_网络原理_网络层

晨雾散尽,花影清晰。

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ----------陳長生.


❀主页: 陳長生.-CSDN博客

📕上一篇: 数据库Mysql_联合查询-CSDN博客


1.IP协议

1.1.基本概念

IP协议是网络层的核心协议,负责将数据从一端传送到另一端

主机:有IP标识,但没有路由选择

路由:既有IP标识也有路由选择

节点:图中的任意一个图形都为节点(即任意主机和路由器)

1.2.协议头格式

4位版本:指IP协议版本,标识IPv4,目前常用的有IPv4和IPv6。

4位首部长:以4字节为单位表示IP头部长度。

8位服务位:实际上只有4位服务位,分别是最大吞吐量(传输速率),最小延迟(发送和接受数据的时间),最高可靠性(减少丢包率),最小成本(对应时间内消耗最少),4个服务位具有唯一性,也就是同一时间只有有一个服务位进行。

16位总长度:长度为64kb的长度,当超过64kb就会进行数据分组。

16标识:会为分组后的数据包提供IP报头,便于后续重组数据。

13位片偏移:为传输的数据保证顺序性。

3位标志位:有一位不使用,有一位禁止分片,有一位作为数据传输的结束标志。

8位生存时间:数据在传输时,会经历多个路由点,我们将数据传送到下一个路由器位"下一条",那么8位生存时间一般表示为32/64/128跳,如果超出了,那么就丢弃该数据包。

8为协议:描述当前的数据包应该使用哪种协议。

16位首部校验和 :用于校验数据包是否正确,如JAVA EE_网络原理_UDP与TCP-CSDN博客中讲解的校验和相同。

2.地址管理

2.1.网络划分

可将网段划分为网络号和主机号

网络号:相同局域网中的网络号必须相同,不同局域网中的网络号必须不同。

主机号:相同局域网中的主机号必须不同(若相同会产生两个一样IP地址的主机,那么这两台主机就会竞争一个IP地址而导致上不了网),不用局域网中的主机号可以相同。

我们有可以将网络划分为3类

A类:8位网络号,24位主机号(大范围)

B类:16位网络号,16位主机号(中范围)

C类:24位网络号,8位主机号(小范围)

2.2.特殊的IP地址

网络号:主机位全为0,代表该段的整段子网

广播地址:主机位全位1,代表该段子网的广播IP,往这个IP上发送数据,该段子网的其他IP也能接收0到

环回地址:IP为127.0.0.1,可以自己发送数据自己接收,一般用于测试,例如:本地服务测试,网络协议验证,开发调试,安全隔离

2.3.私有IP地址和公网IP地址

2.3.1.私有IP地址

即局域网中使用的IP地址

地址范围可分为:

  • 10.*
  • 127.16.*~127.32.*
  • 192.168.*

2.3.2.公网IP地址

除了私网中的范围其余都是公网IP地址

2.4.IP地址的数量和限制

目前最常用的为IPv4,它的数量为2^32 大约45亿左右,这个数量在早期的网络环境中是完全够用的,但随着网络越来越发达,IP地址愈发紧张,那么总有办法来缓解IP紧张的问题。

2.4.1.动态分配IP地址

因为地球不同的地方有时间差,就举例中国和美国,昼夜颠倒,当中国人晚上休息的时候,他们手机上的IP地址是空闲的,但因为时间差,美国这时候就就为白天,使用手机和电脑的人就多了,那么就可以将中国地区的IP地址暂时给美国地区的人使用,这便是动态分配IP。

这个办法在早期是有用的,但是人口越来越多,这种办法也没法有效缓解IP紧张的情况。

2.4.2.NAT机制(网络地址映射)

假设有A和B两个设备

  1. 在相同局域网中,A和B设备可以直接通信。
  2. 在不同局域网中,A和B不能直接通信。
  3. 若A为内网的IP,B为外网的IP,A可以访问B,B不能访问A(应为外网B是唯一的,但内外A不是唯一的,所以B不知道要访问哪个A),但是B可以通过A的访问路径来找到A

2.4.3.路由选择

路由选择是一种探索式,启发式的发送数据的方式,一个路由器不知道数据目的地的时候,会向相邻路由器发送数据,此时相邻的路由器也不知道数据目的地,于是又向相邻路由器发送数据,当发送次数超出最大限制时,就会停止发送,丢弃该数据。

以下面为例: 长生与小美是异地恋,都处于不同的位置,那么他们在网络上聊天的时候,数据就会从长生位置的路由器开始找对方位置,如果找不到,那么就会往更大的范围的路由器去找,依次到Y1省时,它知道小美在X1省,那么就会向X1省发送数据,此时依次向下路由器寻找,直到找到小美所在的区域。

相关推荐
Lilith的AI学习日记3 分钟前
n8n 中文系列教程_25.在n8n中调用外部Python库
开发语言·人工智能·python·机器学习·chatgpt·ai编程·n8n
zybsjn4 分钟前
后端项目中静态文案国际化语言包构建选型
java·后端·c#
vvilkim8 分钟前
深入理解C#异步编程:原理、实践与最佳方案
服务器·开发语言·c#
L2ncE13 分钟前
ES101系列07 | 分布式系统和分页
java·后端·elasticsearch
源力祁老师13 分钟前
高温炉制造企业Odoo ERP实施规划与深度分析报告
开发语言·学习方法
末日汐29 分钟前
STL-list
开发语言·c++
枣伊吕波30 分钟前
第十二节:第三部分:集合框架:List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
java·jvm·list
qq_4335545430 分钟前
C++ list数据删除、list数据访问、list反转链表、list数据排序
开发语言·c++·list
贺函不是涵34 分钟前
【沉浸式求职学习day51】【发送邮件】【javaweb结尾】
java·学习
uyeonashi35 分钟前
【从零开始学习QT】快捷键、帮助文档、Qt窗口坐标体系
开发语言·c++·qt·学习