[关闭]
@perkyoung 2015-07-08T13:54:42.000000Z 字数 3949 阅读 1539

TCP/IP协议-2

运维


IPv4

网络中的所有设备都需要唯一表示,才能全球通信

引言

IPv4地址的长度是32位的,它唯一的且全球地定义了一台主机或路由器与因特网之间的连接,也就是IP地址是该接口的地址。

分类编址

IP地址诞生之初就使用了分类的概念,这种体系称为分类编址,20世纪90年代中期,无分类编址体系出现,并且比原来的分类编址更有优势。下面先介绍分类编址,也是为了给无非类编址的理解打下基础。

分类

五类地址
分为A,B,C,D,E五类。
A类:0..........;|0-127||||
B类:10.........;|128-191||||
C类:110........;|192-223||||
D类:1110.......;|224-239||||
E类:11110......;|240-255||||
A,B,C类都可以划分为网络标识(net-id)主机表示(host-id),网络id分别占一个字节,两个自己,三个字节,D,E不划分网络号和主机号。后面会说原因。

地址类和地址块

A类地址,使用一个字节来定义网络id,可以有2的7次方个地址块,可以给128个机构使用,实际数目会少,因为有很多地址是被保留的,每个机构却拥有16777216个地址。这类地址一般会给很庞大的机构。同时,大量地址被浪费了。
B类地址,使用两个字节来定义网络id,最左两位是10,还有14位可以利用。2的14次方个机构组织,实际数目会比这个少,因为某些地址是被保留的,每个组织可疑使用65536个地址。这样的机构也不多见。
C类,网络id很多,但是每个网络id只值可以分配256个主机,这个太少了。
D类,只有一个网络表示块,用来多播,以后再说这个。
E类地址仅有一个地址块,为将来使用而保留。

两级编址

因特网是多个网络组成的网络。因特网权威机构分配网络是A,B,C类

三级编址:子网划分

子网划分之前
上图,用的是B类地址,后面的/16表示的是网络标识的长度。可以有2的16次方的主机,却只有一个网络,整个网络通过一个路由器与因特网连接。
划分子网后
上图,网络使用了专用路由器将它划分为四个子网,其他因特网看到的知识一个网络,但是这个网络内部实际上是由四个子网组成的。此时每个子网拥有2的14次方个主机,注意,/16和/18分辨表示的是网络标识长度和子网标识长度。
子网掩码
子网掩码
当一个网络没有子网的时候,使用的是网络掩码,而当我们将一个网络划分为若干个子网后,要为每个子网创建一个子网掩码。一个子网由子网标识主机标识两部分组成。计算子网标识的长度比较简单,就看划分了多少个子网,就可以算出扩展了几位。
子网地址
IP地址:141.14.120.77
掩码: 255.255.192.0 第三个字节为(11000000),也就是延长了两位作为子网地址,120的二进制是01111000,强两位有效,所以子网地址:141.14.64.0

构造超网

把若干个C类地址合并成一个更大的地址
超网掩码

无分类编址

IPv6没有普及,所以涉及出一个临时的解决方案,原来的地址空间不变,但是改变了地址的分配方法,就是在分配地址时,类别的特权被取消,以此补偿地址耗尽问题
todo

特殊地址

保留用作特殊用途的。
全0地址
地址块0.0.0.0/32仅含有一个地址。主机想发送一个ipv4分组,但是又不知道自己的地址的情况下。例如机器刚启动,不知道自己的ipv4地址,需要向引导服务器(DHCP)发送请求,全0作为源地址,受限广播地址作为目的地址
全1地址:受限广播地址
地址块 255.255.255.255/32仅包含一个地址,一个主机,如果想把报文发送给网络中的其他所有主机,就可用这个地址作为报文发送的目的地址。
环回地址
地址块127.0.0.0/8被作为换回地址,这个地址一般用来测试机器上的软件,使用这个地址,分组从来没有离开过机器,知识简单地从协议软件返回,测试ipv4软件,可以用ping 172.0.0.1。另一个用途是利用这个地址,向本机的进程发送报文。
专用地址
不会被全球识别,隔绝与其他网络,或者用于网络地址转换技术的连接(NAT方面的内容会用到)
多播地址
在多播和多播路由器选择协议章节会讲到。todo
直接广播地址,一个地址块的末地址全为1,可作为直接广播地址。

NAT

nat
如上图,具有NAT功能的路由器受用了一个专用地址和一个全球地址。

地址转换

