【Linux】Ⅺ基础网络:网络层之IP协议

IP协议首部字段

其他字段说明

  1. 8位服务类型(Type Of Service):包括3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0);4位TOS分别表示:最小延时,最大吞吐吐量,最高可靠性,最小成本,这四者相互冲突,也就是说这四个中只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
  2. 16位标识:同一个数据包当中的不同分片具有同样的标识,本质上就是为了在接收方接受到数据的时候,可以成功找到属于同一个数据包的不同分片。
  3. 3位标志:
  • 第一个比特位为保留位
  • 第二个比特位标识是否分片(置为1则表示禁止分片)
  • 第三个比特位:

置为1代表后面还有分片

置为0则表示当前分片是最后一个分片

    4. 13位片偏移:标识当前分片在数据包当中的相对位置,也是为了给接收方组合分片使用的3片偏移计算出来的是一个数值,这个数值乘以8,就计算出来当前分片在整个数据包当中的相对位置,以字节为单位。

    5. 8位生存时间TTL:IP数据包最大能够经历的路由器个数。因为IP数据包每经历一个路由器,TTL就会进行减1操作。若TTL没有变成0的时候,已经到达了对端主机,这就是正常发送成功了;若TTL变成0的时候,还没有到达对端主机,就会被在网络当中丢弃掉。

    6. 8位协议:使用IP协议的上层协议(也就是该数据包在传输层所使用的协议名称)。接收方在接收到这个IP数据的时候,可以通过该字段知道将IP数据包提交给哪一个传输层的协议。

关于分片

每种数据链路的最大传输单元MTU都是不相同的,如FDDI数据链路的MTU为4352、以太网的MTU是1500字节等。其中,我们最常见数据链路是以太网,它的MTU是1500字节。

那么当IP数据包大小大于MTU时,IP数据包就会被分片。经过分片之后的IP数据报在被重组的时候,只能由目标主机进行,路由器是不会进行重组的。

1. 每一个分片在传输的时候,是独立的

2. 万一在传输过程当中丢失了一个分片,就会将其他分片页丢掉,造成整个IP数据报作废,所以说IP协议也是不可靠的

3. tcp协议在传输的数据的时候,将数据递交给网络层,不需要进行分片传输,因为TCP已经严格按照MSS进行传输数据

4. udp协议在传输的数据的时候,将数据递交给网络层,有可能需要进行分片传输

由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包.

1. 将较大的IP包分成多个小包, 并给每个小包打上标签;

2. 每个小包IP协议头的 16位标识(id) 都是相同的;

3. 每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为0, 否则置为1);

4. 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;

5. 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;

IP的地址分类与管理

IP地址的分类

起初,IP地址被分成了5种类型,分别是A类、B类、C类、D类、E类。

  • 对于A类地址的组成来说是——‘0’+7位网络号+24位主机号

所以网络号的范围是0 000 0000 ~ 0 111 1111 也就是 [0,127]

主机号的范围是

0000 0000 0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111

也就是 0.0.0~255.255.255

所以A类IP地址的范围[min网络号+min主机号,max网络号+max主机号]:

0.0.0.0 ~ 127.255.255.255

  • 对于B类地址的组成来说是——’10‘+14位网络号+16位主机号

所以网络号的范围是10 00 0000 0000 0000 ~ 10 11 1111 1111 1111

也就是 128.0 ~ 191.255

主机号的范围是

0000 0000 0000 0000 ~ 1111 1111 1111 1111

也就是 0.0 ~ 255.255

所以B类地址的范围是 128.0.0.0 ~ 191.255.255.255

  • 对于C类地址的组成来说是——‘110’+21位网络号+8位主机号

那么网络号的范围是

110 0 0000 0000 0000 0000 0000 ~ 110 1 1111 1111 1111 1111 1111

也就是 192.0.0. ~ 223.255.255

主机号的范围是

0000 0000 ~ 1111 1111 也就是 0 ~ 255

所以C类地址的范围是 192.0.0.0 ~ 223.255.255.255

特殊的主机号

◆ 主机号全为0表示当前网络段。不可分配为特定主机;eg:1.0.0.0

◆ 主机号为全1表示广播地址,向当前网络段所有主机发消息;eg:1.255.255.255

特殊的网络号

◆ A类地址网络段全0(00000000)表示特殊网络

◆ A类地址网络段后7位全1(01111111:127)表示回环地址

◆ B类地址网络段(10000000.00000000:128.0)是不可使用的

◆ C类地址网络段(192.0.0)是不可使用的

因此,除去这些特殊的主机号和网络号,对IP地址的分类主要如下:

根据IP地址如何判断是哪类地址呢?

无分类地址CIRD

因为IP分类存在许多缺点,所以后面提出了无分类地址编制——即CIDR。

这种方式不再有分类地址的概念,32个比特位的IP地址被划分为两部分,前面是网络号,后面是主机号。

1. 表示形式为:a.b.c.d/x,其中/x表示前x位属于网络号,x的范围是0~32,这就使得IP地址更加具有灵活。

关于子网掩码

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。

子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。

子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式(从高位开始连续全1)。

通过子网掩码,就可以判断两个IP在不在一个局域网内部。

子网掩码可以看出有多少位是网络号,有多少位是主机号

2. 还有另一种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。

计算方法:

  1. 当前网络的网络号 = IP地址 & 子网掩码

eg:172.17.0.3 & 255.255.240.0 = 172.17.0.0(网络号)

    2. 当前网络的最大主机数量为 ~(子网掩码)(子网掩码按位取反)

eg:~255.255.240.0 = 4095 ,也就是说当前网络的最大主机数量有4095个

公网IP和私网IP

 

子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包中的IP地址成为一个公网IP,这种技术称为NAT。(Network Address Translation,网络地址转换)

路由选择

网络数据在转发的时候,需要经历很多个转发设备(路由器,交换机),进行转发。

WAN:连接网络入户线使用,从运营商拉回来的网线插入到wan口

LAN:从路由器拉出来一根网线连接pC设备(LAN口IP就是子网IP)

每一个家用路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会有很多级,最外层的运营商路由器的WAN口IP就是一个公网IP了。

某主机上的网络接口配置和路由表如下:

1. 在转发数据的时候,先获取数据的目的ip地址,通过目的ip地址和路由表当中的子网掩码进行 '&'操作——会得出一个网络号

2. 如果获取到的结果和当前路由项当中的一个Destination相符合,说明这条数据是转发给当前子网当中的机器

3. 如果获取到的结果和当前路由项当中的Destination不符合,则继续匹配下一个路由项,直到所有子网的路由项都匹配一边之后,还没有找到相应的数据转发的路由项,则会和网关路由项的子网掩码进行按位与操作,将数据通过网关(WAN)转发给上级路由器

4. 上级路由器在获取了这条数据之后,也是需要重复上述匹配路由项的操作,直到将数据转发给响应子网网络当中的机器,或者转发给上级路由器

5. 在每一次路由器进行转发的时候,都会对ip数据报当中的ip协议的TTL字段进行减1操作。如果TTL==0时,还没有到达目标机器,则路由器丢弃该数据报;如果TTL>0,就到达目标机器,则为正常转发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值