网络基础——IP协议

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⽹络基础——IP协议
宽带上⽹是如何实现的
⽹络层是TCP/IP的⼼脏,主要负责终端节点之间的通信,把⽹络报从源主机发送到⽬标主机,所以这种通信也叫点对点的通信。

⽹络层的作⽤
数据链路层只能在同⼀数据链路上的节点通信,⼀旦跨越多个数据链路,就要借助⽹络层,才能通信。

⽹络层可以跨越不同的数据链路,实现两个节点之间的通信。

IP地址
在计算机⽹络通信中,为了识别通信对端,需要⼀个类似于地址的标识码对节点进⾏标识,就好⽐找⼀个需要门牌号,MAC地址⽤于标识同⼀链路的不同计算机,⽽⽹络层⽤于表⽰地址信息的是IP地址。

IP地址⽤于再连接到⽹络的主机中识别出进⾏通信的⽬标地址,因此,在TCP/IP中所有主机或路由器都必须设定⾃⼰的IP地址。

IP是
TCP/IP通信的基⽯。

公⽹IP与私有IP
起初,互联⽹中主机和路由器都配置有⼀个唯⼀的IP地址,随着互联⽹发展,IP地址严重不⾜,于是有了⼀种新的技术,不要求每台计算机或路由器都分配⼀个固定的ip,⽽是在必要的时候职位相应数量的设配分配唯⼀的IP。

包含在这个范围内的IP都属于私有IP,其他成为全局IP,也叫公⽹IP。

公⽹IP地址基本要在整个互联⽹内保持唯⼀,但私有IP不需要,只要在同⼀局域⽹内保持唯⼀即可。

在不同域内出现相同的私有IP不影响使⽤。

家⽤宽带上⽹实现
服务提供商动态的为需要上⽹的⽤户分配公⽹IP,每次重连该IP地址可能发⽣变化。

IP会分配到路由器上,⽽我们通过有线或⽆线连接到路由器的⼿机或电脑的IP地址则是有DHCP动态分配的私有IP地址。

IP地址详解
IP地址格式
IP地址分为ipv4和ipv6两种类型。

本⽂主要基于ipv4来说
ipv4地址有32位的⼆进制数字标识,为了⽅便记录按照⼋位分⼀组,分为四组,转为10进制就是我们现在看到的样⼦。

IP地址⼀般配置在⽹卡上,⼀般⼀块主机⽹卡会配置⼀个IP地址(可多个),⽽路由器会配置两块以上的⽹卡(因为路由器连接的是两个⽹段)
IP地址的组成
IP地址由⽹络地址和主机地址两部分组成。

⽹络地址⽤于标识当前节点所在的局域⽹,主机地址⽤于标识同⼀局域⽹不同的主机。

IP地址分类
按照⽹络层次和规划的⼦⽹⼤⼩,通常将IP地址分为⼀下4类。

A 类地址:⾸位以 0 开头,第 1-8 位是⽹络地址,后24位是主机地址,0.0.0.0~127.0.0.0是 A 类的⽹络地址,可容纳 16777214(224-
2)个主机地址;
B 类地址:前两位以 10 开头,第 1-16 位是⽹络地址,后 16 位是主机地址,128.0.0.0~191.255.0.0是 B 类的⽹络地址,可容纳
65534(216-2) 个主机地址;
C 类地址:前三位以 110 开头,第 1-24 位是⽹络地址,后 8 位是主机地址,192.168.0.0~239.255.255.0是 C 类的⽹络地址,可容纳
254(28-2) 个主机地址;
D 类地址:前四位以 1110 开头,第 1-32 位是⽹络地址,没有主机地址,224.0.0.0~239.255.255.255是 D 类的⽹络地址,常⽤于多播;全部为0标识对应的⽹络地址或IP地址不可获知,都为1的主机地址通常为⼴播地址。

⼦⽹掩码
如果以上⾯的A、B、C三类划分⼦⽹的话,划分出的⼦⽹太少了也存在这极⼤的ip浪费。

通过⼀种叫做⼦⽹掩码的识别码将⼦⽹⽹络地址细分为A、B、C类粒度更⼩的⽹络。

这种⽅式会将原来的A、B、C类主机地址的⼀部分也作为⽹络地址,从⽽让IP地址的⽹络地址和主机地址不再受限于IP地址的分类,将原有的⽹络划分为更多的⼦⽹。