地址转换
所有出去的分组的源地址,被替换为NAT的出口地址,进来的分组的目的地址被替换为内部的专用地址。
出去很容易理解,那进来的分组如何替换呢?因为在这个NAT设备背后有很多的专用地址。
静态NAT,配置好,一个内网对一个外网。
动态NAT,动态的,内网的ip并不是始终对应同一个外网ip,始终是变化的,但是始终也是一对一的
复用端口,因为外部地址有限,如果内部主机过多,则两个主机无法同时访问同一个网站,因为回来的分组无法转换,这时候就用到了端口号,对每一个出去的分组,在转换表中增加端口一项,这样即使访问同一个网站,在转换表中对应的表项也不一样,因为分配的端口号不一样。

IP分组的交付和转发

交付

直接交付
直接交付,就是分组的终点是以太与交付者连接在同一个网络上的主机,或者最后一个路由器与目的主机进行交互。判断是否要直接交付也比较简单,用掩码获取网络地址,如果和目的地址的掩码地址一致,交付就是直接交付,不用查询路由表
间接交付
没在一个物理网络,通过一个个的路由器,最终到达目的地,所以一个分组的交付肯定包括直接交付和最少0次的间接交付

转发

基于目的地址的转发
是一种传统的方式,主机或者路由器要有一张路由表才能进行转发。当主机有分组发送,或者路由器有分组要转发,要用到路由表,但是如果表项过多,效率就会很低。
转发技术:使用一些方法控制管理路由表的规模,以及处理一些安全性的问题。
第一种方法:下一跳方法,传统的方法是在路由表中记录整个路径,下一跳方法仅仅记录下一跳。表中都是目的主机和路由的对应,注意,是目的主机。
特定网络方法:假如目的主机A,B,C,D.按照上一方法,则一个表要有4个表项,如果他们属于同一个网络呢?所以就现在要网络地址对应这个路由,这时候就仅仅需要1个表项了。目的网络与路由的对应,而不是目的主机。这样节省了很多空间。如下图:
特定网络
特定主机方法:差不多是上两种方法的混合,因为有时候管理员想对路由选择多出更多的控制,显示指定到达目的主机的路径。如下图:
特定主机
默认方法:一台主机连接了两个路由器,访问目的网络A时候,只从R1出去,访问其他网络才能用到R2,所以使用默认的R1就行了,每必要把所有的都列出来。
todo

路由器的结构

todo

网际协议版本4(ipv4)

IP是一种不可靠的无连接数据报协议-一种尽最大努力交付的服务。也就是途中可能丢失,损坏,失序或者延迟到达,并且可能给网络带来瘫痪。必须和TCP配合才能说有可靠性。

数据报格式

todo

分片

每个链路层协议都有自己的帧格式,里面有一个字段,MTU(最大字段长度),不同的物理网络协议,MTU不同,以太网是1500字节,FDDI是4352字节,PPP是296字节。
为了使IP协议与物理网络无关,协议设计者让ip数据报最大长度等于65535.超过MTU,直接分片就行了。
时间戳选项,用来记录路由器处理数据报的时间。
todo

地址解析协议(ARP)

每台计算机要有一张表,记录这本地物理网络的逻辑地址和逻辑地址的对应关系。

静态映射

时时需要更新,因为有些机器重启会变化ip地址,或者电脑更换了网卡,这样,静态映射都会改变。定时更新,次开销会影响网络的性能

动态映射

通过发送ARP分组到广播地址,和自己相符的主机会返回一个ARP响应分组。维护一个高速缓存表,效率会更高。
todo

网际控制报文协议

IPv4为了高效,没有差错控制和辅助机制,所以ICMP协议是一个不错的补偿。
ICMP是网络层的协议,但是他的报文并不是直接发送给数据链路层,而是先封装成IP数据报。
ICMP总是把差错报文报告给最初的数据源
主要处理5种类型的错误

查询

除差错报告外,ICMP还能对某些问题进行诊断。
回送请求与回答,检测两个系统之间是否通。
时间戳请求和回答,测试ip数据报在两个机器之间的来回所需要的往返时间。也可疑同步两个机器的时钟。

排错工具

ping
ping
如上图所示,ICMP报文内容是56个字节,加上8个字节的首部,就是64个字节(icmp发送一般还要加上20字节的ip首部),icmp_seq是序列号,ttl是生存时间,表示不能超过62跳。time即使往返时间RTT

traceroute
可以跟踪一个分组从源点到终点的路径。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注