1 路由器更改的是什么?IP地址/MAC地址?
答:路由器更改的是MAC地址,找到发包口。IP地址是信息传输的目的地,当然不能更改。信息在传递过程中,原IP地址和目标IP地址不能变,变化的是源MAC地址和目的MAC地址(就像一个个车站名)。
2 如何找到MAC地址呢 ?(待扩展)
ARP协议:逻辑同网段才能发动ARP; ARP请求广播,ARP应答单播
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
2.1 免费ARP
一种特殊的 ARP 请求,它并非期待得到 IP 对应的 MAC 地址,而是当主机启动的时候,发送一个 Gratuitous ARP 请求,即请求自己的 IP 地址的 MAC 地址。作用有三种:
1、该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。
2、可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。
3、可用于更新其他主机的 ARP 缓存表。如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。
2.2 代理ARP
当ARP请求目标跨网段时,网关设备收到此ARP请求,会用自己的MAC地址返回给请求者,这便是代理ARP(Proxy ARP)。
最主要的一个优点就是能够在不影响其他router的路由表的情况下在网络上添加一个新的router,这样使得子网的变化对主机是透明的。但是,也有一定的缺点:1.增加了某一网段上ARP流量;2.主机需要更大的ARP table来处理IP地址到MAC地址的映射; 3.安全问题,比如ARP欺骗(spoofing); 4.不会为不使用ARP来解析地址的网络工作;5.不能够概括和推广网络拓扑
3 如何解决IPV4地址不够用的问题?
- 采用无类别编址CIDR,使IP地址的分配更加合理 在变长子网掩码的基础上,提出的一种消除传统ABC类网络划分,因此可以更有效的分配IP地址。子网掩码的概念被 网络前缀 的概念所取缔。
- 采用网络[地址转换](NAT)方法以节省全球IP地址 允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。它可以实现数据伪装、端口转发、负载均衡、失效终结、透明代理等功能。
- 采用具有更大[地址空间]的新版本的IPv6 只有这个才能从根本上解决地址不够用的问题。
4 DNS传输使用的是UDP,那么如何用好UDP呢?
虽然 UDP 速度更快,DNS 协议也确实大面积使用了 UDP,但是由于 UDP 面向报文、只能传输小于 512 字节的特性,DNS 并非只使用了 UDP,具体的 TCP 和 UDP 使用场景如下:
DNS 在域名解析的过程中,会根据 DNS 响应报文的大小选择使用 TCP 还是 UDP。但是一般情况下,返回的 DNS 响应报文都不会超过 512 字节,所以事实上,很多 DNS 服务器进行配置的时候,也仅支持 UDP 查询包;
4.1 发包每次发多少 ?如何避免分片?
互联网上物理链路的最小传输单元 = 576 字节,为了在物理链路上顺利传输,UDP 报文不能超过 576 字节,为此,UDP 报文被限制在 512 字节以内。DNS 由于大面积使用了 UDP,这样一旦 DNS 报文超过 512 字节,基于 UDP 的 DNS 报文就只有抛弃多出来的 64 字节,截短为 512 字节,那么用户得到的 DNS 报文就是不完整的。若客户端事先知道 DNS 响应报文的长度会大于 512 字节,则应当直接使用 TCP 建立连接
4.2 怎么知道是否丢包?
若客户端事先不知道 DNS 响应报文的长度,一般会先使用 UDP 协议发送 DNS 查询报文,若 DNS 服务器发现 DNS 响应报文的长度大于 512 字节,则多出来的部分会被 UDP 抛弃(截断 TrunCation),那么服务器会把这个部分被抛弃的DNS 报文首部中的 TC 标志位置为1,以通知客户端该 DNS 报文已经被截断。客户端收到之后会重新发起一次 TCP 请求,从而使得它将来能够从 DNS 服务器收到完整的响应报文。
4.3 怎么权衡传输效率和质量?
正在思考~~