- 网卡都有MAC地址,具有全球唯一;
- 网卡工作在链路层,必须知道对方的MAC地址才可以发送数据;
- 网卡的三个职责
- 接收网络上的数据包,通过和自己本身的物理地址相比较决定是否为本机应接信息;
- 当网卡收到一个正确的帧时,它就使用中断来通知该计算机并交付给协议栈中的网络层;
- 当计算机要发送一个IP数据包时,它就由协议栈向下交给网卡组装成帧后发送到局域网。
- 交换机通过学习的方式维护端口号(不是ip、port的端口号)和MAC地址的对应关系;
- 每一个主机的另一端都连着一个交换机,一个交换机可供多台主机连接;
- 比如主机需要向网关路由器发送一个链路层的数据包,这个数据包先由交换机拦下,通过MAC地址表获得端口号,再发送到对应的网关路由器;
- 交换机有很多端口(不是ip、port的那个端口),每个端口都可以连接主机和路由器(一般一个,但可以多个)。之间的对应关系记录在MAC表中,比如端口1对应主机1,端口2对应路由器A。
- 交换机用于连接局域网,数据包在局域网内网的数据转发;
- 路由器用于连接局域网和外网,数据包可以在不同局域网内转发。
-
本机发送DHCP发现报文,目的MAC是FF:FF:FF:FF:FF:FF ;
-
交换机看到FF:FF:FF:FF:FF:FF 立刻转发给所有连到交换机的设备;
-
在该局域网中的DHCP服务器收到报文后会返回一个可用的ip地址
- 可能会有多个DHCP服务器返回多个ip地址,此时主机需要给出确定报文,确定具体使用哪个ip;
- 对应的DHCP会将 ip地址、网关路由器ip、DNS服务器的IP地址 返回。(当已经被分配ip之后,DHCP会告诉你如何和外界取得联系,比如网关路由器和DNS服务器的ip)
- DNS服务器不在局域网的范围内,需要转给网路由器,由网关路由器转给DNS服务器;
- 要想转给网关路由器,需要网关路由器的MAC地址,但此时知道网关路由器的ip地址,因此使用ARP(广播查询) 来获得ip对应的MAC;
- 获得MAC地址后,将DNS查询报文转发给网关路由器,最红会返回域名对应的ip。
发送数据之前需要已知本机和目的服务器的ip和端口以及网关路由器的MAC地址。
- 若本机ip未知,使用DHCP获得;
- 若目的服务器的ip未知,使用DNS服务器获取;
- 若网关路由器的MAC地址位置,由于在获取ip的时候已经知晓了网关路由器的ip地址,此时可通过ARP获得网关路由器的MAC地址。
数据发送的流程如下。
6. 网关&DNS&DHCP


