TCP 택배가 잘려 도착했다 · 느린 택배에 시간을 무한정 주지 않는다 · 퀴즈
퀴즈: 느린 택배에 시간을 무한정 주지 않는다
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
본문 길이 0xffffffff라는 헤더를 받으면?
- 허용 상한을 확인하고 즉시 거부한다
- 그 크기의 버퍼부터 할당한다
- 본문이 도착하면 그때 거부한다
- 32비트 값이므로 무조건 승인한다
전체 1초 기한인데 recv마다 1초를 새로 주면?
- 전체 기한이 자동으로 줄어든다
- 짧은 바이트는 자동으로 버려진다
- 조금씩 보내는 상대를 오래 기다릴 수 있다
- 소켓이 한 프레임 뒤 자동 종료된다
경과 시간 계산에 monotonic을 쓰는 이유는?
- UTF-8 길이를 정확히 계산해서
- 벽시계 보정의 역행을 피하려고
- 소켓을 비블로킹으로 바꾸려고
- 서로 다른 서버의 시각을 맞추려고
timeout 복원은 어느 때 필요한가요?
- 정상 수신한 경우에만
- 본문이 빈 경우에만
- 연결을 닫지 않은 경우에만
- 성공과 예외 경로 모두
길이 0 프레임의 본문을 읽는 올바른 동작은?
- recv 없이 b""를 반환한다
- 한 번 더 recv해 다음 바이트를 얻는다
- 항상 None을 반환해 연결을 끝낸다
- EOF가 올 때까지 기다린다
모의 시계 시험과 실제 소켓 시험의 관계는?
- 모의 시험이 실제 연결도 증명한다
- 실제 시험만 있으면 모든 분할이 보장된다
- 시간 계산과 OS 연결을 서로 보완한다
- 두 시험은 같은 사실만 중복 확인한다