计算机网络——IP地址相关知识和原理

摘要

IP协议提供的一种统一的地址格式。它为互联网上的每一个网络和主机分配一个逻辑地址所以IP地址也叫逻辑地址,用来屏蔽物理地址的差异,MAC地址每一个机器都有一个编码。IP地址是32位二进制数据分为4段每一段8位0~255来表示。通常是10进制的方式表示。凡是基于TCP/IP协议的智能设备都可以被分配IP地址。在同一个局域网中/本地局域网IP地址是唯一的。IP协议只是是网络之间的互联的协议。互联网/物联网的所有计算机网络实现相互通信的一套规则。规定了计算机在网络中进行通信时应当遵守的规则。所有设备只要是遵守IP协议就可以在网络中互联互通。

网关(路由)

Windows下默认就叫网关/网关就是路由/路由就是网关。默认的地址是192.168.25.1或者是192.168.25.254

IP地址

逻辑地址,标识网路中的主机,原则上一个网络中主机的IP地址是唯一的。逻辑地址是可变的。目的防止IP冲突。TCP 模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块将数据封装成网络包发送给通信对象。

在 IP 协议里面需要有源地址 IP 和 目标地址 IP:

  • 源地址IP,即是客户端输出的 IP 地址;
  • 目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP。

因为 HTTP 是经过 TCP 传输的,所以在 IP 包头的协议号,要填写为 06 (十六进制),表示协议为TCP。

假设客户端有多个网卡,就会有多个 IP 地址,那 IP 头部的源地址应该选择哪个 IP 呢?

当存在多个网卡时,在填写源地址 IP 时,就需要判断到底应该填写哪个地址。这个判断相当于在多块网卡中判断应该使用哪个一块网卡来发送包。这个时候就需要根据路由表规则,来判断哪一个网卡作为源地址 IP。在 Linux 操作系统,我们可以使用 route -n 命令查看当前系统的路由表。

 举个例子,根据上面的路由表,我们假设 Web 服务器的目标地址是 192.168.10.200 。

扫描二维码关注公众号,回复: 13284559 查看本文章

1. 首先先和第一条目的子网掩码( Genmask )进行 与运算,得到结果为 192.168.10.0 ,但是第一个条目的 Destination 是 192.168.3.0 ,两者不一致所以匹配失败。

2. 再与第二条目的子网掩码进行 与运算,得到的结果为 192.168.10.0 ,与第二条目的 Destination
192.168.10.0 匹配成功,所以将使用 eth1 网卡的 IP 地址作为 IP 包头的源地址。

那么假设 Web 服务器的目标地址是 10.100.20.100 ,那么依然依照上面的路由表规则判断,判断后的结果是和第三条目匹配。

第三条目比较特殊,它目标地址和子网掩码都是 0.0.0.0 ,这表示默认网关,如果其他所有条目都无法匹配,就会自动匹配这一行。并且后续就把包发给路由器, Gateway 即是路由器的 IP 地址。

IP 报文生成

IPV4

IPv4地址的长度为32b(bit),分为4段,每段8位,用十进制数表示,每段数字范围为0~255,段与段之间用应为句点“.”隔开。例如某计算机IP地址为111.222.333.2。

分析IP地址的组成特点:250-255、200-249、0-199

IPv4正则表达式

/(?:(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:1[0-9][0-9]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:2[0-4][0-9])|(?:25[0-5])|(?:1[0-9][0-9])|(?:[1-9][0-9])|(?:[0-9]))/

IPV6:

IPv6的地址长度为128(bit),是IPv4地址长度的4倍。采用十六进制表示。IPv6有3种表示方法:

表示方法 格式 示例
冒分十六进制表示法 格式为X:X:X:X:X;X:X:X,其中每个X表示地址中的16b,以十六进制表示

ABCD:FDEC:2425:AAAA:CBDA:34CC:CCCB:1234

这种表示方法中每个X的前导0都是可以省略的,例如ABCD:0000:2425:AAAA:0BDA:34CC:B000:1234->

ABCD:0:2425:AAAA:BDA:34CC:B000:1234

0位压缩表示法 在某些情况下,一段IPv6地址中可能包含很长一段0,可以把连续的一段0压缩为“::”。但是,为了保证地址解析的唯一性,地址中“::”只能出现一次 EEE1:0:0:0:0:0:1001 ->EEE1::1001 0:0:0:0:0:0:E ->0:E 0:0:0:0:0:0:0: -> ::
内嵌IPv4表示法 为了实现IPv4->IPv6的互通,IPv4地址会嵌入到IPv6地址中。此时,地址表示为X:X:X:X:X;X:d.d.d.d,前96b采用冒分16进制表示,后32b地址则使用IPv4地址中的点分法 ::192.168.0.1与::ee:192.168.0.1 注压缩0法,在前96b中依然适用

IPv6地址特点