⼦⽹掩码和 IP 地址⼀样也是由 32 位⼆进制数表⽰,格式和 IP 地址类似,只不过其对应 IP 地址⽹络地址部分的位都是 1,主机地址部分的位都是 0,我们将 IP 地址与⼦⽹掩码做按位与运算,就可以计算出该 IP 地址的⽹络地址部分。

⼴播地址和环回地址
⼴播地址⽤于同⼀局域⽹中相互连接的主机间发送数据,IP地址中的主机地址全部设置为1,就成为了⼴播地址。

本地⼴播会被路由器屏蔽,不会到达外部⽹络。

环回地址是在同⼀台计算机内部的程序之间进⾏⽹络通信时所使⽤的默认地址,⼀般使⽤⼀个特殊的 IP 地址127.0.0.1作为环回地址,该地址还有⼀个与之具有相同意义的主机名localhost,使⽤这个 IP 地址或主机名,数据包不会流向⽹络。

路由控制详解
路由控制定义
发送数据包时使⽤地址就是IP地址,仅有IP地址还不⾜以将包发送到⽬标地址,在数据包发送过程中还需要指明下⼀跳路由或主机,以便发往最终⽬标地址。

跳:是⽹络中的⼀个区间(⽹段),在以太⽹等数据链路中使⽤MAC地址传输数据帧,此时的⼀跳指的是源MAC地址到⽬标MAC地址之间传输帧的区间。

也就是说它是主机或路由器⽹卡不经过其他路由器⽽能直接到达的相邻主机或路由器⽹卡之间的⼀个区间。

为了将数据包发送给⽬标主机,所有主机和路由器都维护着⼀张路由控制表,该表记录IP数据在下⼀步应该发送给哪个路由器,IP数据包将根据这个数据表在各个数据链路上传输。

路由控制流程
从源主机10.1.1.30发送⼀个数据包到⽬标主机10.1.2.10,由于10.1.2.10的⽹络地址与源主机10.1.1.0/24的⽹络地址不匹配,所以数据包被转发到路由器,路由器的路由控制表中已经存在10.1.2.0/24的⽹络地址映射,则直接将请求转发到对应的路由器,如果⽬标主机IP地址在该路由器所在的数据链路中,再将数据包发送过去,就完成了将数据包发送到⽬标主机的流程。

IP报⽂头格式
通过IP协议进⾏⽹络通信时,需要在数据前⾯加⼀个IP头信息,包含着基于IP协议进⾏发包控制时所有的必要信息:
版本:⽤于标识IP头部的版本号,ipv4版本号即为4
⾸部长度:IP头部的⼤⼩,单位为4字节
区分服务:⽤来表⽰服务质量,IP协议本⾝是⼀种尽⼒服务的协议,⽆法保证通信质量。

DSCP 字段⽤于在通过 DiffServ 控制⽹络质量的时候设置包的优先级;ECN 则主要⽤于⽹络通信中的显式拥塞通知。

总长度:IP头部与数据部分结合起来的总字节数,最⼤65535
标识:⽤于IP包分⽚重组,不同分⽚标识值不同
标志:表⽰包被分⽚的相关信息
⽚偏移:⽤来标识被分⽚的每⼀个分段相对于原始数据的位置。

以上三个字段⽤于 IP 包的分⽚与重组。

⽣存时间:最初设计为⽹络包的有效时间,实际⽤于可以中转多少个路由器,每经过⼀个路由器,TTL值减1,直到为0则丢弃该包。

协议:标识 IP ⾸部的上⼀层⾸部⾪属于哪个协议,⽐如 TCP 或 UDP
⾸部校验和:只校验数据报的⾸部,不校验数据部分,主要⽤来确保 IP 数据报不被破坏。

源地址:发送端 IP 地址。

⽬标地址:接收端 IP 地址。

可选项:通常在实验或诊断时才使⽤。

填充:在有可选项的情况下,⾸部长度可能不是32位的整数倍,通过向该字段填充0,将其调整为32位整数倍,以⽅便计算机进⾏处理。

数据:传输的具体数据
IP地址是如何⾃动分配的
DHCP的引⼊
DHCP:动态主机配置协议。

