TCP handshake

Junwoo Park·2022년 9월 8일
0

면접질문 정리

목록 보기
2/5
  1. TCP 연결해제 과정에서 왜 time_wait를 하나요? time_wait를 해서 생기는 이점이 있나요?
    :tcp의 마지막 상태로 클라이언트와 미처리된 내용들을 처리하기 위해서 사용합니다. 즉 혹시모를 패킷전송오류를 막기위해서 time_wait이 존재하는것입니다.
    크게 2가지 상황을 방지하기 위해 사용합니다. 지연패킷이 발생해서 다음 연결이 이루어 졌을때 마침 seq까지 동일하다면 데이터 무결성 문제가 발생합니다,

두번째로 마지막 ack가 유실되어 상대가 last-ack상태에 빠지게 된다면 다시 접속을 시도할때 rst를 리턴해 연결이 오류가 나면서 실패합니다. 충분한 시간의 time_wait은 이와같은 오류를 막아줍니다

  1. TCP 연결해제 과정에서 half-close 기법을 사용합니다. 이것이 무엇이며 어떤 목적으로 쓰이나요?
    : half-close는 말그대로 반만 연결을 해제하는것으로 수신은 가능하지만 송신은 불가하거나, 수신이 불가하지만 송신이 가능한 상태를 의미합니다.
    접속종료시 바로 close를 해버린다면 데이터의 유실이 생기게 됩니다. 이때 half-close를 사용하게 된다면 온전하게 데이터를 수신하고 종료할수있어 사용합니다.

  2. TCP 4-Way HandShake에 대해 말씀해주실수있나요?
    : 접속 해제시에 사용되는 과정입니다.클라이언트가 fin을 보내면 서버가 그에 따른 ack를 송신합니다. 이후 서버가 last_ack상태가 되며 클라이언트에 fin신호를 보내고 클라이언트는 수신 이후 해당fin에 대한 ack신호를 보냅니다. ack신호를 받은 서버는 close되고 클라이언트도 time_wait이후 close되며 둘 사이의 연결이 해제됩니다.

profile
배움을 멈추지 않는 개발자, 박준우입니다.

0개의 댓글