(1) 物理层、数据链路层、网络层设备
- 物理层设备
主要有中继器、T1链路、NIC上的接口等。
- 数据链路层设备
常见的是安装在主机、桥接器、交换机上的NIC。
主机通信需要的二层地址:
- 网络层设备
三层设备网络系统使用的三层地址,IP地址:
- 二层地址映射到三层地址
- ARP表
(2) 直连主机之间数据包的传送
Step 1:
在图1-63中,主机上应用程序的第3层地址为192.168.3.1,要给第3层地址为192.168.3.2的主机发送一些数据。应用程序想使用可靠的连接。应用程序从传输层请求该服务。
传输层选择TCP建立会话。TCP通过传递一个设置了SYN位和目标第3层地址(192.168.3.2)的TCP头给IP层,完成会话的初始化。
Step 2:
IP层将TCP的SYN封装在第2层数据包中,前面加上本地的第3层地址和IP收到来自TCP接收的第3层地址。IP然后将包投到第2层。
Step 3:
第2层需要将第3层的数据包封装成帧。要做到这一点,第2层需要将第3层数据包的目的地址映射成它的MAC地址,需要从ARP程序中请求一个映射。
ARP程序检查其ARP表。在这个例子中,假定该主机并没有与另一台主机通信,所以你在ARP表中看不到任何条目。这就导致第2层不再把包往下传送,直到ARP能够提供映射。
Step 4:
ARP程序生成一个ARP请求,并把它传递到第2层,告诉2层将请求发送到广播地址(所有FS)。第2层将ARP请求封装第2层带广播地址的帧中,帧的源2层地址是本地MAC地址,目录MAC地址是广播地址。
Step 5:
主机192.168.3.2收到帧时,它注意到是广播地址,于是剥掉第2层的封装。
ARP请求的其他部分传给了主机192.168.3.2的ARP程序。如下图:
Step 6:
使用ARP请求中的信息,主机192.168.3.2更新自己的的ARP表。
Step 7:
主机192.168.3.2的ARP程序生成一个应答并将它传给第2层,告诉第2层将应答发给MAC地址是0800:0222:2222。
Step 8:
主机192.168.3.2的第2层将ARP应答封装在第2层的帧中。目的MAC是ARP请求中提供的,源MAC是本地MAC地址。如下图所示:
Step 9:
主机192.168.3.1收到帧,发现目的MAC地址是自己,于是剥掉第2层的封装。如下图:
Step 10:
ARP应答的剩下部分传给ARP程序。如下图:
Step 11:
ARP程序更新ARP表并将映射传给第2层。如下图:
Step 12:
第2层现在可以发送等待中的第2层数据包。
Step 13:
在主机192.168.3.2,帧封沿着协议栈向上传递并去除封装。其余的协议数据单元(PDU)被传递到TCP。
Step 14:
为了响应SYN,TCP程序将一个SYN ACK沿着协议栈向下传递并做封装。
Step 15:
发送端收到ACK以及来自接收端的它必须做出应答的SYN。
Step 16:
发送端发送ACK给接收端。
Step 17:
三次握手完成,TCP就可以通知应用层,会话已建立。
Step 18:
现在应用程序可以基于会话发送数据了,发送数据的过程依赖于TCP对错误的检测。图1-82至1-84展示了这个过程。
数据交换过程一直持续,除非应用程序停止发送数据。
(3) 默认网关的作用
在主机到主机的数据包传送例子中,主机能够使用ARP将目的MAC地址映射到目的IP地址。然而,只有当两台主机在同一网络上,这种选择才是可行的。如果两台主机在不同的网络上,发送主机必须将数据发送到默认网关,默认网关再将数据转发到目的地。