术语表/你会看到的进程

rapportd

又称:设备间连接

简要回答

rapportd是你的Apple设备在同一网络上互相发现和通信所用的macOS进程。登录同一Apple账户的Mac、iPhone、iPad和Apple TV之间的连续互通功能,都靠它支撑。

它以你自己的账户运行,与你的其他设备保持着一个低调的连接,让在设备之间传递工作的功能能立刻响应,而不必先去搜索。

和sharingd一样,它通常出现在请求接受传入连接的防火墙提示中,因为你的其他设备需要连接到它。

为什么rapportd会出现在防火墙和活动监视器中

它在本地网络上监听你自己的设备。会逐个进程询问的防火墙,会在它第一次监听时询问,有时在macOS更新后还会再问一次。它由Apple签名,允许它能让连续互通正常工作。

它的CPU和网络占用通常极小。同一账户下的设备越多,或者网络上的设备经常断开又重新加入,它要做的事就越多。

屏蔽它会怎样

依赖设备互相发现的功能会失败或变慢,而且没有明确的错误提示。如果更改防火墙后连续互通不再工作,就在“系统设置”→“网络”→“防火墙”→“选项”中或在你的防火墙App中检查rapportd是否被拒绝了。

如何查看rapportd在做什么

rapportd会在本地网络上广播自己,让你的其他设备能找到它,“终端”可以让你看到这两端的情况。

  1. 打开活动监视器,点按“网络”标签页,然后在搜索栏中输入rapportd。它的“已发送字节”和“已接收字节”通常很小。
  2. 打开“终端”并运行lsof -a -i -n -P -c rapportd。以(LISTEN)结尾的行是它等待连接的端口,是一个随机的大端口号。标有ESTABLISHED的行是与其他设备的连接,通常是你自己的设备。
  3. 运行dns-sd -B _companion-link._tcp local.,列出你网络中广播这项服务的Apple设备。你的Mac会以自己的名称出现。按下Control-C停止。
  4. 要看它自己的消息,运行log stream --predicate 'process == "rapportd"'。按下Control-C停止。

rapportd的正常占用与异常情况

正常:CPU占用接近零,网络流量很小,当你的另一台设备靠近或加入网络时,会短暂活跃一下。

值得检查:连续几小时有稳定的流量,或者连续互通功能不再工作。常见原因有:

  • 访客网络或酒店网络不让设备互相发现,所以rapportd无论尝试多久,你的设备都连不上。
  • 你账户下的某台设备不断断开Wi-Fi又重新加入。
  • 防火墙拒绝了rapportd,你的其他设备无法连接到它。
  • 同一个网络上有很多设备登录了同一个Apple账户。

rapportd在公共Wi-Fi上会暴露什么

rapportd会在你加入的每个网络上广播_companion-link服务,广播中带有你的Mac名称,正如上面的dns-sd命令所显示的。在咖啡馆或酒店的网络上,其他设备虽然用不了这项服务,却能看到这个名称。

如果你的Mac名称里有你的全名,可以在“系统设置”→“通用”→“关于本机”→“名称”中更改。之后rapportd和Mac的其他Bonjour广播都会使用新名称。

常见问题

Mac上的rapportd是什么?

它是让你的Apple设备在同一网络上互相发现和通信的macOS进程,服务于Mac、iPhone、iPad和Apple TV之间的连续互通功能。

应该允许rapportd接受传入连接吗?

如果你在与其他Apple设备之间使用连续互通功能,就应该允许。它是macOS的一部分,由Apple签名。

rapportd是间谍软件吗?

不是。它是Apple的进程,只与登录了你自己Apple账户的设备通信。它位于/usr/libexec/rapportd,处在磁盘上只有Apple更新才能更改的密封区域中。

可以停用rapportd吗?

没有受支持的方法。它由macOS启动,位于磁盘的密封区域中。在防火墙中拒绝它,可以让你的其他设备连不上它,代价是失去需要它的连续互通功能。

rapportd为什么在监听一个端口?

你的其他Apple设备会通过本地网络连接它,所以它为它们保持一个端口开放。这个端口是随机的大端口号,并以_companion-link在本地网络上广播。

相关条目

想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。