TCP_IP 网络层

文章目录

  • 网络层
    • IP协议
    • 地址管理
      • 认识ip地址
      • 子网掩码
    • 路由选择

网络层

IP协议

首先通过认识IP协议报头来了解IP协议

image-20220417124738632

4位版本

IP协议的版本号,目前只有两个取值,4(0100)和6(0110)

4位首部长度

表示IP首部长度。最大数值是15(1111),单位是4个字节,所以IP首部最大长度为60字节。

8位服务类型(TOS)

3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0).所以说虽然是8位,但是其实只有4位是有效的

4位TOS分别表示为:最小延迟,最大吞吐量,最高可靠性,最小成本.(同一时刻,只能存在一种状态)

ip协议是规划两点之间的一条比较合适的路径,也就是选择上面四种状态之一尽心规划.

16位总长度

16位表示最大长度为64k,所以单个IP数据报最大的长度不能超过64k

如果需要一个更长的ip数据报(比如搭载的数据载荷就超过了64k),IP协议自己就实现了分包和组包这样的操作.

16位标识+3位标志+13位片偏移

因为这三部分共同完成分包和组包的操作,所以这里放在一起进行总结

image-20220417132039065

拆分之后,接收方如何知道这几个小包是同一个数据包拆分的呢?

此时就到了16位标识出场:所有从同一个数据包拆分出来的小包,他们的16位标识都是一样的

image-20220417132352900

此时接收方知道标识一样的小包是同一个数据拆分出来的小包,可是接收方面对数据仍然会手足无措,不知道这些小包应该按照什么样的顺序进行组合.

