计算机网络之网络层
网络层不是端到端的协议,但是每个主机和路由器都运行网络层协议。主要作用是从发送主机向接收主机传送数据段。
一、核心功能
转发 将分组从路由器的输入端口转移到合适的输出端口。 每个路由器维护一份转发表,转发表根据数据报携带的地址信息,确定输出端口
路由 确定分组从源到目的经过的路径
连接建立 比如ATM网络。Packet在传输之前两端主机需要先建立虚拟/逻辑连接,中途经过的设备都需要记录并参与连接的建立。连接建立后,后续的Packet都沿着该路径传输
二、服务模型
无连接服务(数据报网络 datagram network) 不事先为系列packet的传输确定传输路径,每个packet独立确定传输路径
连接服务(虚电路网络 virtual-circuit network) 首先为系列packet的传输确定从源到目的经过的路径建立连接,然后沿着该路径传输packet,传输结束后拆除连接。
计算机网络的初衷是在计算机之间进行数据交换,并没有严格的时间要求。由于链路类型众多,特点、性能各异,所以统一服务是比较困难的。因此Internet网络采用数据报网络(datagram network)。 而ATM网络由电话网络演变而来,核心业务是实时对话,对时间、可靠性要求高。因此选择虚电路网络。
三、IP协议
IP数据报结构
主要包括两部分:首部、数据(TCP、UDP段)。
Version
: 4bit,如果值是4表示IPv4,如果值是6则表示IPv6.IP Header Length
: 4bit,表示整个首部的长度,以4字节为单位,比如值是5则表示首部长度为20(5*4)字节Type of Service
: 8bit,指示期望获得哪种类型的服务,98年改名为区分服务,只在网络提供区分服务时使用。一般情况下不使用,00H。Total Length
:16bit,IP分组的总长度(首部+数据),以字节为单位。最大IP分组总长度:65535B,最小的IP分组首部:20B,IP分组可以封装的最大数据:65535-20=65515Bytes。Identification
:16bit,该字段和Flag、Fragment Offset组合使用,对较大的上层数据包进行分片操作,路由器将一个包分段后,所有小包被标记相同的值,以便目的主机能够区分。Flags
:3bit,该字段第一位不使用,第二位是DF(Don't Fragment)位,DF设为1时表明路由器不能对该数据包分片,第三位是MF(More Fragment)位,MF=1,表示该分组是大的分组分片后的其中一片,MF=0表示该分组是分片后的最后一片(或未分片)。Fragment Offset
:13bit,表示该IP分组在该组分片中的位置,接收端根据该字段组装还原IP分组。以8字节为单位。Time to Live
:8bit,IP分组在网络中可以通过的路由器数(跳步数),路由器转发一次分组,TTL减1,如果TTL=0,路由器则丢弃该IP分组,并向源主机发送ICMP报文。Protocol
:8bit,指示IP分组封装的是哪个协议的数据包,6表示TCP,17表示UDPHeader Checksum
:实现对IP分组首部的差错检测,和UDP校验和一样,采用反码算数运算求和,和的反码作为首部校验和字段。逐跳计算、逐跳校验。Source IP Address、Destination IP Address
:各32bit,分别标识发送分组的源主机和接收分组的目的主机的IP地址Options
:长度不确定,可以携带安全、源选路径、时间戳和路由记录等,实际中很少使用。Padding
:补齐整个首部,符合32位对齐,范围在0-3B之间,即保证首部长度是4字节的倍数。
分片过程:
假设原IP分组总长度为L,待转发链路的MTU为M,若L>M,且DF=0,则可以分片。分片时每个分片的标识复制原IP分组的标识。 通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片。 一个最大分片可封装的数据应该是8的倍数,因此,一个最大分片可封装的数据为: ⎣(MTU-20)/8⎦*8, 需要的总片数为:⎡(L-20)/d⎤
IP编址
IPv4:32bit,以点分十进制显示。 IP地址分为两部分:NetID(网络号)、HostID(主机号),具有相同网络号的接口构成IP子网,同一个子网内的设备不跨越路由器,就可以彼此物理联通。
IP子网划分
从主机号“借用”若干bit作为子网号(SubID)。
CIDR
消除传统的A类、B类、C类地址界限。 NetID+SubID统称为任意长度的Prefix。融合子网地址和子网掩码,方便子网划分。地址格式:a.b.c.d/x,x为前缀的长度。 子网201.2.3.64,255.255.255.192,可以转化为201.2.3.64/26。 CIDR能提高IPv4地址空间分配效率,提高路由效率,将多个子网聚合为一个较大的子网,也就路由聚合
,层级编址使得路由信息通告更高效。
四、DHCP协议
动态主机配置协议,(Dynamic Host Configure Protocol),能从服务器动态获取:IP地址、子网掩码、默认网关地址、DNS服务器名称与IP地址。允许地址重用,即某台主机关机后,当前地址可以分配给其他其他主机。 主要工作过程:
新到主机广播“DHCP Discovery”
DHCP服务器利用“DHCP offer”进行响应(广播)
主机请求IP地址:“DHCP request“(广播)
DHCP服务器分配IP地址:”DHCP ack“
五、NAT(网络地址转换)
在内网的一些主机本来已经分配到了本地IP地址(即仅在内网使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。所有离开本地网络去往Internet的数据报的源IP地址需替换为相同的NAT IP地址以及不同的端口号。
NAT通过端口号以区分不同的主机。
变更ISP时,无需修改内部网络设备IP地址
内部网络设备对外界网络不可见,即不可直接寻址。
实现:
替换 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
记录 将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表中
替换 根据NAT转换表,利用(源IP地址,源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址,新端口号)
六、ICMP(互联网控制报文协议)
主要是IP数据报出错的时候会向源主机发送ICMP报文,主要功能包括:差错报告、网络探询。 两类ICMP报文:
5种差错报告报文:1.目的不可达,2.源抑制,3.超时、超期(比如TTL),4.参数问题,5.重定向
2种网络探询报文:1. 回声(Echo)请求与应答(Reply)报文 2. 时间戳请求与应答报文。
特殊情况,几种不发送ICMP差错报告报文的特殊情况
对ICMP差错报告不再发送ICMP差错报告报文
除第一个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
对所有多播IP数据报均不发送ICMP差错报告报文
对具有特殊地址(如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文
Traceroute
源主机向目的主机发送一系列UDP数据报,目的端口号为不可能使用的端口号,第1组IP数据报TTL=1,第2组IP数据报TTL=2等
当第N组数据报到达第N个路由器时,路由器丢弃数据报并向源主机发送ICMP报文(type=11,code=0),ICMP报文携带路由器名称和IP地址信息
当ICMP报文返回到源主机时,记录RTT。
UDP数据报最终到达目的主机后,目的主机回返回目的端口不可达的ICMP报文(type=3,code=3),源主机停止发送数据
- 点赞
- 收藏
- 关注作者
评论(0)