IPの总结

编程入门 行业动态 更新时间:2024-10-19 04:20:33

<a href=https://www.elefans.com/category/jswz/34/1770994.html style=IPの总结"/>

IPの总结

参考自:公众号小林coding的《图解网络》

IP是网络层的协议,网络层在TCP/IP模型中处于第三层,主要作用是实现点对点通信。IP协议就负责把数据包发送给目的主机(源主机与目的主机之间没有直连)。
网络层的下一层是数据链路层(MAC协议),负责两个直连的设备进行通信。
IP协议定义了IP地址,MAC协议定义了MAC地址,IP协议与MAC协议相互配合,才能让数据传输到目的主机。打个比方,一个人刚下飞机来到城市A,他想去城市B(此时目标IP地址就应该是城市B)。但是他人生地不熟,A到B也并没有直通车(两个设备没有直连)。但是他发现城市A有很多路线直通到城市C(设备直连,使用了MAC地址),于是他决定先去C再看看下一步该怎么走。他一直走一直走,总会到达城市B。
在旅程中,他每一段旅程的出发点和终点都会改变,但是他去往B的目标是不变的。(源MAC地址与目标MAC地址一直变化,但是源IP地址与目标IP地址不变)

IP协议

IP地址

每个设备(正确来说应该是每个网卡)都配备了一个IP地址。
目前我们大多使用IPv4地址,由一个32位整数表示,人们采用点分十进制的标记方法记忆(每八位标一个点,并把八位二进制数转换成十进制数)。
比如一个IPv4地址00010010 00000010 00001000 00000110,转换成点分十进制应该是
18.2.8.6。2^32约为43亿,因此理论上最多有43亿个IP地址(实际上真正作为用户IP地址远小于这个数目)。

IP地址分类

A类地址:
最高位为0,后面的7位为网络号,剩余的24位为主机号。

B类地址:
最高两位是10,后面的14位是网络号,剩余的16位是主机号。

C类地址:
最高的三位是110,后面21位是网络号,剩余的8位是主机号。

D类地址:
最高的四位是1110,后面的28位是组播地址。

主机号的位数决定了该类地址的最大主机个数。其中,主机号全1的是广播地址,全0的是指定的某个网络号,这两个地址都不能用于IP地址分配。

广播地址

广播地址用于同一个链路中互相连接的主机之间发送数据包。
在本网络(网络号相同)广播称为本地广播,本地广播不会到达其他链路,因为路由器不会转发企图去往其他链路的数据包。
不同网络广播称为直接广播,路由器一般也不会转发。

D类地址

D类地址用于多播,因为广播无法通过路由器转发出去,因此就需要用到多播(也叫组播)把数据包送到其他网段。

IP分类的优缺点

优点是我们可以通过IP地址的前几位就能分辨出它到底是什么类型的地址,通过地址类型能很方便地知道网络号和主机号。
但是,IP分类也有很多缺点:
1、同一网络下没有地址层级,缺少灵活性
2、与现实需求不匹配,C类地址只有8位主机号,最多只能有254台主机;B类地址有16位主机号,最多有65534台主机。两类地址之间的主机数目差距巨大,一个普通的小区使用的主机数肯定超过250,但好像又远没有达到60000的程度,那么多出来的地址就浪费了。

无类分址(CIDR)

取消了分类地址的概念,而是用子网掩码来区分网络号和主机号。掩码掩盖的是主机号,将掩码和IP地址做按位与运算,就能得到IP地址的网络号。
比如IP地址为:
00000001 10000001 11000100 01110010/22

其中的22是掩码中位为1的数目,从高位往低位延续。也就是说掩码应该是这样的:
11111111 11111111 11111100 00000000

我们可以看出,二者位于运算后的结果是:
00000001 10000001 110001 |00 00000000,|号前面的就是网络号。

子网掩码的另一个功能就是进行子网划分,也就是把主机地址再细分为子网网络地址和子网主机地址。

为什么要分成网络号和主机号

两台主机进行通讯时,首先要判断二者是否处于同一广播域(网络号一致),如果在同一广播域就可以直接发送过去。否则,主机就需要解决如何把数据包发往远程网络。

公有IP和私有IP

家庭电脑、办公室等等场所用的一般是私有IP,这些IP可以由人员自行分配,并且可以重复,就好像每个小区内的楼里都会有xx栋xxx房一样。但要是需要收快递的时候,快递员肯定不认这个地址,必须加上哪个省、市,哪条路多少号这样。路名显然是有路政部门这种国家机关来决定,公有IP也是由权威组织进行分配的。只有公有IP地址才能被互联网访问,公有IP也是不能重复的。(不然快递送到了别人家就不好了)

路由控制

IP地址的网络地址用来进行路由控制,主机和路由器的路由表里记录了网络地址和下一步要发往数据的路由器的地址。
发送数据包的时候,首先要确定目标地址,再从路由表里选择与目标地址的网络地址相同的记录,然后根据该记录把数据包发给相应的路由器。如果存在多条地址相同的记录,则选择相同位数最多的网络地址。如果没有找到相关记录,就转发到默认路由器。

发给环回地址127.0.0.1的数据包不会流向网络,而是发回给本机。

IP分片与重组

每个数据链路的数据包的最大长度是不一样的,我们称之为最大传输单元(MTU),以太网的MTU为1500字节,如果IP数据包大小大于该长度,就会进行IP分片把IP数据包分为多个包以适应MTU大小。接收端(目标主机)会把这些包重组为一个完整的包。但IP可没有TCP那么神通广大,如果其中一个小包丢失了,整个大包都需要重传一遍。
因此TCP引入了MSS概念,限制了一个TCP报文段的最大长度,因此避免了IP分片。

DNS域名管理

现实生活中我们访问网站肯定不是输入IP地址进行访问,而是通过域名,比如/,越靠后的域名层次越高。也就是说根域是最高级的,然后是顶级域,比根域低一级…

DNS解析

访问网站时,浏览器会首先访问缓存中有没有对应的网站资源,如果有就会从缓存中调取,否则就会向DNS服务器查询网站的IP地址。过程如下:
1、首先发出一个DNS请求给本地DNS服务器,问域名的对应IP是多少
2、本地DNS服务器如果能从缓存表中找到就直接返回,否则就去问根域名服务器
3、根域名服务器告诉本地DNS服务器一个搜寻方向,也就是顶级域服务器的地址
4、本地DNS服务器又去访问顶级域服务器,顶级域服务器会返回一个baidu的权威DNS服务器地址
5、本地DNS服务器再访问权威DNS服务器,终于查到了域名对应的IP

ARP协议

在路由表中可以找到下一目标的IP地址,但是在链路层需要MAC地址才能传输,因此我们需要ARP协议获取目标的MAC地址。
1、主机会广播ARP请求,里面包含了目标IP
2、持有目标IP的设备进行响应,并把子节点MAC塞到响应包发回给主机
操作系统也会缓存该地址(ARP缓存)。

RARP协议

即ARP协议的反向操作,由MAC地址反推IP地址,请求的发送方是小型的嵌入式设备等。这些设备没有网卡,也就意味着其自身没有IP地址,因此它需要向RARP服务器发送请求,获取一个IP地址。

DHCP协议

一种动态分配主机IP的协议,作用是避免自行设定IP而引起的地址冲突,设定上由UDP报文广播通讯,为了解决不同网段的IP地址分配,出现了DHCP中继代理,就是由一台DHCP服务器提供给客户端一个有租用期限的IP地址
其配置IP过程如下(以下过程全部使用UDP广播通信):
1、客户端首先发出DHCP发现报文的IP数据报,此时客户端还没有IP地址,也不知道DHCP服务器地址(IP数据报的广播目的地址是255.255.255.255:67,源地址是0.0.0.0:68)
2、DHCP服务器收到报文之后用DHCP提供报文做出回应,报文中携带着服务器提供的IP地址、子网掩码、默认网关、DNS服务器地址以及IP地址的租用期
3、客户端可能会收到多个DHCP服务器的提供报文,从中选一个并进行回发配置参数
4、服务器以DHCP ACK响应
租用期快到的时候,客户端会请求服务器是否能继续租用该IP。

有了DHCP中继代理之后,代理服务器会把接收到的UDP广播报文用单播发送给DHCP服务器。也就解决了在每个网段都要设置DHCP服务器的麻烦。

NAT与NAPT

为了缓解IPv4地址耗尽的现象,在同一个内网的主机可以通过NAT技术把私有IP转换成公有IP。但是这一方法还是把私有IP跟公有IP对应,本质上并没有缓解地址耗尽现象。
NAPT技术可以把多个私有IP映射为一个公有IP,并以公有IP的端口号区分它们。

ICMP协议

中文名是互联网控制报文协议,主要功能是确认IP包是否成功送达目标地址、报告发送过程IP包被丢弃的原因、改善网络设置等。
其类型可分为两类,一类是查询报文类型,用于诊断通信过程是否正常;另一类是差错报文类型,用于报告出错原因。

差错报文

发送端可以从ICMP消息中直到差错的具体原因。

比如类型3目标不可达有以下原因:
0:网络不可达(报文在链路层停留时间过久而被路由器丢弃)
1:主机不可达(主机IP不存在)
2:协议不可达
3:端口不可达(主机端口不存在)
4:需要进行分片但设置了不分片

ping命令

ping命令正是通过ICMP协议回发的0和8类型报文来判断数据包是否到达对端。

IGMP协议

组播时需要判断某台主机是否在这一组里,这时候要用到IGMP协议,中文名是因特网组管理协议

加入组播组:
1、路由器周期性地向同一网段的所有主机和路由器发送IGMP常规查询报文
2、主机收到查询报文后,等待一段随机时间(0-10秒),发送IGMP成员关系报告报文(发送给同网段所有设备)。如果在这段等待时间里收到了其他主机发过来的关系报文,该主机不会再发送关系报文
3、路由器收到关系报文后,把主机IP记录到路由表,此后主机就加入到组播组

退出组播组:
1、主机发送IGMPv2离组报文到网段内所有路由器
2、路由器收到报文后,连续发送两个IGMP特定组查询报文(间隔1秒),以确认组内是否有其他成员
3、如果组内有其他成员,会继续向该网段发送组播包,否则路由器在IGMP路由表中删除该组播组

从输入网址到网页显示

一、解析URL

浏览器会将URL解析为协议+web服务器名称+文件路径名,比如
,协议就是HTTPS,服务器名称就是www.bilibili,路径名就是/video/BV1SB4y1K77A

二、HTTP请求

根据解析内容来生成HTTP请求报文,如果是请求资源就用GET方法,如果需要递交信息就用POST方法

三、DNS查询IP地址

发送之前肯定要确定接收方的IP地址,这时候就需要访问DNS服务器

四、协议栈

HTTPS属于应用层协议,不能直接发送数据包,需要协议栈的指导。

如果有多个网卡,就有路由表决定由哪个网卡发送数据包。

五、MAC

在IP头部前加上MAC头部来实现,获取MAC地址的时候就需要ARP协议。

六、网卡

在数据包开头加上包头和起始帧分解符,在末尾加上帧校验序列(FCS),最后将二进制数字电平转换成真实的电信号。

七、交换机

交换机把电信号转换为数字信号,然后通过FCS校验错误,如果没有出错就放入缓冲区。交换机本身不核对接收方MAC地址,只会记录数据包的接收方MAC地址。
此后数据包正式离开子网,走向公网。

八、路由器

与交换机类似,都是通过查表判断包转发的目标,但路由器各个端口都具有MAC地址和IP地址。
接收数据包时,路由器会把电信号转换为数字信号,然后通过FCS进行错误校验,然后检查包的接收MAC地址是不是自己,如果不是则会丢弃。路由器不断地把数据包发送到另一路由器,直到访问到目标主机的路由器(路由表的网关列为空),然后用ARP协议查询目标主机的MAC地址。

九、服务器解析数据包

服务器接收到数据包后,照着前面得协议栈从下往上反着来拆开数据包,最后得到HTTP请求数据,并进行响应。

更多推荐

IPの总结

本文发布于:2024-03-10 21:12:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1729043.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:IP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!