
제가 본 동작을 더 잘 이해하려고 노력 중입니다. TFTP가 실행 중인 서버를 제어하고 이를 끄려고 했습니다. 나는 이미 실행했습니다:
systemctl stop tftp
systemctl stop xinetd
그러나 tftp 서비스를 중지하면 다음과 같이 표시됩니다.
경고: tftp.service를 중지하는 중이지만 tftp.socket을 통해 계속 활성화할 수 있습니다.
ss -lnpu
나중에 나한테 준다
UNCONN 0 0 :::69
:::* users:(("systemd",pid=1,fd=60))
확인했는데 포트가 실제로 여전히 수신 대기 중이지만 PID가 systemd로 나열되어 있습니까? 동작을 이해하지 못합니다. TFTP가 어떻게 systemd에서 직접 실행됩니까?
편집: tftp.service를 종료한 후에도 소켓을 열어 두는 tftp.socket이라는 또 다른 "서비스"가 실행 중이라는 것을 알아냈습니다. 내가 아직도 이해하지 못하는 것은 이것이 왜 systmed pid의 일부로 나타나는지입니다.
답변1
tftp 요청을 처리하기 위해 tftp 서버가 시작됩니다. 해당 요청이 없으므로 systemd
tftp 서버를 시작하지 않습니다. 그러나 포트 69에서 들어오는 요청을 수신하는 프로세스가 있어야 합니다. 그렇지 않으면 해당 요청이 비트버킷에 저장됩니다.
그 과정이 체계화되어 있어요.
포트 69에 대한 요청이 들어오면 systemd는 요청을 처리하기 위해 tftp 서버를 포크오프합니다. TFTP 서버가 완료되면 그냥 죽습니다.