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省发送数据,此时依次向下路由器寻找,直到找到小美所在的区域。

相关推荐
MSTcheng.4 分钟前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
晓13137 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世7 分钟前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
一 乐7 分钟前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
KIKIiiiiiiii8 分钟前
微信个人号API二次开发中的解决经验
java·人工智能·python·微信
梵刹古音9 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
80530单词突击赢9 分钟前
SpringBoot整合SpringMVC全解析
java·spring boot·后端
Ekehlaft12 分钟前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
莽撞的大地瓜14 分钟前
洞察,始于一目了然——让舆情数据自己“说话”
大数据·网络·数据分析
rit843249915 分钟前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab