赞
踩
ip地址 | 192 | . | 168 | . | 1 | . | 1 |
---|---|---|---|---|---|---|---|
十进制 | 192 | 168 | 1 | 1 | |||
二进制 | 1100 0000 | 1010 1000 | 0000 0001 | 0000 0001 | |||
合并 | |||||||
计算机中存储 | 1100 0000 1010 1000 0000 0001 0000 0001 | 32位 | 4字节 | ||||
再转化为十进制 | 3232235777 | unsigned int |
总而言之,ip地址在计算机中就是一个32位的unsigned int的整数。
表示范围 | A类 | B类 | C类 |
---|---|---|---|
0 ~ 224 - 1 | 0 ~ 216 - 1 | 0 ~ 28 - 1 | |
理论最大主机数 | 16777216 | 65536 | 256 |
实际最大主机数 | 16777214 | 65534 | 254 |
减2的原因:
为什么要进行分类呢?
对于快速定位寻址这一点,为了方便理解,这里简单的画一张图,对其进行分析:
在整个过程中,主机1可以通过网络号识别是否位于同一个网段,如果不位于就往上传,在上传的过程中,我们淘汰了局域网A和B所在的全部主机。在实际的过程中,还可以往上再进行上传,越往上传,那么淘汰的主机数就越多,也就变向的达到了快速定位寻址的效果。因此我们可以将网络看成一个多叉树,主机就是叶子结点,路由器就是非叶子节点,两个不同网段主机间进行通信,也就是两个叶子结点之间进行路由的过程。
广播地址用于什么?
组播地址用于什么?
从 224.0.0.0 ~ 239.255.255.255 都是组播的可用范围,其划分为以下三类:
简单总结一下:
单播 | 广播 | 组播 |
---|---|---|
一个主机对另一个主机发送数据包 | 一个主机向指定网络下的所有主机发送数据包 | 一台主机向指定网络下的特定的一些主机发送数据包 |
一对一 | 一对所有 | 一对特定的一些 |
为啥会ip地址分配不均呢?
如何解决?
网络类别 | 默认子网掩码 |
---|---|
A | 255.0.0.0 |
B | 255.255.0.0 |
C | 255.255.255.0 |
当我们能够需要一个3万多台
的网络的电脑时,可以对一个B类的子网掩码设置为 255.255.128.0
,即给B类地址多分配一个网络号,那么主机号就变成了15位
,最多能表示32,768
台主机,因此可以解决IP地址分配不均的问题,下面我们使用图解进行举例演示。
如图,也就意味着子网掩码的作用就是划分网络号与主机号。在实际过程中为了表示方便,将ip地址与子网掩码一起用129.255.1.1/17
的形式进行表示,「 / 」 前面表示ip地址,后面表示划分的网络号的位数,即17位网络号。
报头与有效载荷如何进行分离?
说明:
16位总长度
减去 4位首部长度
准确得到。有效载荷如何向上进行分用?
在8位协议
的字段中,如果是UDP协议的报文,那么8位协议就为17,如果是TCP协议的报文,那么8位协议就为6,通过对协议编号,可以将有效载荷准确的向上进行分用。
协议号拓展:
- ICMP(Internet Control Message Protocol)协议号为 1,用于在 IP 网络上发送控制消息和错误报告,用于网络诊断和错误通知。
- IGMP(Internet Group Management Protocol)协议号为2,用于在多播网络中管理主机成员关系的协议。
如何理解生存时间与环路?
如图:
这样就会有两个问题:
为什么要进行分片?
查看MTU的命令:
#Windows
netsh interface ipv4 show subinterfaces
#Linux
ifconfig
说明:Loopback(Windows) / lo(Linux) ,为本地环回地址,不会将数据发送到网络,因此通常MTU设置的很大。
注意:
相关的协议字段:
分片与组装的具体过程?
细节:
分片会产生哪些影响?
路由获取方式上分:
# Windows:
route PRINT
# Linux:
route
这里以Windows路由表进行举例:
接口一栏,我们需要借助网卡设备进行理解:
查看网卡配置:
#Windows
ipconfig
最短路径算法:最短路径算法用于确定网络中两个节点之间的最短路径。著名的最短路径算法包括Dijkstra算法和Bellman-Ford算法。
路径向量路由算法:路径向量路由算法类似于距离矢量路由算法,但是每个路由器不仅发送到达目的地的距离信息,还发送到达目的地的路径信息。BGP是一种路径向量路由算法,用于在互联网中实现路由。
距离矢量路由算法:距离矢量路由算法基于每个路由器维护到其他所有路由器的距离矢量,通过交换距离矢量信息来更新路由表。经典的距离矢量路由算法有RIP和IGRP。
在之前,我们提及过ipv4地址只有42亿多,当今的互联网世界远不止这么多的互联网设备,那么我们要如何让这么多设备接入互联网呢?基本的思路是将一批的ip地址进行复用,一批的ip地址进行公开,即私有ip和公有(网)ip。
图解:
简单理解就是公有ip就是一个唯一标识,私有ip是一个局部的唯一标识,全局的可重复的标识,比如我在XX理工大学上大学,这个某地我们就可理解为成唯一标识,在这个地方肯定只有一家理工大学,但是在别的地方就会有北京理工大学,武汉理工大学等等,那么理工大学就是一个全局的可重复的标识。
范围:
我们要了解到这样一个常识,即没有连网之前,我们的设备是没有ip地址的,而连了网之后,我们的设备才被分配了ip地址,这个ip地址通常为私有ip地址。
就拿我电脑上的ip地址进行举例:
我们看到的一般都是私有ip地址,可根据上图的范围图进行对比查看,且我们在网络中进行传递时,因为在全局范围内是重复的,所以只能在局域网内部进行使用。
就拿我租的云服务器的ip地址进行举例:
从图中我们可以看到,我们服务器内部使用的是私有ip,但是我们访问时使用的是公网ip进行的访问,这就是因为公网ip在全局唯一,是一种全局唯一的标识。
那我们就疑惑了,那么使用公网的ip地址是如何能够访问到局域网目的主机的呢?这中间蕴含着怎样的奥秘呢?
首先,路由器之间不断在进行转发的过程中,会有一种叫NAT路由器的,负责将我们所在的私有ip转化为公有ip,具体如下图:
那么就又会产生一个问题,如果主机A,主机B,主机C 同时 向服务器发送消息,那么就会出现虽然服务器能够收到消息,但不知道是谁发来的,在返回请求时就会出现NAT路由器实际上无法进行从「公有ip」向「私有ip」的转换,因此 NAT技术只能实现单主机在网络内通信。也就引出了下面的NAPT技术,来解决这一问题。
对比ip地址:最重要的区别在于ip地址是根据地理位置的变化而变化的;MAC地址是随着网络硬件的,只要网络硬件不变,设备的MAC地址是不会发生变化的。
在链路层,我们一般将数据格式称为数据帧,其中MAC帧主要有三种表示形式:
源ip和目的ip就像是当下所在的起点和你要去往的最终目标一样,指定了源头和要实现的目标,给我们了一个明确的方向,而源mac和目的mac就像我们实际的行动一样,需要我们脚踏实地,两者结合最终才能实现我们的目标,即到达目的主机。
协议字段
ARP粗略过程
路由器向局域网内所有主机发送ARP请求。
目的主机识别ARP报文,然后向路由器发送ARP应答,其中报文中携带目的主机的MAC地址。
补充:
当设备接入网络时,会自动分配ip地址,而在连入到网络之前,设备是没有ip地址的,也就是说ip地址并不属于我们,我们只是临时的进行使用而已,那么DHCP协议就可以帮助我们自动的完成申请ip这一过程,而省去了繁琐的步骤。
查看DHCP信息
DHCP协议一般都是在DHCP服务器下进行的,我们可以在windows下查看到内网的DHCP服务器的ip地址:
ip /all
基本信息
报文格式:
UDP报头中,DHCP服务器的端口号一般设置为67
,客户端一般设置为68
。
协议字段:
跳数:这里指定对应的路由器,我们称之为中继路由器,负责将报文转发到DHCP服务器上,其转发的次数,即为这里的跳数。
秒数:一般来说为客户端申请或者更新ip地址的时间,一般用时间戳的形式表示。
标识:一般为2字节,即16比特,最高位为1时为广播,最高位为0时为单播。
事务标识:DHCP一般是由客户端发起的,所以一般由客户端生成的随机数,用于标识唯一的应答和请求报文。
引导文件名:这里指定是服务器指导客户端在指定文件下配置ip地址等相关信息。
选项中的字段格式:
说明:选项字段中有一个END字段,用于表示选项位置的结束,因此我们是可以截取出一个完整的DHCP报文的。
选项中的基本信息:
大致申请的流程。
首先当客户端申请ip地址时,我们是没有ip地址的,那么此时只能用0.0.0.0
代替我们的主机地址,其次我们也不知道DHCP的ip地址,因此我们只能用广播地址(全1),在局域网内进行广播,报文类型我们设置为DHCP-OFFER
用于表示发送的第一个请求,通过绑定68号端口上的客户端进程进行发送。
当报文经过对应的中继路由器不断进行转发到达相应的DHCP服务器之后,其上67号端口上进程识别对应的报文之后,发送DHCP-OFFER
类型的应答报文,携带配置ip相关信息,比如ip地址,子网掩码,DNS主机名,租约等信息。由于对应主机目前还没有ip地址,于是发送时以广播的形式进行发送给对应局域网的路由器,不过我们转发时可是知道其MAC地址的,因此目的主机最终还是能收到对应的应答的。
当客户端确认收到应答之后, 会对DHCP服务器,发送DHCP-REQUEST
类型的报文,用于表示接收DHCP服务器发来的配置信息,这时由于ip地址还是无效的,不能直接用,还是跟最初一样用相应的ip地址作为代替进行发送报文。
当服务器再次收到请求,识别之后会发送相应的 DHCP-ACK
报文,此时客户端再次收到报文时,此后ip地址才算生效。
如图:
域名
比如我们所熟知的www.baidu.com,其实就是百度的域名。那么域名只是为了方便我们看到进行记忆,其中还蕴含着目标服务器的ip地址,如何解析域名进而获取ip地址,就是DNS协议的工作了。
分类:
分析:www.baidu.com.cn
现在我们可以从.com
的角度,证明百度其实是一家商业公司。哈哈,这感觉像是一个冷笑话。
Windows下查看与清除DNS缓存:
大致流程
当我们解析域名时,其实是交给对应的DNS服务器进行处理的,下面我们体验一波DNS解析baidu.com
的大致过程:
前提:浏览器中无相应的域名的DNS缓存,且主机上也没有相应的dns缓存,即没有域名对应的ip地址。
第一步,客户端发送请求到本地的DNS服务器上,本地DNS服务器就会查看是否有对应的域名的ip地址,如果有直接返回相应ip的地址,如果没有,就向根dns服务器上发送badu.com的请求。
第二步,根DNS服务器也无法识别baidu.com,但是知道相关顶级域名.com的DNS服务器,于是就返回它的地址让其访问它,看是否有baidu.com的ip地址。
第三步,本地DNS服务器继续向顶级域名.com的服务器发送请求,看其是否有baidu.com的ip地址,这个服务器上也没有对应ip地址,但是知道baidu.com的权威服务器上可能会有,于是又将其返回了。
第四步,本地DNS服务器继续向这个权威服务器发送请求,最终其返回baidu.com的ip地址,然后返回给对应的主机。
简单画张图:
我是舜华,期待与你的下一次相遇!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。