分组交换和时延
主机A向同一个网络上的另一个主机B发包时,会通过地址解析协议(Address Resolution Protocol,ARP)获得对方的物理地址,然后把包发给对方。
主机A需要发送一个数据包到主机B,在整个传输流程中,源和目的IP地址是保持不变的(不考虑NAT),源和目的MAC地址是随着具体链路的变化而变化。
传输流程
主机A在本机的路由表中查询匹配主机B的IP的网络号;
如果能够查询到,说明主机B和主机A在同一网段(通常是在同一局域网内),则下一跳即为主机B。主机A在ARP缓存中查找主机B的MAC地址(如没有则先发送ARP广播),然后将数据包封装成帧发送至通信线路上。该帧的源MAC是主机A的MAC地址,目的MAC是主机B的MAC地址。
如果主机A和主机B是网线直连的,那么主机B直接收到主机A发来的帧。
如果主机A和B是通过交换机相连的,交换机的某个端口收到主机A发来的帧,然后根据帧中的目的MAC地址在MAC地址表中查询对应的转发端口。如果找到了,直接从该端口转发出去;如果没找到,则在除了接收到数据包以外的所有端口进行转发(广播)。
如果主机A和B是通过路由器相连的,路由器的某个端口收到主机A发来的帧,其后的处理流程见步骤4。
如果不能查询到,说明主机A和主机B不处于同一网络中,需要通过网关来进行跨网络的通信。主机A会通过默认网关(通常是路由器)来提交报文,即下一跳是路由器。主机A根据网关的IP在自己的ARP缓存中查找对应的MAC地址(如没有则先发送ARP广播),然后将数据包封装成帧发送至通信线路上。该帧的源MAC是主机A的MAC,目的MAC是路由器的MAC。
当网关路由器接收到数据帧时,首先提取包头中的目的MAC地址,在MAC表进行查询。如果找到对应项,则按对应的端口进行转发(这一步实现了与交换机一样的功能);如果没找到对应项,则提取数据包包头中的目的IP。
如果目的IP是自己(这是可能的,比如ping路由器),则交由上层处理。
如果目的IP不是自己,则需要进行转发,在路由表中查询目的IP的转发端口和下一跳IP。若找到了对应的路由表项,则按照路由表项转发;若没找到对应的路由表项,则按照缺省路由进行转发。转发时,源和目的IP地址不变,源MAC地址改为转发端口的MAC地址,目的MAC地址改为下一跳IP的MAC地址。
题目
电路交换和分组交换的比较
要传送的报文共 x ( bit )。从源点到终点共经过 k 段链路,每段链路的传播时延为 d ( s ),数据率为 b ( bit / s )。在电路交换时电路的建立时间为 s ( s )。在分组交换时,分组长度为 p ( bit ),每个分组所必须添加的首部都很短,对分组的发送时延的影响在题中可以不考虑。此外,各节点的排队等待时间也可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?(提示:画一下草图观察 k 段链路共有几个节点。)
分析
1)电路交换
电路交换时需要先建立连接,然后由一方发送数据到另一方。
电路交换时总时延=建立时延+起点的发送时延+在链路中的传播时延。
2)分组交换
分组交换时需要先将报文分为若干个分组,然后发送各分组到链路中,然后通过节点转发到下一个链路,直至节点是终点。
k段链路,共k-1个节点。
分组交换总时延=起点的发送时延+节点的发送时延+在链路中的传播时延
3)列式
电路交换
总时延T1=s(建立时延)+x/b(发送时延)+kd(在链路中传播时延)。
T1=s + x/b + kd
分组交换
总时延T2=(p/b) × (x/p)(发送时延)+kd(传播时延)+(k-1)×(p/b)(节点的发送时延)。
T2= (p/b) × (x/p) + kd + (k-1) × (p/b)
有朋友可能就会问:为什么节点的发送时延只算了一个分组呢?
就像上面所分析的那样,我们应该关注的是最后一个比特,而最后一个比特又在最后一个分组,所以最后一个分组所需的时间,便是总时间。
关于往返时延RTT的问题
引用《计算机网络:自顶向下方法》中的介绍:RTT包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延。(就是不包括分组发送时延)
影响RTT的最终因素是路由器的出口队列的排队长度,网络空闲就为0,网络拥塞时几毫秒、几十毫秒、几百毫秒不等。
RTT=传播时延x2+处理时间(有时可能直接忽略)
原文链接:https://blog.csdn.net/hxkcmp/article/details/48028159
http://t.csdn.cn/OMc9Q