网络基础网络层--IP协议


一、IP协议解析

IP协议格式

(一)4位版本

用于标识版本协议 4-ipv4。

(二)4位报头长度

以4字节为单位,ip报头最小20最大60字节。

(三)8位服务类型

3位优先权弃用,4位类型,1位保留。

(四)16位数据报长度

限制一个IP报文必须小于64k。

  • 一个tcp报文数据最大长度必须小于64k-40;
  • 一个ucp报文数据最大长度必须小于64k-28。

(五)16位分片标识

用于分片重组时,识别当前分片属于哪个原始报文,相同的原始报文的分片具有相同的分片标识。

链路层MTU:最大传输单元,限制了一个数据帧在网络中的最大传输大小。

如果一个报文长度处于网络层允许,但是MTU不允许,MTU<IP报文大小<64k;
则这个包在网络层就会被分片,就指的是,将一个大的报文分割成多个小的报文–分片,
每个分片封装一个IP报头进行传输,
这些分片在对端主机上会进行分片重组,重组为原始的报文向上层交付。

既然要在对端进行分片重组,那么哪个分片属于哪个原始报文呢?又在原始报文什么位置呢?
(答:分片标识的作用)

(六)3位分片标志

1位保留,1位禁止分片标志,1位分片结尾标志。

(七)13位分片偏移

标识了当前分片在原始报文中的位置,是以8字节为单位的。如果数据是1,则偏移量实际上是第8字节处。

为什么要以8字节为单位?
13个比特位表示最大大小为8192,而一个原始报文最大大小为64k,以8字节为单位才能完整表示
( 2^10=1024, 2^3 = 8192 * 8 = 64k )*
因此实际上每个分片(除了最后一个)他的分片大小肯定都是8的整数倍。

(八)8位TTL

报文在网络上的生命周期,最大数字是255,表示所能经过的路由器跳数。(每经过一个路由器就会-1)

(九)8位传输层协议

数据到达对端会进行数据分用,也就是选择一个传输层协议进行数据解析,封装时的上层协议类型。

(十)16位校验和

校验数据一致性。

(十一)32位源端-对端IP地址

用于描述通信的两端主机。

(十二) 0-40字节选项数据

比如路由跟踪时候记录的路由信息…

二、地址管理与路由选择

(一)IP地址

用于在网络中唯一标识一台主机。

ipv4:uint32_t类型,IP地址大致有42亿9千多万,IP地址实际上不够用,

DHCP动态地址分配-谁上网给谁分配地址

问题:如何分配地址才能保证网络上IP地址不重复呢?

答:
分网络进行地址管理,一个网络中的主机能够被分配到的IP地址都会具有这个网络的标识—网络号
这时候只要每个网络的网络号不同,则可以将网络地址管理简单化了。

(二)IP地址组成

网络号+主机号

  • 网络号:是一个网络的标识,一个网络分配的IP地址都具有相同的网络号。
  • 主机号:是一台主机在当前网络中的标识。

(三)网络号—俗称“网段”的管理

早期的网络划分方式:将所有的IP地址分为了五大类:

1.A类网络

高1位固定是0;7位网络号;24位主机号;
用于组建超大型网络–一个网络中具有1600w+主机号。

A类网络网络号范围:0~127,
其中IP地址范围:0.0.0.0~127.255.255.255,总共有128个A类网络。
其中每个网络中具有255×255×255个主机号;例如0号网络的IP地址:0.0.0.0~0.255.255.255。

2.B类网络

高2位固定10;14位网络号;16位主机号;
用于组建中型网络–一个网络中具有64k个主机号。

B类网络网络号范围:128.0~191.255,
其中IP地址范围:128.0.0.0~191.255.255.255,共有1w+B类网络。
其中每个网络中具有255×255个主机号,例如128.0网络的IP地址:128.0.0.0~128.0.255.255。

3.C类网络

高3位固定110;21位网络号;8位主机号;
用于组建小型网络-一个网络中具有256个主机号。

C类网络网络号范围:192.0.0~223.255.255;
其中IP地址范围:192.0.0.0~223.255.255.255。
其中每个网络中具有256个主机号,例如192.0.0网络IP地址范围:192.0.0.0~192.0.0.255。

以下地址哪个是C类地址:
(1)23.244.23.24 (2)156.23.23.23 (3)193.23.23.23 (4)191.24.24.24

4.D/E类网络:特殊网络

