JAVAEE初阶相关内容第十八弹--网络原理之TCP_IP【续集】
写在前
上一篇博客的重点内容主要讲了关于传输层的TCP协议、UDP协议。
点击跳转上一篇博客
重点介绍了协议的特点、协议端格式、需要重点理解并掌握TCP的工作机制(十条)。
TCP与UDP对比?
TCP用于可靠传输的情况,应用于文件传输,重要状态更新等场景。
UDP用于对高速传输和实时性要求较高的通信领域,例如,早期的QQ,视频传输等,另外,UDP还可以用于广播【同一机房内部,天然支持广播-- IP地址中有一种特殊的地址”广播IP“通过UDP往广播上发送数据报,此时该局域网内所有的设备都能收到数据。】
传输层的协议并非只有这两个,例如有的是专门为了游戏打造的,典型协议:KCP。
本篇博客将重点介绍网络层协议-IP
目录
网络层协议代表-IP协议
1. 协议头格式
2. 点分十进制
3. 关于IP地址不够用问题的解决办法
(1)动态分配IP
(2)NAT网络地址转换
(3)IPV6
4. IP协议-地址管理
4.1 网络号
4.2 主机号
4.3 子网掩码
5. IP协议-路由选择
网络层协议代表-IP协议
在复杂的网络环境中确定一个合适的路径。
1. 协议头格式
地址管理、路由选择。
对“16位总长度”的理解
16位总长度是不是意味着一个IP数据报,最大只能支持64KB?
确实是有这个限制的,相当于一个快递公司一次最大只能给运输64kg的快递,但是,IP自身就支持对包的拆分和组装。一个IP数据报携带的数据载荷太大了,超过了64KB,就会在网络层针对数据进行拆分,把一个数据拆分成多个IP数据报,再分别发送,接收方再重新拼装。
IP协议中最重要的部分:32位源IP,32位目的IP
2. 点分十进制
此处看到的IP地址是32位整数,但是日常见到的IP则是一串数字,使用三个点把32位4个字节的数字分隔开,每个部分分别使用0-255的十进制数字进行表示。
3. 关于IP地址不够用问题的解决办法
32位数字,只能表示42亿9千万个数字,我们期望使用这个表示全世界所有的上网设备。为了解决IP地址不够用的问题,想了很多办法。
(1)动态分配IP
提高利用率,指标不治本
(2)NAT网络地址转换
使用1个IP地址代表一批网络设备【端口号区分】
关于内网和外网:
NAT背景下把IP地址分成了两大类:内网IP和外网IP
内网IP【私有IP】:10.开头的、172.16.*-172.31.*、192.168.*
外网IP【公网IP】: 除了内网IP外的都是外网IP。
NAT要求:公网IP必须是唯一的,内网IP可以在不同的局域网中重复出现。如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备【路由器】,把IP地址进行映射,从而完成网络访问。反之,公网的设备,无法直接访问私网的设备,不同局域网的私网设备没法直接进行相互访问。
NAT机制能够有效的解决IP不够用的问题,但是带来的副作用就是网络的环境更加复杂了。
(3)IPV6
根本上解决了IP不够用的问题,使用16位字节表示IP地址。
虽然IPV6看起来是美好的,但是当前世界上仍然是以NAT+IPV4+动态分配来进行网络组建的。真正使用IPV6的地方非常少。
主要原因是IPV6贵,IPV6与IPV4还不兼容。
4. IP协议-地址管理
把一个IP地址分成了两部分,一个叫网络号,一个叫主机号。
4.1 网络号
表示网段,保证相互连接的两个网段具有不同的标识。
4.2 主机号
标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。
193.168.0.10 -- 网络号:192.168.0 主机号:10
划分网络号和主机号就是为了组网。
4.3 子网掩码
子网掩码格式和IP地址格式一样,也是32位的二进制数,其中左边是网络位,用二进制”1“表示,1的数目等于网络位长度。右边是主机位,用二进制”0“表示,0的数目等于主机位长度。对于家用设备来说,子网掩码最常见的就是255.255.255.0。
作用:划分A、B、C三类IP地址子网;网络通信时,子网掩码会结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。
5. IP协议-路由选择
路径规划
核心思路--问路。每个路由器都会保存一定的周围设备的信息(路由表)。每次有一个IP数据报经过路由器。就需要匹配路由表,看看接下来咋走。如果路由表上有匹配的选项【该路由器认识路】,直接按照要求走就可以。如果没有匹配的选项【不认识路】,会提供一个默认路径,大体方向是不会错的。每次经过一个路由器问一次,TTL-1。如果减到0还没到,就说明永远都到不了,这个地址没人知道,就被丢弃了。