IP协议的相关特性

文章目录

    • 一.IP协议
    • 二. IP地址不够用了?
      • 1. 动态分配IP(DHCP)
      • 2. NAT机制(网络地址转换)(理解网络结构的关键要点)
      • 3. IPv6
      • 4. 为什么IPv6不如NAT受用?
    • 二. IP组成
    • 三. 路由转发(了解)

一.IP协议

概念

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。

作用

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

格式

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:

01100100.00000100.00000101.00000110。

通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:

100.4.5.6。

IP协议有两个版本,IPv4和IPv6。我们整个的课程,凡是提到IP协议,没有特殊说明的,默认都是指IPv4。

IPv4数量=2^32,大约43亿左右,而TCP/IP协议规定,每个主机都需要有一个IP地址。对于全世界计算机来说,这个数量是不够的,所以后来推出了IPv6(长度128位,是IPv4的4倍)。但因为目前IPv4还广泛的使用,且可以使用其他技术来解决IP地址不足的问题,所以IPv6也就没有普及。

报文结构

IP协议的相关特性_第1张图片

  • 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
  • 4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
  • 16位总长度(total length):IP数据报整体占多少个字节。
  • 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
  • 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。
  • 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
  • 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
  • 8位协议:表示上层协议的类型。

二. IP地址不够用了?

1. 动态分配IP(DHCP)

只在需要上网的时候分配IP, 不需要就不分配.

此方法只能缓解, 不能根治.

2. NAT机制(网络地址转换)(理解网络结构的关键要点)

IP地址分为了两大类:

  • 内网IP: 不同的局域网内的设备, 内网IP可以重复; 同一个局域网内的设备, 内网IP不能重复.
    • 10.* / 172.16.* ~ 172.31.* / 192.168.*
  • 外网IP: 外网IP不能重复.

(1) 如果局域网内部的设备之间进行通信, 是可以的

(2) A局域网中的设备与B局域网中的设备通信, 需要有一个带有外网IP的设备进行中转.

(3) 局域网内部的设备访问带有外网IP的设备, 涉及NAT工作过程.

例如:

IP协议的相关特性_第2张图片

我的电脑 => 腾讯路由器发送请求

源IP: 192.168.1.1

目的IP: 1.2.3.4

这个数据报经过移动路由器的时候, 就会触发NAT机制, 移动路由器会使用自己的外网IP替换当前的源IP.

源IP: 10.20.30.40

目的IP: 1.2.3.4

NAT机制下, 一个外网的IP就就可以代表许多其他设备.

腾讯服务器返回响应(IP数据报)

源IP: 1.2.3.4 源端口: 80

目的IP: 10.20.30.40 目的端口: 1234

这个响应怎么传到PC端?

数据报先到达移动路由器, 对于NAT设备(路由器), 在触发NAT的时候, 会维护一个映射表, 映射表形如:

替换前 替换后
IP地址 192.168.1.1 10.20.30.40
端口号 1234 1234

NAT设备要通过查表, 基于可以把目的IP替换回来

源IP: 1.2.3.4 源端口: 80

目的IP: 192.168.1.1 目的端口: 1234

数据每一次经过路由器转发, 都可能会触发NAT机制(要看路由器是如何配置的, 有的模式下会, 有的不会).

NAT的缺点:

  • 效率不高
  • 繁琐
  • 不方便直接访问局域网内的设备

NAT提高了IP地址库的"利用率", 并没有从跟本上解决IP不够用的问题.

但是他有一个很大的优点: 是纯软件实现的方案.

3. IPv6

从根本上解决了IP地址不够用的问题.

IPv4, 4个字节, 32位; IPv6, 16个字节, 128位.

4. 为什么IPv6不如NAT受用?

IPv6和NAT的诞生时间差不多, 但是NAT应用最广泛.

是因为IPv6和IPv4不兼容!

要想升级IPv6, 就需要更换路由器设备, 这样就会造成巨大成本. 而且更换IPv6并不会提高网速, 也不会提高流畅度, 所以一般人不会选择使用IPv6.

相比之下, NAT方案只需要路由器开发商开发出新版本的软件(路由器固件), 升级软件, 即可支持, 成本很低.

二. IP组成

IP地址分为两个部分,网络号和主机号

网络号标识网段,保证相互连接的两个网段具有不同的标识;

主机号标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

  1. 同一个局域网中, 设备的网络号必须相同, 主机号必须不同
  2. 两个相邻的局域网, 网络号必须不同.

IP地址, 可以是自动分配(一般用于家中的设备, 网络环境简单), 也可以是手动分配的(企业的设备, 网络环境复杂, 需要网管来配置).

一个IP地址, 哪个部分是网络号, 哪个部分是主机号, 是通过 子网掩码 来识别的.

在这里插入图片描述

子网掩码和IP地址一样, 也是4字节, 32位的整数.

左侧必须是连续的1, 右侧必须是连续的0, 0和1不能穿插

255.255.0.0展开就是

1111 1111 1111 1111 0000 0000 0000 0000

1的范围就描述了ip地址对应的哪些位是网络号, 前16个bit就是网络号, 后16个bit就是主机号.

特殊的IP地址

  • 将IP地址中的主机号全部设为0, 就成为了网络号.代表这个局域网
  • 将IP地址中的主机号全部设为1, 就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;
    • 例如 IP 192.168.0.255 子网掩码: 255.255.255.0
    • 192.168.0.是网络号, 255是主机号.主机号全为1, 这就是广播地址
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
    • 本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

三. 路由转发(了解)

每个路由器内部, 有一个数据结构"路由表", 当数据报到达路由器的时候, 就需要查询路由表看看下一步抵达哪.如果查到了, 就直接按照那个方向继续转发, 数据就能到达, 如果没有查到, 路由器会给一个默认的方向(下一跳地址), 沿着默认的方向走(往往是走到了上级路由器)

你可能感兴趣的:(Javaee,tcp/ip,网络)