Linux-ip协议-ip地址管理-DHCP协议
Posted 天津 唐秙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-ip协议-ip地址管理-DHCP协议相关的知识,希望对你有一定的参考价值。
1. ip协议
1.1 ip协议格式
4位版本:标识当前是ipv4协议
4位首部长度:计算出来的值需要乘以4,才是首部的长度
8位服务类型(TOS):前三位表示优先级,但是弃用了最小延时(ssh),最大吞吐量(ftp),最高可靠性,最小成本,1位保留位
16位总长度:能够表示ip数据包的最大长度为2^16,单位字节,包含ip头部 + ip数据包的有效载荷
16为标识:标识那些ip数据报是同一个数据的
3位标志:第一位保留位,第二位表示禁止分片,第三位表示分片是否结束,1表示后面还有分片,0表示没有分片
13位片偏移:表示在同一个数据当中的哪一个位置
16位总长度 + 16位标识 + 3位标志 + 13位片偏移
1.16位总长度能够标识的数据最大为65536字节,如果传输层递交给网络层ip协议的数据超过65536字节,应该怎么做?
在网络层的ip协议进行分片传输,每一条数据都是一个独立的ip数据报,当这些ip数据报传输到对端之后,对端针对ip协议个数头部的16位标识,三位标志,13位片偏移来组装同一条数据
2.TCP需要ip协议进行分片传输吗?
不需要,因为tcp在传输数据的时候,严格按照MSS进行传输,而MSS一定是小于MTU的,而一般网卡的MTU都是1500字节,换句话说,tcp在每次传输数据的时候,都是不会超过1500字节,MSS远远小于65536字节,所以,不会触发ip协议进行分片传输
3.UDP协议需要ip协议进行分片传输吗?
有可能需要进行分片传输,udp的数据递交给网络层的ip协议之后,如果加上ip协议报头之后,总长度超过65536,则需要进行分片传输,如果没有超过65536字节,则不需要进行分片传输
8位生存时间(TTL):经历路由器的最大跳数,换句话说,路由转能够转发该条数据的最大次数。每经历一个路由器转发,TTL减1,TTL>0,表示路由器还可以转发,TTL等于0,表示路由器就直接将这条ip数据丢弃掉了,ip数据报的TTL默认一般是64
8位协议:记录上层协议,记录该条数据需要递交给传输层的哪一个协议
16位首部校验和:校验数据在传输过程中是否失真
32位源ip地址,32位目的ip地址:
1.链路当中的节点,都会对ip数据报进行分用,获得目的ip地址之后,进行路由传输
2.一般情况下在网络传输过程当中是不会篡改ip地址的
3.当ip是私网ip地址的时候,会被NAT服务器进行修改ip地址
1.2 ip地址的管理
ip地址分为两个部分,网络号和主机号
- 网络号:保证相互连接的两个网段具有不同的标识,在网络当中标识了一堆的ip
- 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号,在同一个网络号当中标识不同的主机
ip地址 = 网络号 + 主机号
ipv4版本的ip地址:本质是uint32_t,范围[0,2^32-1]
早期ip地址的划分方式:A类,B类,C类,D类,E类
最高位固定为0
7位表示网络号
24位表示主机号
网络号的范围:00000000 ~ 01111111 =》 0 ~ 127 128个网段
0.0.0.0 ~ 127.0.0.0
ip地址的范围:00000000 00000000 00000000 00000000
01111111 11111111 11111111 11111111
0.0.0.0 ~ 127.255.255.255
0 ~ 2,147,483,647
一个网络号当中有多少个ip地址:2^24 = 16,777,216
高两位固定位10
网络号占用14个比特位
主机号占16个比特位
网络号的范围:10000000 00000000 ~ 10111111 11111111
128.0 ~ 191.255
128.0.0.0 ~ 192.255.0.0
ip地址范围:10000000 00000000 00000000 00000000
10111111 11111111 11111111 11111111
128.0.0.0 ~ 192.255.255.255
2,147,483,648 ~ 3,221,225,471
B类网段当中有多少个ip地址:2^16
高三位固定110
网络号占21比特位
主机号占8比特位
网络号范围:
11000000 00000000 00000000 ~ 11011111 11111111 11111111
192.0.0 ~ 223.255.255
192.0.0.0 ~ 223.255.255.0
ip地址范围:
11000000 00000000 00000000 00000000
11011111 11111111 11111111 11111111
192.0.0.0 ~ 223.255.255.255
C类每一个网段当中的主机号:2^8 = 256 (0 ~ 255)
注意:在每一个网段当中都会有一个网络号和一个广播号
192.0.0.0 ~ 192.0.0.255
网络号:主机号全为0的ip地址,就为该网段当中的网络号
广播号,主机号全为1的ip地址,就为该网段的广播号
127.0.0.1:本地回环网卡地址
0.0.0.0:代表本地所有网卡地址
CIDR方式:
1.为了更加精细化的划分网络当中的主机数量而诞生的
2.CIDR方式引入了子网掩码
子网掩码:
1.本质上也是uint32_t的整数,但是这个整数从最高位的比特位到某一个低位的比特位之间一定是全为1,中间没有0。
11111111 11111111 11111111 00000000
2.如何计算当前网络的网络号
网络号 = IP地址 & 子网掩码
172.18.0.1
&
255.255.0.0
172.18.0.0 => 172.18.255.255
3.如何得到当前子网当中的ip地址使用多少个比特位作为主机号
子网掩码取反 = 当前最大主机号
255.255.0.0
11111111 11111111 00000000 00000000
取反
00000000 00000000 11111111 11111111
取反之后,有多少个比特位为1,则表示当前子网络当中ip地址使用了多少个比特位当中是主机号
2. DHCP协议
1.谁上网给谁分配ip
2.在ip地址当中划分出来三段,作为私网ip地址,而私网ip地址不具有访问互联网的效力
10. * . * . * :10.0.0.0 ~ 10.255.255.255
172.16. * . * ~ 172.31. * .* :172.16.0.0 ~ 172.31.255.255
192.168. * . * :192.168.0.0 ~ 192.168.255.255
3.虽然说当前这些ip地址不能直接访问互联网,但是可以在不同的子网当中进行复用
以上是关于Linux-ip协议-ip地址管理-DHCP协议的主要内容,如果未能解决你的问题,请参考以下文章