【网络】IP协议详解

前言

IP协议是网络层协议,应用层希望让数据可靠的从A主机到B主机,就设计出了传输层策略TCP协议。而实际上,网络从A网络到B网络不仅依赖于传输层可靠的策略,还依赖于跨网络传输数据的能力。这个跨网络的能力就IP协议。

数据从A主机要到达B主机,大概率会先经过路由器F、路由器C等等的转发。为什么不能直接到达B主机呢?本文将会介绍。

本文重点

本文详细介绍IP层协议的报头,网段划分,IP分片与合并,以及运营商在网络中扮演中还要的角色。

前提知识:

  • IP地址是被分成:网络号+主机号。
  • 运营商:在网络中起到重要作用:如建设基站、划分网段、连接网络等。
  • 一个路由器下连接的设备都是在同一个子网中。

IP协议结构

见一见IP报头的字段

对于一个协议,最先应该关心俩个问题

有效载荷和报头如何分离?
先读取前20字节,获取4位首部长度和16位总长度。4位首部长度的范围是【0,15】*4=【0,60】。获取到首部长度后,总长度减去掉首部长度就是有效载荷。

如何向上交付?
根据8位协议类型,选择上层交给什么协议

介绍报文字段

  • 4位版本:目前主要是IPv4和IPv6。IPv6是128位表示IP地址。
  • 4位首部长度:范围是【0,15】*4,因为首部最少是20字节,故首部长度的范围是【20,60】。
  • 8位服务类型:类似TCP的6位标志位。决定了IP报文转发时候的策略。常见的:最小延迟、最大吞吐、最高可靠、最小成本。比如说最小延迟,那在转发的时候,优先转发,不排队。
  • 16位总字节长度:总大是64KB。标志着IP协议报文的总大小,所以不会产生粘包问题。但是由于下一层协议归定报文的最大长度,所以一般而言IP报文最大长度是1500。
  • 8位生存时间:涉及到网络的拓扑结构。如果在网络中路由器A发到B,B发到C,最后再转到A,那么报文就会在路由器中一直存在,浪费资源。所以设置TTL:报文最大生存跳数,经过指定跳数后就会自动丢弃。
  • 8位协议:在IP协议上层,可能是TCP协议,UDP协议,甚至直接交给应用层。所以双方的上层协议要对等,在将数据交到给IP层时候,就应该填充协议类型。
  • 16位首部校验和:使用CRC进行校验, 来鉴别头部是否损坏。。

目前先对IP协议字段有个大体的认识,在第二行中剩余的三个字段还没有讲述。在后文中将会详细介绍。

下面来介绍了一下网段划分。

网段划分

围绕三个话题:网段划分是什么?为什么?怎么划分?
共识:
IP地址标记唯一的主机,IP地址可以划分:

网络号+主机号。


引入路由器

路由器的功能是负责组建子网,并负责报文转发。

例如在一个家庭内,家庭成员的设备都可以接入路由器中,路由器会为每个设备都配一个该局域网内独一无二的IP地址。

同时子网内设备的请求会通过路由器转发到运营商中。

 但是IP地址只有32位,最多就42亿,人们就将IP地址按照网络号+主机号划分成五类地址。

分为A\B\C\D\E五类网络。A类网络中可以用的主机数最多,E类可用主机数最少。

  • A类 0.0.0.0到127.255.255.255
  • B类 128.0.0.0到191.255.255.255
  • C类 192.0.0.0到223.255.255.255
  • D类 224.0.0.0到239.255.255.255
  • E类 240.0.0.0到247.255.255.255

但是很快的,这样的划分并不能解决需求,人们普遍申请A类网络,A类网络已经申请得差不多了。同时这个划分也有缺点,就是如果当前局域网中不需要那么多的主机数,多出来的主机数就被浪费掉了。

所以子网掩码被人们使用

子网掩码

  • 子网掩码是一串32位以0结尾的序列
  • IP地址与子网掩码进行按位与之后得到的就是子网掩码

子网掩码的例子

特殊的IP地址

0.0.0.0 :代表这个局域网

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

F.F.F.F:设为全 1 表示这个广播。给局域网内所有连接的主机发。


私有IP地址和公网IP地址

地址又分为公网和私网

公网和私网是不重叠的,公网是大部分的,标志唯一的主机。

而私网会在不同的局域网中发生重叠。

私网的范围

  • 192.168.*
  • 172.16   ---172.31.*
  • 10.*

包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)
 路由器既要组建内网同时也要将报文转发到公网上,所有路由器存在俩个地址,一个对内,一个对外。对内的子网LANIP,对外的叫WAN口IP。

处于俩个局域网中的主机是无法直接通信的,因为无法知道对方的地址。

如果局域网中的主机想访问外网。由于外网是存在固定的IP。所以是可以访问的。

具体的访问过程:依次将源IP替换为WAN口IP,达到广域网,广域网将IP报文交出去。这种技术叫做NAT技术

子网内的IP地址是不可冲突的,不同子网内的主机地址可能会相同。

真实的网络:公网+私网

子网是可以连接公网的,一定程度上,缓解了IP地址的数量问题。


模拟网段划分

报文想要发到公网上,就必须先知道公网上的IP地址,然后将IP报头中的源IP不断替换为WAN口地址,直到连接到公网上。同时NAT会为每一次替换保存,如果报文需要园路返回也是能做到。


 路由

路由就是将IP报文转发。

会先查看主机的路由表,并且将IP地址&这一跳的子网掩码

如果相同就转发出去,不同继续匹配下一个路由器,最后转发到默认路由器中。

通过route命令查看路由表

另外:路由器之间会交换路由表,互相知道、互相学习。


最后剩一个话题:报头的第二行关于分片的问题。

分片与组装

为什么要分片?
因为数据链路层规定IP报文最长为1500字节。MTU:最大传输单位

分片的影响

但是分片是不好的,因为分片将丢包的概率提升了。

所以希望传输层一次性不要发太多的报文。这就是TCP层分段发数据的原因 MSS:最大段尺寸

如果实在超过了1500字节,那么就要考虑分片与组装

16位标识:属于同一个分片的报文,分片标识是一样的

3位标志:只关心最后一个 ,如果被分片了且不是最后一个分片 ,最后一位就是 1

13位片偏移:相对于原始报文的位置 *8

一个共识
所有的分片报文都会被填充IP报头 

模拟分片

这份报文长度为3000?要分为几片?
三片 。因为要对每一份分片都填充报头数据。

怎么知道分片了?

分片标志中的更多分片是1  为0就查看片偏移。

如何组合?

a.开头的分片:更多分片是1,偏移量是0。

b.结尾的分片:更多分片是0,片偏移最大。

c.中间的分片:同一个标识,按照片偏移排序。


IP协议基本的知识就是这些。IP协议提高一种跨网络将数据包转发的能力,同时介绍了网段划分。现在的网络是私网+公网组合而成的,对于NAT技术,知识还不完善,下文继续讲解。

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深度搜索

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

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

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

打赏作者

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

抵扣说明:

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

余额充值