Linux网络通信:网络层的典型协议IP协议

前言

Linux网络通信环境中的网络层主要负责地址管理与路由选择,为网络中的每条数据选择合适的路径,网络层的典型协议:IP协议。

在之前的学习中我们对HTTP、UDP、TCP协议一定的了解后,我们一起来深入挖掘一下IP协议的相关知识。

一:IP协议

IP协议(Internet Protocol):称为网络互联协议,IP协议是TCP/IP协议簇中的核心协议,IP协议提供无连接的、不可靠的数据传输服务。

1.1 IP协议格式

在这里插入图片描述
版本: 表示 IP 协议的版本,通信双方使用的IP 协议版本必须一致

头部长度: 标识IP报头的长度,最小20字节(固定报头),最大60字节(0~40的选项数据)。

区分服务: 也被称为服务类型,为了用来获得更好的服务(三位弃用,一位置0,四位TOS字段最大吞吐量、最高可靠性、最小延时、最低成本)。

数据报总长: 报头和数据的总长。数据报的最大长度为 2^16-1=65535 字节。

分片标识: 用来标识数据报,IP 协议在存储器中维持一个计数器。每产生一个数据报,计数器就加 1,并将此值赋给标识字段。当数据报的长度超过网络的 MTU(最大传输单元)而必须分片(完整的报文分割为多个小的报文)时,这个标识字段的值就被复制到所有的数据报的标识字段中。具有相同的标识字段值的分片报文会被分片重组成原来的数据报。

标志: 一位保留(0)、一位禁止分片(0:允许、1:不允许)、一位分片标志(表示是否还有分片正在传输,0:没有更多分片需要发送,或数据报没有分片)。

分片偏移: 当报文被分片后,该字段标记该分片在原报文中的相对位置(分片也不一定按序到达,用于分片在对端进行重组)。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。2^13=8192,以8字节为单位,才能表示最长的报文(65535)每个分片的位置。

生存时间: 表示数据报在网络中的寿命,该字段由发出数据报的源主机设置。其目的是防止无法交付的数据报无限制地在网络中传输(路由转发环路),从而消耗网络资源。路由器在转发数据报之前,先把 TTL 值减 1。若 TTL 值减少到 0,则丢弃这个数据报,不再转发。因此,TTL 指明数据报在网络中最多可经过多少个路由器。TTL 的最大数值为 255。若把 TTL 的初始值设为 1,则表示这个数据报只能在本局域网中传送。

上层协议: 表示该数据报文所携带的数据传输层所使用的协议类型,方便目的主机的 IP 层知道按照什么协议来处理数据部分(分用时选择上层协议解析)。TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。

校验和: 用于校验数据报的头部,数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。

源IP地址: 表示数据报的源 IP 地址。

目的IP地址: 表示数据报的目的 IP 地址。

选项数据: 用于一些可选的报头设置,主要用于测试、调试和安全的目的(保存路由地址信息,经过每个路由器的时间戳记录)。

数据: 表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。

二:地址管理
2.1 IP地址的组成

IP地址由网络号+主机号组成

网络号: 俗称网段,用来标识网络。每个路由器向自己子网中的主机分配的IP地址都带有网络号标记,每个网络的网络号不同,就能保证它们分配的IP地址不冲突。

主机号: 网络中的主机有很多,主机号就是用来在网络中唯一标识一个主机。

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

2.2 早期网段的划分

手动管理子网中的IP是一件非常麻烦且不现实的事情,这里我们引入了一种技术DHCP:动态主机配置协议,当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。一般的路由器都带有DHCP功能,因此路由器也可以看做是一个DHCP服务器。

IP地址是一个拥有4个字节的无符号整形,不过我们经常用点分十进制进行表示。

网段类别IP特点网络号范围IP范围
A类(大型网络高1位固定为0,7位网络号,24位主机号0 ~ 1270.0.0.0 ~ 127.255.255.255
B类(中型网络高2位固定为10,14位网络号,16位主机号128.0 ~ 191.255128.0.0.0 ~ 191.255.255.255
C类(小型网络高3位固定为110,21位网络号,8位主机号192.0.0 ~ 223.255.255192.0.0.0 ~ 223.255.255.255
D类(特殊网络高4位固定为1110,28位多播组号/224.0.0.0 ~ 239.255.255.255
E类(特殊网络高5位固定为11110,27为留待后用/240.0.0.0 ~ 247.255.255.255

但是,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就
分配完了, 而A类却浪费了大量地址。

2.3 当前网段的划分

CIDR(无类别域间路由选择):消除了传统的A类、B类和C类地址以及划分子网的概念,引入子网掩码来区分网络号和主机号。

子网掩码:子网掩码是一个拥有4个字节的无符号整形,由连续的二进制1组成。

  • 实际运用

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

当前网络最大主机号 = ~子网掩码

IP地址与子网掩码做与运算可以得到网络号,,主机号从全0到全1就是子网的地址范围。

2.4 特殊的IP地址

IP地址全为0: 可以识别当前主机上的任意网卡地址,常用于服务端的监听地址。

IP地址全为1: 全网广播地址(适配所有IP地址,常用于DHCP),任意一个主机收到这个地址的数据,都会认为是发送给自己的。

主机号全为0: 也就是网络号,代表这个局域网,因此这个IP是不能分配给网络中的主机的。

主机号全为1: UDP局域网广播地址,适配于当前网络中的所有主机,用于给同一个链路中相互连接的所有主机发送数据包,因此这个IP是不能分配给网络中的主机的。

127.0.0.1: 本地虚拟回环网卡的IP地址,用于本地的网络通信测试。

三:路由选择
3.1 公网与私网

公网:互联网。

私网:组织内部组建的局域网进行内部通信,而不直接连接到Internet上。

  • 面对IP地址不够用的问题

NAT(网络地址转换技术): 一般使用私网IP 作为局域网内部的主机标识,使用公网IP 作为互联网上通信的标识。内部结点要与外部网络进行通信时,就在NAT网关将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭问题。

注意:私网的网络号不能与外部公网的网络号冲突。

私网网络号:10网段、172.16~172.31网段、192.168网段

3.2 路由选择

路由选择:在复杂的网络结构中,数据进行分组转发的过程。

路由器:路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点

路由表:路由表是一个存储在路由器上的电子表格,存储着指向特定网络地址的路径,路由表的存在是进行路由选择的基础。

  • 理解路由表

使用route或netstat -r命令查看本地计算机上的路由表
在这里插入图片描述
Destination: 目的网络地址。

Gateway: 网关地址,又称下一跳地址,私网中任意主机如果需要发送数据,就先需要将数据发送到网关。

Genmask: 子网掩码。

Iface: 连接指定网络的网卡。

  • 路由选择过程

路由选择的过程其实就是路由表网络匹配的过程,每个路由器上都有一张路由表,记录当前路由器所相连的网络,当路由器接收一个数据时,通过路由表判断当前数据的目的主机属于哪一个相邻的网络(用数据的IP地址与子网掩码进行相与,然后与目的网络的网络号进行比较),若属于某个相邻的网络则使用相对应的网卡将数据发送出去,若路由表匹配失败,则将数据发送到下一层网络设备。
在这里插入图片描述
路由选择并不困难,最为困难的是路由表生成算法。例如距离向量算法,LS算法等。关于路由选择有着很多的算法这里不再深入讨论。

关于路由选择和网络搭建十分复杂,是一门独立的学科,还需要进一步研究讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值