[16]从零开始的JAVAEE-网络层

目录

一、IP协议

地址管理

IP协议的报文格式

IP地址

NAT机制

内外网设备间的通信

IPv6

IP地址的组成

特殊IP地址

二、路由选择


一、IP协议

地址管理

每个处在网络上的设备,都需要有一个地址,这个地址是唯一的


IP协议的报文格式


IP地址

本质上是一个32位的整数,通常会将这个32位整数转换为点分十进制的表示方式

即:三个点,把这个整数分为四个部分,每个部分的取值为0-255,形如:xxxx.xxxx.xxxx

32位的整数最多可以表示42亿9千万个不同的地址,而全世界存在很多电脑,路由器,服务器,手机等等设备,它们都处于互联网上,很显然这是不够用的。

如何解决IP地址不够用呢

1.动态分配IP地址:设备上网才分配地址,不上网就不分配(只能缓解,不能彻底解决问题)

2.NAT机制


NAT机制

将IP分为内网IP和外网IP两个大类

内网IP:        

10.* 

172.16.* - 172.31.*

192.168.*

这些格式的IP都是内网IP

内网IP是可以重复出现的(在不同的局域网中)

外网IP:

除了内网IP以外的全部IP

外网IP必须是唯一的

如果内网设备要访问外网,就会给他分配一个外网IP,但是在一个局域网中的所有内网设备,都共用一个外网IP,所以这个外网IP并非一个设备独占,而是内网中的所有设备共用一个外网IP,即一个外网IP代表一系列设备

例如,你是北京大学的一名学生,你网购时填写的地址就是:北京市海淀区北京大学

而北京大学中有很多学生,这些学生就可以视为一系列内网设备,而北京大学就可以视为一个外网IP,北京大学的学生们一律使用北京大学这个地址进行购物


内外网设备间的通信
  • 1.A是外网设备,B是内网设备,则A和B不需要任何NAT,之间可以进行通信
  • 2.A是内网设备,B是其他内网的设备,则A和B不允许进行通信!!
  • 3.A是外网设备,B是内网设备,那么A不允许对B通信!!(外网设备无法之间访问内网设备)
  • 4.A是内网设备,B是外网设备,A对B通信时,触发NAT机制,将A的源IP替换为路由器自己的IP,此时A和B可以进行通信

IPv6
  • IPv4是传统的IP协议,使用4个字节,32位来表示IP地址
  • 而IPv6是最新的IP协议,使用16个字节,128位来表示IP地址

传统的IP协议,是不足以满足给地球上的所有设备都分配一个IP地址的,所以才需要引入NAT+动态分配来解决这个问题

而IPv6作为最新的IP协议,足以给地球上的每一粒沙子都分配一个IP地址!

IPv4和IPv6的最大区别就在于IP地址上,性能上并无区别,但是支持IPv4的设备,并不一定能支持IPv6协议,这是一件费力不讨好的事,所以相对于全球而言,IPv6普及率并不高

而在中国,IPv6的普及率是很高的,大概有70%左右,但大部分没有开启,仍在使用IPv4


IP地址的组成

一个IP地址由这两部组成

  • 网络号:标识一个局域网,同一个局域网内,所有设备的网络号都一样
  • 主机号:标识一个局域网内的主机,同一个局域网内,所有设备的主机号都不同

例如:

在这张图中,有两个局域网

  • 一个是网络号为192.168.0的局域网1
  • 一个是网络号为192.168.1的局域网2

 而路由器将两个局域网连接起来了,此时这两个局域网就称为“相邻的局域网”。

那么在一个IP地址中,一定是前三个字节是网络号,最后一个字节是设备号吗?

并不一定!!

对于网络号和主机号的划分,主要分为两类

  • IP地址分类(ABCDE)
  • 子网掩码

从二进制的角度看,子网掩码是一个32位的地址,255就是0xff就是1111 1111,而在子网掩码中,左侧都是1,右侧都是0。不会存在101010这种混合的情况。

左侧有几个1,表示哪些字段就是网络号,相对的,0就是设备号。

在一般的家庭网络中,前24位表示网络号,后8为表示主机号,这并不绝对,其他的网络情况可能不一样。

特殊IP地址

  • 192.168.0.0:网络号,原则上网络环境中不允许使用这个IP地址,因为不存在主机号为0的设备。
  • 192.168.0.255:广播地址,往这个地址上发送udp数据报,此时这个数据报就会被转发给整个局域网中的所有主句
  • 127.*:环回IP,表示自己这台主机
  • 192.168.0.1:一般表示“网关”。只是习惯用法并不绝对

二、路由选择

两个外网服务器A和B,从A到B如何走?

在现实的网络环境中,是非常复杂,存在非常多的冗余的,这就导致了A和B之间的路径有很多种

某个路由器,是无法把整个网络环境都记录下来的,在路由器中,存在“路由表”这样一种数据结构记录周围情况,即记录“邻居”的信息

实际的转发过程,是渐进式的,类似于“投石问路”,一点点的逐渐摸清目标

例如你在北京站,此时要去你的大学北京大学,但是你不知道怎么走,又没有导航,只能向路人求助

你问路人A北京大学怎么走

A说:我也不知道怎么走,不过你可以去附近的公交站看看路线

到了公交站牌,你遇到了路人B,你向B问路北京大学怎么走

B说:我也不知道,但是我知道大概方向在北边,你坐公交朝北走吧

就这样一次次的问路,你最终接近了目的地,路由转发也是这种方式

每个路由器只能记录周围的情况,很可能问的目标,并不知道,此时路由器会指出一条默认的路径(路由表中的下一跳表项),把数据报指向更上一级的路由器,而越上级的路由器,就越见多识广,问到路的概率,也就越大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不卷啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值