TCP 택배가 잘려 도착했다 · 사라진 메시지 경계를 찾아라 · 퀴즈
퀴즈: 사라진 메시지 경계를 찾아라
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
send를 두 번 하면 recv는 몇 번 호출해야 하나요?
- 언제나 한 번이면 두 본문을 받는다
- 받은 바이트와 프레임 상태에 따라 달라진다
- 언제나 두 번이면 경계가 보존된다
- 헤더가 있으면 recv 호출은 필요 없다
UTF-8 문자열의 길이 헤더에는 무엇을 쓰나요?
- 화면에 보이는 글자 수
- 문자열 객체의 메모리 크기
- 헤더와 본문을 합한 길이
- 인코딩한 본문의 바이트 수
완성 프레임 뒤에 다음 헤더 2바이트가 남으면?
- 잔여를 같은 Decoder에 보관한다
- 현재 본문 뒤에 붙여 반환한다
- 다음 호출을 위해 잔여를 버린다
- 다른 연결의 헤더와 합친다
feed 결과 []와 [b""]의 차이는?
- 둘 다 연결이 끊겼다는 의미다
- 둘 다 잘못된 데이터이므로 예외다
- 미완성과 길이 0 메시지 한 개다
- 둘 다 무시해도 순서는 유지된다
헤더 3바이트를 받은 뒤 EOF가 오면?
- 길이 0 본문으로 처리한다
- 미완성 프레임 오류로 처리한다
- 정상 종료이므로 잔여를 버린다
- 0을 보충해서 헤더를 완성한다
파서의 분할 회귀 시험에 적절한 방식은?
- recv가 항상 4바이트 주도록 기대한다
- 로컬에서 한 번 성공하면 마친다
- send 사이에 같은 sleep만 넣는다
- 같은 프레임을 모든 분할점에서 공급한다