此时13位片偏移出场,描述这些包到底谁先谁后,需要注意的是,片偏移并不是单纯的表示1,2,3,4 而是基于片偏移计算出了每个包之间应该空出多少空间.(防止后发先至的情况.

image-20220417133318395

此时数据拆分成三个包,因为网络原因,导致片偏移为2的数据报最后到达,但是因为片偏移的存在,最后仍然可以组合成一个完整的数据报,和发送方的数据报一模一样.

但是组合完成之后,接受方如何可以得知此时的ip数据报已经全部接收了呢?

此时3位标志出场,除了最后一个包,其他的包取值都为0,最后一个取值为1.

image-20220417133838849

最后,接收方接受到整个ip数据报,皆大欢喜,可喜可贺.

8位生存时间(TTL)

表示一个ip数据报可以在网络中生存的时间,此时的单位不会是s或ms,而是转发的次数.IP数据报被发送的时候,会有一个初始的TTL(常见的值为128或64),IP数据报每次经过一个路由器,TTL就会-1,如果TTL减到了0,此时收到这个包的路由器就会将这个包丢弃.

因为有些包里面的IP地址,也许永远也到不了,这种包不可能在网络中永无休止的转发(浪费资源),正常的IP数据报都会在TTL内到达.

8位协议

传输层中使用的协议.比如TCP或UDP

16位首部校验和

用来校验数据是否正确

32位源IP地址+32位目的IP地址

源IP地址表示发件人地址,目的IP地址表示收件人地址.对于IPv4来说,一个IP地址本质上是32位的整数,通常用点分十进制表示这个ip地址,3个点把32位整数分成4部分,每部分1字节,每个部分的取值为0-255

地址管理

认识ip地址

ip地址是一个点分十进制构成的数据,咋们把ip地址分成两部分:网络号和主机号

网络号:描述了当前的网段信息(局域网的标识)

主机号:区别了局域网内的主机

同一个局域网中,主机之间的网络号是相同的,主机号不能相同,

两个相邻的局域网(同一个路由器相连),网络号也是不同的

image-20220417144202157

那么,如何划分网络号和主机号呢?

分类

一般将IP地址分为五类(ABCDE),但是一般研究的最多的之后前三类(ABC)

A类IP地址: 多用于大型网络,地址范围0.0.0.0~127.225.225.225 但是0.*和127.*是特殊的ip地址,一般不算做有效ip地址,所以A类网络地址范围为:1.0.0.1~~126.225.225.224,网络号范围是1~126,最大网络数为27-2个,最大主机数224-2,全0和全1的地址保留不分配

B类IP地址: 多用于中等规模的网络,地址范围为128.1.0.1-191.255.255.254 ,网络号范围为128.1–191.255,因此最大网络数为214-1,最大主机数为216-2。

**C类IP地址:**多用于小型网络,地址范围为192.0.1.1-223.255.255.254,网络号范围为192.0.1–223.255.255,因此最大网络数为221-1,最大主机数为28-2。

**D类IP地址:**多用于多路广播,地址范围为224.0.0.1-239.255.255.254,网络号范围为224–230之间取值。

**E类IP地址:**该类IP地址为保留地址,网络号范围为240–255之间取值。

特殊的IP地址

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

在上述的分类中,存在IP地址浪费的问题:

(1)单位一般会申请B类网络(C类连接主机数量有限),但实际网络架设时,连接的主机数量又常远小于65534(B类连接主机数),造成IP地址浪费;同理,A类网络的IP地址也会造成大量的浪费。

(2)当一个单位申请了一个网络号。他想将该网络能表示的IP地址再分给它下属的几个小单位时,如果在申请新的网络就会造成浪费。

为了解决以上问题,引入子网掩码来进行子网划分:

子网掩码

格式

子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。子网掩码也可以使用二进制所有高位1相加的数值来表示,如以上子网掩码也可以表示为24。

作用

(1)划分A,B,C三类 IP 地址子网:

如一个B类IP地址:191.100.0.0,按A ~ E类分类来说,网络号二进制数为16位网络号+16位主机号。

假设使用子网掩码 255.255.128.0(即17) 来划分子网,意味着划分子网后,高17位都是网络位/网络号,也就是将原来16位主机号,划分为1位子网号+15位主机号。

此时 IP地址组成为:网络号+子网号+主机号,网络号和子网号统一为网络标识(划分子网后的网络号/网段)

(2)网络通信时,子网掩码结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。

对于网络通信来说,发送数据报时,目的主机与发送端主机是否在同一个网段,流程是不一样的。

计算方式

将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。

将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。

示例:

十进制二进制
IP地址180.210.242.13110110100.11010010.11110010.10000011
子网掩码255.255.248.011111111.11111111.11111000.00000000
网络号180.210.240.010110100.11010010.11110000.00000000
主机号0.0.2.13100000000.00000000.00000010.10000011

特殊的IP地址

将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网;

将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;

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

IP地址是10开头,192.168开头 172.12 —172.31开头,表示该IP地址是一个局域网内部的IP(内网IP),除此之外,剩下的IP成为外网(直接在广域网使用的IP)

要求外网IP是唯一的,每一个外网Ip都对应到唯一的设备内网IP只是当前局域网中是唯一的,不同的局域网中可以有相同的内网IP的设备

目前的IPv4协议使用的IP地址是32位整数,32位表示的范围42亿9千万,如果给世界上每个设备分一个唯一的IP,意味着世界上的设备不能超过42亿9千万,但随着互联网的兴起,这是不可能的

所以需要解决ip地址不够的问题

  1. 动态分配:让每个设备连上网的时候,才有ip,不联网的时候就没有ip(这个ip此时给别人使用)-

这种方案不能从根本解决问题,设备没有减少,ip地址没有增加,治标不治本

  1. NAT机制:让多个设备共用一个IP(外网IP)

把网络分成内网(局域网)和外网(广域网),要求外网ip必须表示唯一的设备,同时内网的若干个设备,可以共用同一个外网IP

此时每个外网IP都可以表示几千个甚至上万个设备,这个时候IP地址的压力就缓解了很多.

上图中的主机1如果访问一个网站,就通过运营商的外网IP去访问,但是这样会出现一个问题

如果主机1和主机2同时访问一个网站,那么网站就看到两个连接,这两个连接的IP地址都来自于同一个外网,此时网站如何区分两个主机(五元组)

不同的主机,就有不同的端口号,既然ip地址一样,那么就跟据端口号进行区分两个主机.

NAT机制将IP分为内网和外网,也隐藏一个重要的结论

对于一个外网IP,可以在网络中的任意位置访问到

对于一个内网IP,只能在当前局域网内部访问,局域网1的设备,不能通过内网IP访问到局域网2的设备

NAT机制也有极限:端口号的个数 (65535) 如果一个局域网的连接数超过65525,此时的NAT不一定好使,端口号不够用了

so,NAT只是缓解,但不能从根本解决

  1. IPv6:在报头中使用了一个更长的的字段来表示IP地址

16个字节 128位

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

但是IPv6和IPv4不兼容

image-20220417155732291

每一个数字都是一个16进制的数字,每个冒号分割了2字节

路由选择

路由选择,就是规划路线,两个设备之间要找出一条通道,能够完成传输的过程

IP数据报中的目的地址,表示了这个包要发去哪里,这个目的地址,如果当前路由器直接认识,就告诉IP数据报具体的路线。

如果当前路由器不认识,就会告诉一个大概的方向,让数据报走到下一个路由器的时候再访问,依次往后走,其实就是再距离目标越来越近,这个时候就总会遇到认识这个地址的路由器,就可以具体的转发过去。

路由器内部维护了一个数据结构:路由表

路由表里面就记录了一些网段信息(网络号)(目的IP就在这些网络号中匹配)以及每个网络号对应的网络接口(网络就扣其实就对应到路由器里面具体的接口)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值