计算机网络之IP协议详解
Posted _BitterSweet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络之IP协议详解相关的知识,希望对你有一定的参考价值。
深度理解IP协议
1.IP协议基础知识
1.1IP协议报头格式(IPv4)
- 4位版本:标识IP协议的版本
- 4位首部长度:标识IP协议头部长度,4个比特位计算出来的数值×4,标识IP头部占用的字节数量
- 8位区分服务(旧标准叫做
服务类型
):【3位优先权字段:已经弃用
】,【4位TOS字段:最小延时 + 最大吞吐量 + 最高可用性 + 最小费用 ,这四个比特位是一个互斥关系,,一般情况下都是0,标识默认属性
】,【1位保留字段:必须置0
】 - 16位总长度:总长度指首部和数据(应用层提交的数据)之和的长度,数据报最大长度为65535
这里补充MTU的知识:MTU叫做最大传送单元
在网络传输的过程中,网络层的数是交付给数据链路层的;而数据链路层由于电气特性,对传输的数据做出了约束;通过ifconfig命令可以查看网卡中的限制
,数据链路层对传输数据大小的限制(MTU)
限制了网络层交给数据链路层数据报的大小不能超过MTU(字节),说明网络层在提交数据的时候不能超过1500字节
UDP协议:【1.UDP是整条数据交付的,就有可能提交给网络层数据的时候,超过了MTU的限制
】【2.当网络层的数据超过MTU时,需要在网络层进行分片传输;将超过MTU限制的数据,分成不同的数据,通过网络传输到对端
】 3.【UDP协议是不可靠的,IP协议也是不可靠的,所以如果分片传输,丢失一个分片,整个数据包就会丢失
】 结论:如果UDP数据包长度,超过了MTU的限制,则在网络层进行分片传输
TCP协议:【MSS:最大报文长度,限制TCP提交给网络层数据的长度
】【MTU = MSS + IP头部 + TCP头部
】【TCP协议在传输数据时,严格按照MSS来给网络层交付数据,所以在网络层IP协议拿到TCP提交的数据之后,一定是小于等于MTU - IP头部
】【结论:由于TCP在传输数据时,严格按照MSS来限制,所以网络层拿到TCP协议的数据,不需要在网络层进行分片
】
- 16位标识:标识当前UDP数据包分片的数据是属于哪一个完整的UDP的报文,同一个UDP数据包当中的所有分片具有相同的标识值,3个标志位:位1(保留位),位2(禁止分片),位3(标识更多分片,当该位置1时,标识该分片不是最后一个分片;当该位置0时,标识该分片已经是整个UDP数据包的最后一个分片)(
个人理解:就像是给自己的东西标记记号,然后在一堆东西里面可以根据自己的标记找到属于自己的)
- 13位片偏移:用来标识分片在原来数据当中的位置,用于接收方来组装数据,13位能表示的最大数值是 2^13 = 8192,表示字节的时候,需要给数值×8,即2^16,计算出来的片偏移的数值×8后的字节,标识分片的起始位置
- 8位生存时间:表示数据在传输到达目的地之前允许经过的路由器的个数,TTL:跳数,描述数据包可以最大经历多少路由器转发,一般情况为64,每经过一个路由器,该TTL进行减1操作(直到减为0,还没有到达目的主机,该数据包就丢弃了;如果在减为0之前到达,则说明完成传输)
- 8位协议:标识传输层使用什么协议,在数据分用的时候,通过该字段,将数据提交给相应的协议
- 16位首部校验和:判断IP头部在传输过程当中是否损坏(
使用CRC校验
) - 32位源IP地址 & 32位目的地址 :表示发送端和接收端
2.地址管理
- 目前主要讨论的ip地址是IPv4的IP地址,无符号的32位整数,范围(
0 ~ 2^32
)【42亿九千万😜】
2.1 早期划分方式
- 32的IP地址划分为两个部分:
网络号(网段) + 主机号
- 网络号:标识一个子网络,网络号就是代表了一堆IP地址
- 主机号:在子网中唯一标识一台主机
- IP地址划分为5类
2.2 五类地址详解
2.3 子网掩码引入
场景:一家公司有10个人,10台电脑,10个IP,此时选用C类地址,一共256个,但是我们只需要10个,那剩下的岂不就浪费了?这里我们引入CIDR(
无分类域间路由选择
),CIDR是为了更加精确的划分子网
- 引入CIDR和子网掩码,在机器向路由器申请IP地址的时候,路由器不但给机器动态分配(DHCP)一个IP地址,还分配一个子网掩码
- 子网掩码的意义:
最大主机号 = 子网掩码取反
网络号 = 子网掩码 & IP地址
2.4 如何划分子网?
一个网络当中的网络号为172.16.99.0,子网掩码为255.255.255.0,现在需要将该网络平均划分为4个子网,求每一个子网当中的IP地址范围,以及子网掩码?
2.5 公有IP地址和私有IP地址
- 有A,B,C分类地址,实际上有分共有IP地址和私有IP地址,私有地址不能直接访问互联网
- 私有地址如何使用呢?
可以不经过申请,直接被个人或者企业,国家使用
这些IP可以不同的设备进行复用,这些IP组建的网络称之为私网
私网当中的IP地址可以与私网当中的机器进行通信,但是不能与互联网进行通信
如果私网IP地址需要访问互联网,需要进行网络地址转化,将私网IP地址转化为公网IP地址
2.6 特殊的IP地址
-
127.0.0.1:本地回环地址(loopback)测试,用来测试网络协议栈
-
0.0.0.0:一般是用于服务端程序,表示服务端程序当中所有网卡当中的IP地址(局域网)
-
255.255.255.255:UDP的广播地址,全网广播,DHCP
-
主机号全为0,表示子网网络号
-
主机号全为1,表示子网广播号
3. IP地址和路由控制
- IP地址的
网络地址
这一部分是用于进行路由控制
路由控制表
中记录着网络地址
与下一步应该发送至路由器的地址
。在主机和路由器上都会有各自的路由器控制表- 在发送IP包时,首先要确定IP包首部中的目标地址,再从路由表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配
1.主机A要发送一个IP包,其源地址是10.1.1.30,和目标地址是10.1.2.10,由于没有主机A的路由表找到与目标地址10.1.2.10的网络地址,于是包被转发到默认路由(路由器1)
2.路由器1收到IP包后,也在路由器1的路由表匹配与目标地址相同的网络地址记录,发现匹配到了,于是就把IP数据包转发到了10.1.0.2(路由器2)
3.路由器2收到后,同样对比自身的路由表,发现匹配到了,于是把IP包从路由器2的10.1.2.1这个接口发出去,最终通过交换机把IP数据包转发到目标主机
-
使用
route
命令可以查看路由表
-
路由表的
Destination是目的网络地址
,Genmask是子网掩码
,Gateway是下一跳地址
,Iface是发送接口
,Flags中的U标志
表示此条目有效
(可以禁用某些条目),G标志
表示此条目的下一跳地址是某个路由器的地址
,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发
以上是关于计算机网络之IP协议详解的主要内容,如果未能解决你的问题,请参考以下文章