IP地址
IP地址分为IPV4和IPV6
IPV4是一个 32位无符号整数,用十进制点分发表示,比如 192.184.145.56
拆解IP地址
IP地址分为网络号和主机号:
- 网络号我们可以想象成我们的身份证前几位,在同一网络中的网络号相同
2.主机号就是身份证后面,每个主机独有
网络掩码(mask)
32位整数,前面全是1,后面全是0
例如 11111111 11111110 00000000 00000000
也可以直接用数字表示 , 例如:/21 表示有21个1 ,剩下的都是0
求主机号和网络号
用IP地址 & mask = 网络号
用IP地址 & (~mask) = 主机号
例如IP地址:192.168.13.255/24
我们可以算出网络号是:
192.168.13.0
主机号是:
0.0.0.255
特殊IP地址
1.网络号
主机号全为0的IP不会分配给主机使用 ,这个称为网络号
例如IP地址为 :192.168.13.193/24 , 它的网络号就是:192.168.13.0
2.广播号
主机号全为1的IP不会分配给主机使用 ,这个称为广播号
例如IP地址为 :192.168.13.193/24 , 它的网络号就是:192.168.13.255
3.环回地址
127开头的IP都是环回地址
最常用的如:127.0.0.1
4.内网地址/公网地址
内网地址可以内部自行访问,也可以访问公网地址。外网地址是不可以访问内网地址的。
注:同一网络的IP地址不可重复
IP地址的功能
我们发送UDP/TCP协议时,将本机IP(提前携带)和目标IP(Socket写好)发送,这两个IP的直接连线是长期目标,然后我们就开始寻找一个个短期目标(通过主机内部维护着的路由表完成)
IP协议头
4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
4位头部长度(headerlength):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
8位服务类型(Type OfService):3位优先权字段(已经弃用),4位TOS字段,和1位保留
字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。
这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于 ftp这样的程序,最大吞吐量比较重要。
16位总长度(total length):IP数据报整体占多少个字节。
16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每 一个片里面的这个id都是相同的。
3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第
二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为0,其他是1。类似于一个结束标记。
13位分片偏移(framegamentoffset):是分片相对于原始IP报文开始处的偏移。其实就是 在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此, 除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
8位生存时间(Time ToLive,TTL):数据报到达目的地的最大报文跳数。一般是64。每次 经过一个路由,TTL -=1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出 现路由循环。
8位协议:表示上层协议的类型。
16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。
32位源地址和32位目标地址:表示发送端和接收端。
选项字段(不定长,最多40字节):略。