DHCP的⼯作原理
使⽤DHCP之前,需要现在局域⽹内假设⼀台DHCP服务器,然后将DHCP所要分配的IP地址设置到服务器上,此外,还需要将⼦⽹掩码、路由控制、DNS服务器地址等信息也设置到服务器上。

新加⼊的机器或设备(DHCP客户端)使⽤IP地址0.0.0.0发送⼀个⼴播包,⽬标IP地址为255.255.255.255(⼴播地址)。

⼴播包⾥包含了该机器的MAC地址,请求DHCP服务器为其分配IP地址。

DHCP服务器收到⼴播后会通知新加⼊的机器可⽤的⽹络设置(通过MAC地址确定唯⼀),包括IP地址,⼦⽹掩码,⽹关等信息,这个通知仍然以⼴播形式发送,因为这个时候新机器还没有分配IP地址,此时DHCP就已经将这个IP地址标记为已分配,其他机器将⽆法获取到这个IP.
新机器拿到这个IP地址后,会给DHCP服务器发送⼀个DHCP请求,表⽰接受这个DHCP服务器分配的IP地址,此时还是使⽤⼴播
包,DHCP服务器收到请求后,会返回给新机器⼀个DHCP ACK消息包,新机器收到消息后,有操作系统完成IP地址分配。

当新机器离开这个⽹段时,会发送 DHCP 解除包让这个 IP 地址回到 DHCP IP 地址池,以便其他新接⼊设备使⽤。

之所以分成两个阶段,是因为当有多台 DHCP 服务器时,新机器只会选中其中⼀个服务器分配的 IP 地址,⼀般是最先到达的那个,客户端发起第⼆次⼴播请求,还会告知其他服务器,我已经选择了某⼀台 DHCP 服务器分配的地址,其他服务器分配的 IP 地址可以回收给其他客户端使⽤。

域名与IP地址是如何映射的
DNS服务器
以为例其中 qq表⽰固有域名,com表⽰顶级域名,固有域名和顶级域名通过.分隔,v称作⼆级域名。

域名⼀般通过在域名服务商那⾥注册获取,然后域名与IP地址的映射也是在域名服务商那⾥完成。

映射之后,就可以通过域名与对应的主机通信了。

DNS服务器指的是管理域名的主机或软件,它可以管理所在分层的域名信息:
根DNS服务器:返回顶级域DNS服务器的IP地址
顶级域DNS服务器:返回权威DNS服务器的IP地址
权威DNS服务器返回固有域名对应主机的IP地址
每⼀个分层都设有 DNS 服务器,各层 DNS 服务器都了解该层以下分层中所有 DNS 服务器的 IP 地址,所有 DNS 服务器⼜都了解根 DNS 服务器的 IP 地址,以便在当前分层找不到映射的 IP 地址时,跳转到根 DNS 服务器从上往下继续查找。

DNS查询原理
1. ⽤户在浏览器中输⼊访问百度⾸页,计算机会先从本地hosts⽂件或 DNS 缓存解析器中查询有⽆相应的 IP 地址映射记
录,如果有的话直接返回,否则进⼊下⼀步;
2. 将域名发给本地 DNS 服务器(通过 DHCP 配置,⼀般由宽带运营商⾃动分配)进⾏查询,如果缓存中有记录则返回对应 IP 地址,否
则进⼊下⼀步;
3. 将域名发给根 DNS 服务器进⾏查询,根 DNS 服务器不会直接解析域名,但是会返回查询域名对应顶级域名 DNS 服务器的 IP 地址,
⽐如这⾥是.com;
4. 然后本地 DNS 服务器会到.com顶级域名服务器查询,顶级域 DNS 服务器会根据查询域名返回对应的权威 DNS 服务器的
IP 地址;
5. 接下来,本地 DNS 服务器根据返回的权威 DNS 服务器的 IP 地址去对应的服务器(域名解析出处)进⾏查询,这⼀次就可以获取到
域名对应的 IP 地址了,拿到这个 IP 地址,就可以将其返回给对应的计算机。

IP地址与MAC地址是如何映射的
ARP的引⼊
在数据链路底层节点通信是根据MAC地址来的。

只有知道每个IP地址对应的MAC地址才能把数据包发送给⽬标主机。

