- 1 信号在网线和集线器中传输
- 2 交换机的包转发操作
- 3 路由器的包转发操作
1 信号在网线和集线器中传输
TCP 控制信息也叫 TCP 头部,但从以太网和 IP 传输网络包的角度来看,TCP 头部并不算是“头部”,只能算是“数据”
img1
集线器将信号发送给所有连接在它上面的线路
2 交换机的包转发操作
img2
交换机端口的 MAC 模块不具有 MAC 地址。
交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口
广播地址(broadcast address)是一种特殊的地址,将广播地址设为接收方地址时,包会发送到网络中所有的设备。MAC 地址中的 FF:FF:FF:FF:FF:FF 和 IP 地址中的 255.255.255.255 都是广播地址
交换机的全双工模式可以同时发送和接收信号
img3
3 路由器的包转发操作
路由器包括转发模块和端口模块两部分就可以了。其中转发模块负责判断包的转发目的地,端口模块负责包的收发操作
换句话说,路由器转发模块和端口模块的关系,就相当于协议栈的 IP 模块和网卡之间的关系。因此,大家可以将路由器的转发模块想象成 IP 模块,将端口模块想象成网卡
img4
路由器在转发包时,首先会通过端口将发过来的包接收进来,这一步的工作过程取决于端口对应的通信技术。对于以太网端口来说,就是按照以太网规范进行工作,而无线局域网端口则按照无线局域网的规范工作,总之就是委托端口的硬件将包接收进来。接下来,转发模块会根据接收到的包的 IP 头部中记录的接收方 IP 地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去,也就是转发模块委托端口模块将包发送出去的意思
端口是按照以太网规范接收包的,即当端口的 MAC 地址和包的接收方 MAC 地址一致时,端口才接受这个包,否则就丢弃包
路由器的各个端口都具有 MAC 地址和 IP 地址
交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的,而路由器则是根据 IP 头部中的 IP 地址来判断的
路由器根据“IP 地址”判断转发目标
img5
路由器会忽略主机号,只匹配网络号
路由表的子网掩码列只表示在匹配网络包目标地址时需要对比的比特数量
路由器的端口都具有 MAC 地址,只接收与自身地址匹配的包,遇到不匹配的包则直接丢弃
完成包接收操作之后,路由器就会丢弃包开头的 MAC 头部。MAC 头部的作用就是将包送达路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址。因此,当包到达路由器之后,MAC 头部的任务就完成了,于是 MAC 头部就会被丢弃。
通过路由器转发的网络包,其接收方 MAC 地址为路由器端口的 MAC 地址
如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过 ICMP 消息告知发送方
ICMP:Internet Control Message Protocol,Internet 控制报文协议。当包传输过程中发生错误时,用来发送控制消息
路由器遇到不知道该转发到哪里的包,就会直接丢弃
找不到匹配路由时选择默认路由 路由表中子网掩码为 0.0.0.0 的记录表示“默认路由”
这一行的子网掩码为 0.0.0.0,关键就在这里,子网掩码 0.0.0.0 的意思是网络包接收方 IP 地址和路由表目标地址的匹配中需要匹配的比特数为 0,换句话说,就是根本不需要匹配。只要将子网掩码设置为 0.0.0.0,那么无论任何地址都能匹配到这一条记录,这样就不会发生不知道要转发到哪里的问题了
只要在这一条记录的网关列中填写接入互联网的路由器地址,当匹配不到其他路由时,网络包就会被转发到互联网接入路由器。因此这条记录被称为默认路由,这一行配置的网关地址被称为默认网关。
最大包长度是由各个通信规格定义的,如果包超过了这个最大长度就不符合相应的规格,也就不能传输了,因此输入端口收到的包不会超过最大长度
img6
如果查询标志字段发现不能分片,那么就只能丢弃这个包,并通过 ICMP 消息通知发送方。否则,就可以按照输出端口 MTU 对数据进行依次拆分了。在分片中,TCP 头部及其后面的部分都是可分片的数据,尽管 TCP 头部不属于用户数据,但从 IP 来看也是 TCP 请求传输的数据的一部分。数据被拆分后,每一份数据前面会加上 IP 头部,其大部分内容都和原本的 IP 头部一模一样,但其中有部分字段需要更新,这些字段用于记录分片相关的信息
路由器判断下一个转发目标的方法如下。
. 如果路由表的网关列内容为 IP 地址,则该地址就是下一个转发目标。
. 如果路由表的网关列内容为空,则 IP 头部中的接收方 IP 地址就是下一个转发目标
路由器也会使用 ARP 来查询下一个转发目标的 MAC 地址
给包加上 MAC 头部并发送,从本质上说是将 IP 包装进以太网包的数据部分中,委托以太网去传输这些数据。IP 协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行
img7
从包的转发目标也可以看出路由器和交换机之间的委托关系。IP 并不是委托以太网将包传输到最终目的地,而是传输到下一个路由器
IP(路由器)负责将包发送给通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的
当然,网络并非只有以太网一种,还有无线局域网,以及接入互联网的通信线路,它们和 IP 之间的关系又是什么样的呢?其实只要将以太网替换成无线局域网、互联网线路等通信规格就可以了。也就是说,如果和下一个路由器之间是通过无线局域网连接的,那么就委托无线局域网将包传输过去;如果是通过互联网线路连接的,那么就委托它将包传输过去
IP 本身不负责包的传输,而是委托各种通信技术将包传输到下一个路由器,这样的设计是有重要意义的,即可以根据需要灵活运用各种通信技术,这也是 IP 的最大特点。正是有了这一特点,我们才能够构建出互联网这一规模巨大的网络
IP(路由器)负责将包送达通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。