【Linux网络编程】网络层协议--IP协议

目录

网络层

 IP协议报头格式

网段划分 

特殊的IP地址 

IP地址的数量限制 

私有IP地址和公网IP地址

运营商与NAT技术

全球网络简易划分

路由

路由生成算法 

IP报文的分片和组装


网络层

网络层主要完成的工作是主机定位+路由选择

  • 主机定位:IP地址是互联网中能够唯一标识一台主机(暂时这么理解),网络层封装了IP地址,所以它发送完数据以后能知道,我的目的地在哪里,也就能够进行主机定位

  • 路由选择:IP地址标识了数据转发的目的地,网络层可以根据目的地进行路径选择

网络层提供了一种能力,即可以把数据从主机B送到主机C的能力

  • 所谓的能力,表示大概率能完成这个工作,但也有小概率可能完不成这个工作

网络层协议主要是IP协议 


网络层与传输层之间的关系 

IP协议提供了数据从发送方到接收方的能力,但也有可能完不成这个工作,若完不成这个工作应该怎么办呢?

  • TCP协议提供了主机之间传输数据时的可靠性保证,即发送方发送了数据,接收方一定能收到。这是通过数据重传实现的

  • TCP/IP协议的组合使得数据可以可靠的从发送方到接收方!


IP协议如何主机定位和报文转发 

实际上,我们所处的网络世界,是被精心设计过的,它是由无数个小的局域网/子网构成

这些子网通过路由器、交换机等网络设备相互连接,形成了复杂而庞大的网络体系。 

而我们使用的主机就是在子网中的一个终端设备

而IP协议要把数据从主机A送到主机B,首先得先找到主机B所在的子网。这个过程可能会路过多个子网。那么如何找到目的子网呢?

  • 实际上就是通过IP地址找到,所以IP地址中一定有信息可以标识出主机B所在的子网

所以IP地址 = 目标子网 + 目标主机

所以整个转发过程:

  • 先根据目的IP,进行局域网之间的转发

  • 局域网内,进行内网转发


 IP协议报头格式

  • 32位源IP地址:表示发送方的IP地址,这个地址是网络序列,这也说明了为什么我们应用层的IP地址要转化为网络序列

  • 32位目的IP地址:表示接收方的IP地址,这个地址也是网络序列!

  • IP协议报头的标准格式(不含选项)是20个字节的,但由于是否有选项,有多少个都是不固定的,所以IP协议报头的大小也是不固定的。

  • 4位首部长度:表示IP协议报头的大小,单位是4字节,所以报头大小范围是:[0,60]

  • 4位版本:主要表示的是IP协议的版本,有IPv4与IPv6。IPv4是用32位表示源/目的IP,而IPv6是用128位表示源/目的IP,IPv4与IPv6不兼容!

  • 8位服务类型:8位中的首3位是弃用的。还有1位是保留字段,这个字段必须为0。还有4为表示你的需求是什么。4 位分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个.

  • 16位总长度:表示IP协议的报头+有效载荷的大小

  • 8位生存时间(TTL):数据报到达目的地的最大报文跳数. 一般是64。生存时间本质其实是一个计数器。每次经过一个路由TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环

  • 8位协议: 表示上层协议的类型,即这个IP报文是交付给UDP or TCP层的

  • 16位标识、3位标志、13位片偏移,这三个字段主要用于IP的分片和组装,在后面会详细介绍


如何将IP报文的报头和有效载荷进行分离?

首先是通过固定20字节的标准报头格式,这使得分离时可以读取报头的基本信息。

若IP报头携带选项的话可以通过:(4位首部长度*4 - 20)得到

通过4位首部长度,还可以把报头和有效载荷进行分离


分离后的IP报文如何向上交付 

 网络层协议向上交付,交付给的就是传输层,而传输层协议有很多(主要UDP/TCP),通过IP报头中的8位协议就可以区分到底交付给传输层中的哪个协议!


网段划分 

网段划分是什么? 

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

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

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

  • 当代路由器除了进行路由转发之外,也可以用于构建子网(局域网)

  • 图中网络标识为:192.168.128和192.168.144分别构建了自己的子网。(其中主机号为0的设备一般是构建子网的设备)

  • 不同的子网其实就是把网络号相同的主机放到一起.

  • 主机号只是在局域网当中唯一的,例如上图中192.168.144和192.168.128都有自己主机号为10的设备

  • 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但 是主机号必须不能和子网中的其他主机重复. 

所谓的网段划分,主要用于将大型网络划分为更小、更易于管理的部分,即子网(Subnet)。

网段划分主要依据IP地址中的网络标识来划分的! 


DHCP技术 

通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同. 

但若是由当前子网的网络管理员手动设置不同设备的主机号,是非常麻烦的。因为当一台设备不再连接该子网时需要手动pop,当有一个新设备连接时又需要手动push

  • 有一种技术叫做 DHCP, 能够自动的给子网内新增主机节点分配 IP 地址, 避免了手动管理IP的不便

  • DHCP技术也就是我们常说的动态IP地址分配

  • 一般的路由器都带有 DHCP 功能. 因此路由器也可以看做一个 DHCP服务器. 


 网段划分的方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值