(四)子网掩码

这种早期网络划分方式,比较粗糙,A类地址浪费较多。
而当前使用的划分方式,是在早期基础上,
引入了一个新的字段-【子网掩码】进行网络划分—CIDR方案

子网掩码: uint32_t类型的数据,不过其中的数据由连续二进制1组成

1.子网掩码明确限制了一个网络中的主机号个数

子网掩码取反得到的数据就是一个子网中最大的主机号max,那么子网的主机号范围就是0~max。

2.子网掩码与IP地址相与,可以得到当前IP地址所属的网络号

例如:
子网掩码与IP地址相与

3.子网掩码可以用于辨别一个ip地址是否属于某个网络

例如:一个公司申请了一个C类网络192.168.2.0/24,公司有4个部门,这时候要将网络平均划分4个子网,请问,每个子网的主机号范围,以及网络号,以及子网掩码是多少?

子网掩码辨别IP地址

(五)特殊IP地址

一个子网中有两个地址是不能分配给主机的:
(1)主机号全为0的地址:

实际上就是网络号,是网络的标识

(2)主机号全为1的地址:

局域网的广播地址,UDP相较于TCP多一个功能-局域网广播,将数据发送给局域网广播地址,
表示将数据发送给了局域网中的所有主机

(1)0.0.0.0

用于识别本机上的所有IP地址,或者说任意IP地址,通常用于服务器的绑定监听地址。

(2)255.255.255.255

全网广播地址,用于dhcp请求的时候目标主机地址。

一个主机连接到一个网路,向路由器发送dhcp请求,要求路由器给自己分配地址,网络通信,
必须知道目标端IP地址,而这个新连接主机要如何知道路由器的地址呢?
设为全网广播地址!!!

(3)127.0.0.1

其实127网段都是用于本地回环,其中127.0.0.1是最为典型的虚拟回环网卡地址。

用于实现本地网络回环测试。

(六)NAT/NAPT—网络地址转换技术

在地址管理中,光dhcp动态分配是不够的,IP地址还是不够分,因此还有一个非常重要的管理方式:

NAT/NAPT:网络地址转换技术

用于组建私网,对于私网中向外通信的数据,将其源端私网IP地址进行地址替换,替换为对外的公网IP地址。

网络地址转换技术

使用NAT/NAPT方式组建私网,对流经网关的数据进行源端地址替换,替换为对外地址,
这样的话私网中的很多主机实际上就只用了一个对外的IP地址在上网。

私网主机的请求数据,出去的时候都被转换为对外地址了,
这种情况**,不同的私网内的主机IP地址是可以重复的,**
因为数据出去时被转换的地址和端口是不会重复的。

这样也会造成一个问题:私网间的主机是无法直接通信的。

私网内的主机实际上对外是不可见的(因为外部看到的是转换后对外的地址),
但是这样从侧面加强了私网的网络保护。

要求:私网IP地址虽然不同私网可以重复使用,但是不能与公网IP地址冲突。

RFC1918文档规定:用于组建私网,只能用以下IP地址:

  1. 10...* :1个大型私网网段
  2. 172.16..~172.31.. :16个中型私网网段
  3. 192.168.. :256个小型私网网段,用于组建私网

私网:我们自己所搭建的一个内部的私有网络。

公网:也叫外网,就是我们通常所说的上网的互联网。

(七)路由选择

一条数据,要到达对端主机需要经过很多路由器的转发,但是网络是一个非常复杂的星型结构,
因此一条数据如何转发能够最快到达对端。

在每一台节点设备上都有一样东西—路由表
路由表

一个路由器拿到一个数据后,会取出目标IP地址,然后在自己所有的路由表中进行查看,
逐个与每个路由表中的网络信息进行比对:

  1. 与对应网络子网掩码相与;
  2. 拿相与结果与对应网络的网络号相比;
    (1)一样则数据目标主机属于此网络;
    (2)不一样则对比下一个路由选项;
  3. 若所有路由表项都没有;
  4. 则将数据转发给自己的网关设备。

互联网上的路由器,通常不仅仅包含有自己相连的网络的路由信息,
实际上有很多层网络的路由表信息, 因为网络上路由器会多层广播自己的路由表。

不同的私网地址和网络号可以重复使用,但是相邻的私网之间,不能具有相同的网络号。
比如路由器组建的私网,与自己所在的私网网络号相同,会造成路由器的路由表中信息冲突。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值