1、发送数据的过程
五层网络结构数据发送的过程如下所示:
数据发送的请求由应用层进行发起,之后在传输层将应用层需要发送的数据进行数据报的分片操作(收到最大传输单元MTU的限制),之后网络层将每一份数据报添加源主机地址IP1和目的主机地址IP3,进行数据报的初步封装;之后数据链路层将网络层封装的数据报加头-源主机的物理地址MAC1和目的主机的物理地址MAC3,加尾-FCS(帧检验序列),将数据报进行二次封装;最后由物理层将封装好的数据报进行传输。
上述过程中,当源主机和目的主机在同一个局域网内部,则数据链路层在封装数据报的过程中,由于不知道目的主机的物理地址MAC3,所以需要借助ARP协议获取到MAC3,获取方式是通过广播ARP进行请求分组,之后目的主机采用单播ARP相应分组,返回给源主机MAC3。其中ARP高速缓存中有局域网内部的IP地址和MAC地址的映射关系。
若源主机和目的主机不在同一个局域网范围之内,则源主机的“下一跳”将以局域网的默认网关为“目的地”,和上述叙述一样通过ARP协议获得默认网关的物理地址MAC6,之后首先将数据传送到默认网关。之后数据在路由器之间进行转发,直到数据转发到目的主机所在的局域网的路由器,之后MAC9对应的路由器会通过ARP协议获得目的主机的物理地址MAC5,之后成功将数据发送到目的主机。
2、ARP协议
由于在实际网络的链路上传送数据时,最终必须使用MAC地址,ARP协议就是用于完成主机或路由器IP地址到MAC地址映射,即解决下一跳走哪的问题。
2.1 ARP协议使用过程
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一个局域网中所有主机都能收到该请求。目的主机收到请求之后就会向源主机单播衣蛾ARP相应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。
2.2 ARP协议4种典型情况
1) 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
2) 主机A发给另一个网络的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
3) 路由器发给本网络的主机A:用ARP协议找到主机A的硬件地址;
4) 路由器发给另一个网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。
3、DHCP协议
动态主机配置协议DHCP是应用层的协议,使用客户/服务器方式,客户端和服务端通过广播的方式进行交互,基于UDP。
DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址,子网掩码,默认网关,DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址重租。
3.1 DHCP使用过程
1) 主机广播DHCP发现报文,
2) DHCP服务器广播DHCP提供报文
3) 主机广播DHCP请求报文,没有被主机接受的DHCP服务器撤回刚刚提供的IP地址等配置
4) DHCP服务器广播DHCP确认报文
4、ICMP协议
TCP/IP协议栈示意图如下所示:
ICMP的作用是为了更有效地转发IP数据报和提高交付成功的机会… …
ICMP协议支持主机或路由器:差错(或异常)报告,网络探询,通过发送特定的ICMP报文。ICMP报文的格式如下所示:
4.1 ICMP差错报告报文
1) 终点不可达:当路由器或者主机不能交付数据报时,就向源点发送终点不可达报文;无法交付
2) 源点抑制:当路由器或者主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点直到应当把数据报的发送速率放慢;拥塞丢数据
3) 时间超过:当路由器收到生存时间TTL=0的数据报时,除了丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先时间内不能收到一个数据报的全部数据片时,就把已经收到的数据报片都丢弃,并向源点发送时间超过报文;TTL=0
4)参数问题: 当路由器或者目的主机收到的数据报首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文;首部字段有问题
5) 改变路由(重定向):当路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器-可以通过更好的路由。值得更好的路由
ICMP差错报告报文数据字段的格式如下所示:
不应发送ICMP差错报文的情况
1) 对ICMP差错报告报文不再发送ICMP差错报告报文;
2) 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文;
3) 对具有组播地址的数据报都不发送ICMP差错报告报文;
4) 对具有特殊地质(如127.0.0.0或者0.0.0.0)的数据报不发送ICMP差错报告报文
4.2 ICMP询问报文
1) 回送请求和回答报文:主机或者路由器向特定主机发出的询问,收到此报文的主机必须给源主机或者路由器发送你ICMP回送回答报文。测试目的站是否可达以及了解其相关状态;
2) 时间戳请求和回答报文:请某个主机或者路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
5、ICMP的应用
Ping:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。
Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。