IPV6表示方式
表示方法 格式 正则
十六进制表示法(包括前导0省略) 纯数字格式-2000:0003:5522:8999:2333:0000:1232:0001 ([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}:)
纯字母格式--AAAA:BBBB:CCCC:DDDD;EEEE:FFFFF:AAAA
数字字母组合格式--AAAA:67BB:22C:1111;2:1311:22AA
格式中前面带0--AAAA:07BB:0000:0111;2:1011:220A
格式中每一位前面每一位带0--0AAA:07BB:0000:0111;02:0011:020A
全为0--0000:0000:0000:0000:0000:0000:0000:0000
格式中前面带0--AAAA:07BB:0000:0111;2:1011:220A
多位0在中间--0AAA:0:0:0:0:0:020A
多位0在前面--0:0:0:0:f0f:e1:f001:7009
多位0在后面--f0f:e1:f001:7009:0:0:0:0
全为0--0:0:0:0:0:0:0:0
全为0--000:0:0:0:0:0:0:0
全为0--00:0:0:0:0:0:0:0
全为0--0000:0:0:0:0:0:0:0
前导0省略位置便利
一个位置前导0省略--
ABCD:EEEE:DDDD:FFFF:11111:2222:3333:1
ABCD:EEEE:DDDD:FFFF:11111:2222:2:4444
ABCD:EEEE:DDDD:FFFF:11111:3:3333:4444
ABCD:EEEE:DDDD:FFFF:4:2222:3333:4444
ABCD:EEEE:DDDD:5:11111:2222:3333:4444
ABCD:EEEE:6:FFFF:11111:2222:3333:4444
ABCD:7:DDDD:FFFF:11111:2222:3333:4444
8:EEEE:DDDD:FFFF:11111:2222:3333:4444
其他位置前导0省略--
AB:EEE:0:FF:1:800:3333:444
AB:EEE:0:FF:1:800:3330:444
AB:EEE:0:FF:1:800:3300:444
AB:EEE:0:FF:4:800:3000:444
1111:EEE:0:FF:4:800:3000:444b
0位压缩表示法(左起有6个位置用标准16进制表示) ABCD:EFFF:2ccc:6789:ABCD:EF01:8.6.18.19 (([0-9A-Fa-f]{1,4}:){6}(((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:[0-9A-Fa-f]{1,4}|:))
ABCD:EFFF:2ccc:6789:ABCD:EF01::ABCD
ABCD:EFFF:2ccc:6789:ABCD:EF01::
0位压缩表示法(左起有5个位置用标准16进制表示) ABCD:EFFF:2ccc:6789:ABCD::8.6.18.19 (([0-9A-Fa-f]{1,4}:){5}(:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|((:[0-9A-Fa-f]{1,4}){1,2})|:))
ABCD:EFFF:2ccc:6789:ABCD::ABCD
ABCD:EFFF:2ccc:6789:ABCD::
ABCD:EFFF:2ccc:6789:EF01::ABCD:EF01
0位压缩表示法(左起有4个位置用标准16进制表示) ABCD:EFFF:2ccc:6789::ABCD:8.6.18.19 (([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|((:[0-9A-Fa-f]{1,4}){1,3})|:))
ABCD:EFFF:2ccc:6789::8.6.18.19
ABCD:EFFF:2ccc:6789::ABCD
ABCD:EFFF:2ccc:6789::ABCD:EF01
ABCD:EFFF:2ccc:6789::ABCD:EF01:EF01
ABCD:EFFF:2ccc:6789::
0位压缩表示法(左起有3个位置用标准16进制表示) ABCD:EFFF:2ccc::8.6.18.19 (([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|((:[0-9A-Fa-f]{1,4}){1,4})|:))
ABCD:EFFF:2ccc::6789:8.6.18.19
ABCD:EFFF:2ccc::6789:ABCD
ABCD:EFFF:2ccc:6789::ABCD:EF01:8.6.18.19
ABCD:EFFF:2ccc::ABCD
ABCD:EFFF:2ccc::ABCD:EF01
ABCD:EFFF:2ccc::ABCD:EF01:EF01
ABCD:EFFF:2ccc::ABCD:EF01:EF01:EF01
ABCD:EFFF:2ccc::
0位压缩表示法(左起有2个位置用标准16进制表示) ABCD:EFFF::8.6.18.19 (([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|((:[0-9A-Fa-f]{1,4}){1,5})|:))
 
ABCD:EFFF::6789:8.6.18.19
ABCD:EFFF::2ccc:6789:8.6.18.19
ABCD:EFFF::2ccc:2ccc:6789:8.6.18.19
ABCD:EFFF::ABCD
ABCD:EFFF::ABCD:EF01
ABCD:EFFF:2ccc::2ccc:2ccc:ABCD
ABCD:EFFF:2ccc::ABCD:EF01:EF01:EF01
ABCD:EFFF:2ccc::ABCD:EF01:EF01:EF01:EF01
ABCD:EFFF::
0位压缩表示法(左起有1个位置用标准16进制表示) ABCD::8.6.18.19 (([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|((:[0-9A-Fa-f]{1,4}){1,6})|:))
ABCD::6789:8.6.18.19
ABCD::2ccc:6789:8.6.18.19
ABCD::2ccc:2ccc:6789:8.6.18.19
ABCD::EFFF:2ccc:2ccc:6789:8.6.18.19
ABCD::ABCD
ABCD::ABCD:EF01
ABCD::2ccc:2ccc:ABCD
ABCD::ABCD:EF01:EF01:EF01
ABCD::ABCD:EF01:EF01:EF01:EF01
ABCD::ABCD:EF01:EF01:EF01:EF01:EFF1
ABCD::
0位压缩表示法(左起开始压缩) ::8.6.18.19 (:(((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|((:[0-9A-Fa-f]{1,4}){1,7})|:))
::6789:8.6.18.19
::2ccc:6789:8.6.18.19
::2ccc:2ccc:6789:8.6.18.19
::EFFF:2ccc:2ccc:6789:8.6.18.19
::EFFF:2ccc:2ccc:6789:6789:8.6.18.19
::ABCD
::ABCD:EF01
::2ccc:2ccc:ABCD
::ABCD:EF01:EF01:EF01
::ABCD:EF01:EF01:EF01:EF01
::ABCD:EF01:EF01:EF01:EF01:EFF1
::ABCD:EF01:EF01:EF01:EF01:EFF1:EFF1

IPv6正则表达式

((([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:))|
(([0-9a-fA-F]{1,4}:){6}(((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d))){3})|:[0-9a-fA-F]{1,4}|:))|
(([0-9a-fA-F]{1,4}:){5}(:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|((:[0-9a-fA-F]{1,4}){1,3})|:))|(([0-9a-fA-F]{1,4}:){4}(((:[0-9a-fA-F]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d))){3}))|((:[0-9a-fA-F]{1,4}){1,3})|:))|
(([0-9a-fA-F]{1,4}:){3}(((:[0-9a-fA-F]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d))){3}))|((:[0-9a-fA-F]{1,4}){1,4})|:))|
(([0-9a-fA-F]{1,4}:){2}(((:[0-9a-fA-F]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d))){3}))|((:[0-9a-fA-F]{1,4}){1,5})|:))|  
(([0-9a-fA-F]{1,4}:){1}(((:[0-9a-fA-F]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d))){3}))|((:[0-9a-fA-F]{1,4}){1,6})|:))|  
(:(((:[0-9a-fA-F]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d))){3}))|((:[0-9a-fA-F]{1,4}){1,7})|:))|

