计算机网络之网络层

举报
JohnTai 发表于 2018/12/27 16:42:34 2018/12/27
【摘要】 网络层不是端到端的协议,但是每个主机和路由器都运行网络层协议。

网络层不是端到端的协议,但是每个主机和路由器都运行网络层协议。主要作用是从发送主机向接收主机传送数据段。

一、核心功能

  • 转发 将分组从路由器的输入端口转移到合适的输出端口。 每个路由器维护一份转发表,转发表根据数据报携带的地址信息,确定输出端口

  • 路由 确定分组从源到目的经过的路径

  • 连接建立 比如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表示UDP

  • Header 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地址。允许地址重用,即某台主机关机后,当前地址可以分配给其他其他主机。 主要工作过程:

  1. 新到主机广播“DHCP Discovery”

  2. DHCP服务器利用“DHCP offer”进行响应(广播)

  3. 主机请求IP地址:“DHCP request“(广播)

  4. DHCP服务器分配IP地址:”DHCP ack“

五、NAT(网络地址转换)

在内网的一些主机本来已经分配到了本地IP地址(即仅在内网使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。所有离开本地网络去往Internet的数据报的源IP地址需替换为相同的NAT IP地址以及不同的端口号。

  • NAT通过端口号以区分不同的主机。

  • 变更ISP时,无需修改内部网络设备IP地址

  • 内部网络设备对外界网络不可见,即不可直接寻址。

实现:

  1. 替换 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)

  2. 记录 将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表中

  3. 替换 根据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),源主机停止发送数据


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。