1,OSI七层协议
- 应用层:为计算机用户提供应用接口,也为用户直接提供各种网络服务(相关协议:HTTP, FTP, TFTP, SMTP, SNMP, DNS, TELNET, HTTPS, POP3, DHCP)
- 表示层:数据格式转化,加密等
- 会话层:负责建立、管理和终止表示层实体之间的通信会话
- 传输层:定义传输数据的协议端口号,以及流控和差错校验(相关协议:TCP, UDP,数据包一旦离开网卡即进入网络传输层)
- 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择(相关协议:ICMP,IGMP,IP)
- 数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能
- 物理层:建立、维护、断开物理连接
2,TCP/IP五层协议
应用层, 传输层, 网络层(网际层或IP层), 数据链路层, 物理层
3,网际协议IP(Internet Protocol)
与IP协议配套使用的还有三个协议:
- ARP: Address Resolution Protocol, 地址解析协议
- ICMP: Internet Control Message Protocol, 网际控制报文协议
- IGMP: Internet Group Management Protocol, 网际组管理协议
ICMP, IGMP协议 --> 使用IP协议 --> 使用ARP协议
4,IP地址分为5类,其中A, B, C类都是单播地址
5, 一般来讲,将网络互相连接起来要使用一些中间设备,根据中间设备所在的层次,可以有以下几种:
- 物理层 —> 转发器
- 数据链路层 —> 网桥 或 桥接器
- 网络层 —> 路由器
- 网络层之上 —> 网关
一般也把网络层使用的路由器称为网关
6, 一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的局域网仍为一个网络,因为这些局域网都具有同样的网络号,具有不同网络号的局域网必须使用路由器进行连接
7,地址解析协议ARP
在主机ARP高速缓存中存放一个从 IP地址 到 硬件地址 的映射表,并动态更新。ARP是解决 同一个局域网上 的 主机 或者 路由器 的 IP地址 和 硬件地址 的映射问题。假如主机B刚入网或者主机A刚通电,ARP高速缓存为空
8,IP数据报格式
- 版本:4位,ip协议的版本,IPv4即为4
- 首部长度:4位,可表示的最小值为5(0101),因为首部的固定长度是20字节,可表示最大值15(1111),即15个 32位,即60字节,若IP首部长度不是4字节的整数倍,需要使用填充字段进行填充。
- 区分服务:8位,一般情况不适用
- 总长度:16位,首部+数据部分的长度,单位字节。即最大数据报长度2^16 – 1 = 65535字节。实际这种长度数据报极少遇到,因为数据链路层协议规定了一个数据帧中的数据字段的最大长度,最大传送单元MTU(Maximum Transfer Unit)。最常用的以太网规定其MTU值是1500字节,若IP数据报长度超过,则必须进行分片处理,在进行分片时,总长度指分片后的每一个分片的首部长度与该分片的数据长度的总和。
- 标识:16位,IP软件在存储器中维持一个计数器,每产生一个数据报,计数器+1,并赋值给标识字段,但这个标识不是序号,因为IP是无连接服务,数据报不存在按序接收问题,当数据报长度超过MTU被分片时,这个标识字段被复制到分片的所有数据报的标识字段中,用于最后重装 原来的数据报。
- 标志:3位,目前只有两位有意义:
- 中间位记为DF(Don’t Fragment), 意思: 不能分片,只有当DF=0时才允许分片。
- 最低位记为MF(More Fragment), MF=1,表示后面“还有分片”数据报;MF=0表示这是若干数据报分片中的最后一个
- 片偏移:13位,分片后,当前 片在原分组中的相对位置。也就是相对于用户数据字段的起点,该片从何处开始,片偏移以8个字节为偏移单位,也就是每个分片长度一定是8字节(64位)的整数倍。
- 生存时间:8位,TTL(Time To Live),数据报在网络中的寿命,防止无限制转发。以前单位是秒,每经过一个路由器,就减去在路由器消耗的时间,时间小于1s,则减1,当TTL值为0时,则丢弃。后来随着技术进步,路由器传输时间缩短,则把TTL改为“跳数限制”,即TTL单位不再是秒,而是跳数,表明数据报在互联网中最多可经过的路由器个数。
- 协议:8位,指明该数据报携带的数据是使用的何种协议。常用协议及协议字段如下:
- 首部校验和:16位,通过检验数据报首部来确认数据报是否出差错,只检验数据报首部,不包括数据部分,采用反码算术运算。
- 源地址:32位
- 目的地址:32位
路由表中每一条路由最主要是两个信息:(目的网络地址,下一跳地址)eg:
9,划分子网
-
二级IP地址 := {<网络号>,<主机号>},利用率有时很低,且不够灵活
-
三级IP地址:= {<网络号>,<子网号>,<主机号>},即从之前的主机号借用若干位作为子网号
-
子网掩码:不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位“与”,就可得出网络地址。所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏,如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码,默认子网掩码中 1 的位置和IP地址中网络号字段net-id正好相对应。
使用子网划分后,路由表必须包含(目的网络地址,子网掩码,下一跳地址)三项内容。
10,CIDR(Classless Inter-Domain Routing): 无分类域间路由选择
- 消除了传统A, B, C类地址以及划分子网的概念。使IP地址从三级编址(使用子网掩码)又回到了两级编址。但已是无分类编址。IP地址:={<网络前缀>,<主机号>},记录方式:通过在IP地址后面加上”/”,然后写上网络前缀所占位数
- 把网络前缀都相同的连续IP地址组成一个“CIDR地址块”,我们只需要知道知道一个地址和网络前缀长度,就可知道此地址块最小地址,最大地址以及包含的地址个数
eg: 192.199.170.82/27:
网络前缀 27位,5位主机号,即包含2^5=32个IP地址
最小地址:192.199.170.64,最大地址: 192.199.170.95
算法:27,发生在82上,即01010010,取其前三位,所以最小地址:0100 0000即64,最大地址:0101 1111即95
好处:
- 更加有效的分配IPv4地址空间,可根据需要分配适当大小的CIDR地址块,如果是之前分类地址中,分配地址只能以/8, /16, /24位单位分配,不灵活
- 采用地址聚合方式,降低了路由表中存储的数据量。假如一个地址块拥有64个C类网络,则之前路由表中需要记录64个记录,现在只需要一条记录即可。
使用CIDR时,在查找路由表时可能会得到不止一个匹配结果,使用最长前缀匹配。
由于要寻找最长前缀匹配,查找过程会变得复杂,因此可以使用二叉线索查找。
11,ICMP(Internet Control Message Protocol): 网际控制报文协议
- 允许 主机或路由器 报告差错情况 和 提供有关异常情况的报告。ICMP报文封装在IP数据报中,作为其中的数据部分,属于IP层协议,报文格式:
- ICMP报文由类型来表达它的大概意义,需要传递细小的信息时由代码来分类。需要向对方传送数据的时候用选项数据字段来放置。校验和的计算方法和IP首部校验和的计算方式相同,但ICMP校验和覆盖整个ICMP报文。
- ICMP的消息大致可以分为两类:
一类是差错报文,即通知出错原因的错误消息(如traceroute,Windows中命令是tracert),
一类是查询报文,即用于诊断的查询消息(如ping)。 - 无法交付的UDP用户数据报使用了非法的端口号。
12,虚拟专用网VPN(Virtual Private Network)
- 专用地址:只能用于机构内部通信,不能用于互联网上的主机通信,即 只能用作本地地址 而不能 用作全球地址。在互联网的所有路由器,对 目的地址 是专用地址的数据报一律不进行转发。
特殊的IPv4地址即专用地址块如下:
上面三个地址块分别相当于一个A类网络,16个连续的B类网络,256个连续的C类网络 - 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网称为虚拟专用网VPN。VPN只是在效果上和真正的专用网一样,并非真的专用网。一个机构要构建自己的VPN就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址。
13,网络地址转换NAT(Network Address Translation)
- 需要在专用网连接到互联网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址,所以,使用本地地址的主机如果要和外界通信,都要在NAT路由器上进行地址转换成全球IP地址,才能和互联网连接。通过NAT地址转换映射表转换。
- 为了更有效的利用NAT路由器上的全球IP地址,现常用的NAT转换表把运输层的端口号也利用上。这样就可以使多个拥有本地地址的主机公用一个NAT路由器上的全球IP地址,即转换到不同的端口即可。