LabHub
배우기 러닝패스 코스

연결 하나가 느려지자 나머지가 전부 멈췄다 · 먼저 입을 다물었을 뿐인데 답장까지 사라졌다 · 퀴즈

퀴즈: 반쪽 종료와 응답 보존

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 클라이언트가 원고를 보낸 뒤 SHUT_WR만 호출했다. 서버가 EOF를 받은 다음 해야 할 일은?

    1. 서버 소켓을 즉시 닫아 두 방향의 자원을 함께 회수한다
    2. 읽기 관심을 끄고 준비한 답장의 송신을 계속 진행한다
    3. 읽기 관심을 유지해 EOF가 없어질 때까지 기다린다
    4. 새 연결을 받아 이전 소켓의 답장 큐를 그쪽으로 옮긴다
  2. 요청 상한을 정확히 채웠다. 다음 recv의 길이를 0으로 계산하면 무엇이 잘못되는가?

    1. 읽기 준비를 커널이 쓰기 준비로 바꿔 통지한다
    2. TCP가 자동으로 요청 상한을 한 바이트 늘린다
    3. 상대의 FIN 없이도 빈 반환값을 EOF로 오해한다
    4. 송신 큐의 내용이 수신 버퍼 뒤에 자동 연결된다
  3. 답장 4바이트 중 send가 2를 반환하고 다음 호출은 BlockingIOError다. 올바른 상태는?

    1. 남은 2바이트를 보관하고 WRITE 관심을 유지한다
    2. 4바이트 전부를 다시 넣어 응답 누락을 방지한다
    3. 남은 2바이트를 지우고 complete로 종료한다
    4. 수신 EOF를 해제하고 원고를 다시 수신한다
  4. 손님이 제한 시간 직전에 한 바이트씩 보낸다. 생성 시 고정한 총수명 마감의 효과는?

    1. 연결 수 제한이 없어도 전체 메모리 사용을 보장한다
    2. 유휴 시계만 갱신해 응답 완료까지 무기한 보장한다
    3. EOF 이전에만 적용되어 송신 대기는 계속 허용한다
    4. 활동이 있어도 정해진 시각에 해당 연결을 종료한다
  5. 종료 처리에서 finish가 소켓을 직접 닫지 않고 반복문에 회수를 맡기는 이유는?

    1. 선택기가 닫힌 소켓의 송신 버퍼를 대신 비워 주기 때문이다
    2. 종료 사유 표시와 등록 해제·close 순서를 분리하기 위해서다
    3. 소켓 close를 생략해 다음 요청에 같은 FD를 보존하기 위해서다
    4. EOF가 와도 READ 관심을 영구 유지하는 것이 필요하기 때문이다
  6. 서버의 complete 사유가 뜻하는 범위를 가장 정확히 설명한 것은?

    1. 클라이언트 업무 처리와 데이터 영구 저장까지 끝났다
    2. TCP 송신 경로 전체가 앞으로도 오류 없이 유지된다
    3. 로컬 출력 큐가 비었으며 상대의 처리 확인은 별개다
    4. 클라이언트가 서버의 마지막 FIN을 읽었다는 뜻이다