다음 그림은 TCP 기반 서버와 클라이언트 간 소켓 통신을 위한 함수 호출 관계를 나타낸다. (가)~(다)에 들어갈 내용을 바르게 연결한 것은?
해설
TCP handshake 프로토콜은 SYN, ACK 등의 메시지를 주고받으며 진행된다. 본 문제에서는 연결 과정을 추상화하여 request(), listen(), accept(), connect(), close() 등의 함수로 표현하였다. 먼저 서버는 클라이언트측의 요청에 언제든 대응할 수 있도록 listen() 함수를 통해 대기상태로 진입한다. 클라이언트는 연결 요청인 request() 함수를 통해 서버에 연결 요청을 보낸다. 요청을 받은 서버는 accept() 함수를 통해 요청을 받아들이고, 데이터 송수신 상태로 진입한다. 이후에는 서버와 클라이언트 간에 데이터를 주고받으며(=송수신) 로직을 처리한다.