TCP/IP体系
1. 网际协议IP
IP 协议有两个基本任务:提供无连接的和最有效的数据包传送;提供数据包的分割及重组以支持不同最大传输单元大小的数据连接。对于互联网络中 IP 数据报的路由选择处理,有一套完善的 IP 寻址方式。每一个 IP 地址都有其特定的组成但同时遵循基本格式。IP 地址可以进行细分并可用于建立子网地址。
1.1 分类的IP地址
IP地址的五种类型:net-id—网络号;host-id——主机号
(1) 常用的A类、B类和C类地址都由两个字段组成,即:
网络号字段net-id。A类、B类和C类地址的网络号字段分别为1,2和3字节长,在网络号字段的最前面有1—3bit的类别比特,其数值分别规定为0,10和110。
主机号字段host-id。A类、B类和C类地址的主机号字段分别为3,2和1字节长。
- A类地址的左边第一字节值: 1–127,例如 10.237.43.8
- B类地址的左边第一字节值: 128-191,例如 128.37.143.38
- C类地址的左边第一字节值: 192-223,例如 195.71.43.85
(2) D类地址是多播地址,主要留给因特网体系结构研究委员会IAB(Internet Architecture Board)使用。左边第一字节值:224-239,例如 230.138.43.85
(3) E类地址保留在今后使用。左边第一字节值:>=240,例如 243.13.143.185
注意:
给节点分配IP地址时:net-id所在字节(A类地址的左边第一字节,B类地址的左边2字节,C类地址的左边3字节)全0,全1都不可用。host-id全0,全1都不可用。
1.2 IP地址具有的重要特点:
上图中体现的IP地址的特点:
(1)与某个局域网相连接的计算机或路由器的IP地址中的网络号都必须是一样的。
(2)用网桥(它只在链路层工作)互连的局域网仍然是一个局域网。
(3)路由器总是具有两个或两个以上的IP地址。
(4)当两个路由器直接相连时,这一段连线就构成了一种只包含一段线路的特殊“网络”(如图中的Nl,N2和N3)。此IP地址表示单个网络的地址。
1.3 IP地址与硬件地址
- 硬件地址:指物理地址或MAC地址,MAC子层的地址。
- IP地址:网络层地址。
1.4 地址解析协议ARP和逆地址解析协议RARP
(1) 地址解析协议ARP(IP地址—>硬件地址(MAC地址))
- 每一个主机都有一个ARP高速缓存(ARP cache),当主机A欲向本局域网上的主机B发送一个IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址。如有,就将对应硬件地址写入MAC帧。
- 也有可能ARP cache中查不到主机B的IP地址。这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP:
①ARP进程在本局域网上广播发送一个ARP请求分组,上面有主机B的IP地址。
②在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
③主机B在ARP请求分组中见到自己的IP地址,就向主机A发送一个ARP响应分组,上面写入自己的硬件地址。
④主机A收到主机B的ARP响应分组后,就在ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
(2) 逆地址解析协议ARP(MAC地址—>IP地址)
- RARP使只知道自己硬件地址的主机能够知道其IP地址,这种主机往往是无盘工作站。这种无盘工作站一般只要运行其ROM中的文件传送代码,就可用下行装载方法从局域网上其他主机得到所需的操作系统和TCP/IP通信软件,但这些软件中并没有IP地址。无盘工作站要运行ROM中的RARP来获得其IP地址。RARP的工作过程大致如下。
- 为了使RARP能工作,在局域网上至少有一个主机要充当RARP服务器,无盘工作站先向局域网发出RARP请求分组(在格式上与ARP请求分组相似),并在此分组中给出自己的硬件地址。
- RARP服务器有一个事先做好的从无盘工作站的硬件地址到IP地址的映射表,当收到RARP请求分组后,RARP服务器就从这映射表查出该无盘工作站的IP地址。然后写入RARP响应分组,发回给无盘工作站。
1.5 IP数据报的格式
-
首部长度(IHL), 以4字节为单位。
-
总长度(Total Length): 总长度指首部和数据之和的长度,单位为字节。
-
标识(Identification):不同的IP数据报有不同的编号。
-
标志(flag) :
MF(More Fragment),MF=1即表示后面“还有分片”的数据报。
DF(Don‘t Fragment),意思是“不能分片”。 -
片偏移(Fragment Offset):以8个字节为偏移单位。
-
…
例: 在TCP/IP网络中,一个原始IP数据报含有1000字节的数据部分和36字节的报头,该数据报通过最大数据部分长为256字节的网关时,被分解为多个报片分别投递,按照格式(THL,TL,I,DF,MF,F),原始数据报首部的上述值为:(9,1036,26483,0,0,0),试写出各报片的上述格式的6个值。
THL | TL | I | DF | MF | F |
---|---|---|---|---|---|
9 | 292 | 26483 | 0 | 1 | 0 |
9 | 292 | 25483 | 0 | 1 | 32 |
9 | 292 | 25483 | 0 | 1 | 64 |
9 | 268 | 25483 | 0 | 0 | 96 |
1.6 IP层转发分组的流程
(1) 从数据报的首部提取目的站的IP地址D,得出目的网络地址为N。
(2) 若N就是与此路由器直接相连的某个网络地址,则直接交付;否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为D的特定主机路由,则传送给相应的下一跳路由器;否则,执行(4)。
(4) 若路由表中有到达网络N的路由,则将数据报传送给路由表中所指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错(通过ICMP报文报错)。
1.7 因特网控制报文协议ICMP
- 因特网控制报文协议ICMP(Internet Control Message Protocol)。
- ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。但ICMP不是高层协议,而是IP层的协议。
2.划分子网
-
IP地址的设计确实不够合理: 例如,某个单位申请到一个B类地址。但该单位只有1万台主机。于是,在一个B类地址中的其余5万5千多个主机号就白白地浪费了。
-
将本单位所属主机划分为若干个子网(subnet),用IP地址中的主机号字段中的前若干个比特作为“子网号字段”,后面剩下的仍为主机号字段。这样做就可在本单位的各子网之间用路由器来互连,从外部看,这个单位仍只有一个网络号。只有当外面的分组进入到本单位范围后,本单位的路由器再根据子网号进行选路,最后找到目的主机。
-
子网掩码(subnet mask): 32bit, “1”对应于网络号和子网号字段,而“0”对应于主机号字段。
-
IP地址的子网掩码: ff.ff.fc.00(即255.255.252.0)