通过IP地址获取MAC 地址就需要借助ARP,ARP是⼀种地址解析协议。

以⽬标IP为条件,来定位下⼀个应该接收数据包的⽹络设备的MAC地址,如果MAC地址
不存在,意味着⽬标主机不在该⽹段内,接着通过ARP查找下⼀跳路由器的MAC地址。

ARP的⼯作原理
主机A为了获取主机B的MAC地址,⾸先通过⼴播发送⼀个ARP请求包,这个请求包中包含了B主机的IP地址,由于⼴播会被同⼀数据链路上的所有主机和路由器接收,因此ARP的请求包会被这个链路上的所有主机和路由器进⾏解析,如果ARP请求包中的⽬标IP与⾃⼰IP地址⼀样,则将⾃⼰的MAC地址塞⼊ARP响应包返回给主机A,有了IP地址和MAC地址就可以完成链路内的IP通信。

接收ARP请求的主机也可以从ARP请求包获取发送端主机的MAC地址。

IP地址与MAC地址对⽐
整个互联⽹就是通过路由器将⼀个个⽹段连接起来的。

同⼀⽹段内通过MAC地址即可通信,但是跨⽹段的通信需要通过IP地址。

ping的底层⼯作原理
ping与ICMP
ping是基于ICMP进⾏⼯作的,ICMP——互联⽹控制报⽂协议。

ICMP的主要功能包括,确认IP包是否成功发送到⽬标地址,通知在发送过程中IP包被废弃的原因,改善⽹络设置。

ICMP报⽂类型
ping⼯作原理
ping命令执⾏的时候,源主机⾸先会构建⼀个 ICMP 请求数据包,ICMP 数据包内包含多个字段。

最重要的是两个,第⼀个是类型字段,对于请求数据包⽽⾔该字段为8;另外⼀个是顺序号,主要⽤于区分连续ping的时候发出的多个数据包。

每发出⼀个请求数据包,顺序号会⾃动加1。

然后,由 ICMP 协议将这个数据包连同地址220.181.57.216⼀起交给 IP 层。

IP 层将以220.181.57.216作为⽬的地址,本机 IP 地址作为源地址,加上⼀些其他控制信息,构建⼀个 IP 数据包。

接下来,需要加⼊ MAC 头,最后将它们传送出去。

主机 B 收到数据帧后,先检查它的⽬的 MAC 地址,并和本机的 MAC 地址对⽐,如符合,则接收,否则就丢弃。

接收后检查该数据帧,将IP 数据包从帧中提取出来,交给本机的 IP 层。

同样,IP 层检查后,将有⽤的信息提取后交给 ICMP 协议。

主机 B 会构建⼀个 ICMP 应答包,应答数据包的类型字段为0,顺序号为接收到的请求数据包中的顺序号,然后再发送出去给主机 A。

在规定的时候间内,源主机如果没有接到 ICMP 的应答包,则说明⽬标主机不可达(类型3);如果接收到了 ICMP 应答包,则说明⽬标主机可达。

为了安全起见,某些机器和设备是禁⽌被ping的,所以,ping不通并不意味着⼀定是⽹络不通,对于禁⽌ping命令的主机,需要通过telnet命令测试是否可以连接。

通过NAT技术实现公⽹IP与私有IP地址间的转换
在 NAT 路由器(即本地⽹络与外部⽹络连接的路由器)内部有⼀张⾃动⽣成的⽤来转换地址的表,当10.0.0.10(私有IP)向
163.221.120.9(公⽹IP)发送第⼀个包时⽣成这张表,并按照表中的映射关系进⾏处理。

当私有⽹络内的多台机器同时都要与外部通信进⾏通信时,仅仅转换 IP 地址,⼈们不免担⼼公⽹ IP 地址是否够⽤,这时采⽤包含端⼝号⼀起转换的⽅式可以解决这个问题:
即在通过 NAT 路由器做 IP 地址转化时将本地⽹络中不同主机转化为同⼀个 IP 地址,⽽将端⼝号转化为不同端⼝号,以⽰区别。

这⾥需要注意的是,在使⽤ TCP 或 UDP 的通信中,只有当⽬标地址、源地址、⽬标端⼝、源端⼝以及协议类型(TCP或UDP)五项内容都⼀致时才被认为是同⼀个通信连接。

相关文档
最新文档