特殊的IP地址

地址类型 IP地址号码 说明
网关地址 192.168.0.1/192.168.0.254 网关地址
广播地址 192.168.1.255
子网掩码 255.255.0.0
子网掩码 255.255.0.0
子网掩码 255.255.255.0
限制广播地址 255.255.255.255
回环地址 127.0.0.1
全部网段 0.0.0.0 表示任意一个地址
DNS地址 114.114.114.114
DNS地址 233.5.5.5
DNS地址 233.6.6.6
DNS地址 1.2.4.8
DNS地址 8.8.8.8
DNS地址 202.106.0.20
DHCP分配的地址 169.254.0.0 路由器假死(重启)
组播地址 224.0.0.1

子网掩码

子网掩码是指一个32位字段的一个数值,利用这个字段来屏蔽原来网络地址的划分情况,从而能够获得一个范围较小的,可以实际使用的网络。

子网掩码好处

  • 节约IP地址资源
  • 减少广播域
  • 减少寻址空间
  • 利用子网掩码确定网段
  • 利用子网掩码计算计算机主机

子网掩码分类

  • A类:255.0.0.0:1111 1111.0000 0000.0000 0000.0000 0000
  • B类:255.255.0.0
  • C类:255.255.255.0

常见应用端口

通过端口,操作系统来区分不同应用。

端口号 应用 说明
21 FTP服务
22 SSH服务
23 Telent服务
25 SMTP服务 邮件协议
53 DNS服务
109 POP2服务
110 POP3服务
143 IMAP服务
465 SMTPS服务 SSL协议
995 POP3S服务 SSL协议
993 IMAPS服务 SSL协议
80 HTTP服务
443 HTTPS服务
3306 MYSQL服务
3389 远程桌面
8080 代理服务(tomcat)
6379 Redis服务端口

forward 和 redirect 的区别?

Forward 和 Redirect 代表了两种请求转发方式:直接转发和间接转发。

直接转发方式(Forward):客户端和浏览器只发出一次请求,Servlet、HTML、JSP 或其它信息资源,由第二个信息资源响应该请求,在请求对象 request 中,保存的对象对于每个信息资源是共享的。

间接转发方式(Redirect):实际是两次 HTTP 请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个 URL 发出请求,从而达到转发的目的。

  • 举个通俗的例子: 

直接转发就相当于:“A 找 B 借钱,B 说没有,B 去找 C 借,借到借不到都会把消息传递给 A”;

间接转发就相当于:”A 找 B 借钱,B 说没有,让 A 去找 C 借”。

博文参考

猜你喜欢

转载自blog.csdn.net/weixin_41605937/article/details/121316756