728x90

TCP 소켓에 존재하는 입출력 버퍼

- 입출력 버퍼는 TCP 소켓 각각에 대해 별도로 존재

- 소켓 생성 시 자동으로 생성됨

- write 시에 바로 수신측의 입력 버퍼로 가는것이 아니라 송신 측의 출력 버퍼에 먼저 저장

- 입력 버퍼가 받을 준비가 됐을 때 출력 버퍼에 담은 데이터를 보내줌

TCP의 내부 동작 원리

- 상대 소켓과의 연결

    -> 접속을 요청하는 쪽에서 SYN 신호 패킷을 보냄

    -> Server에서는 SYN, ACK 신호를 클라이언트 쪽으로 보냄

    -> 클라이언트에서 다시 ACK 신호를 보냄으로써 연결이 이루어짐

    -> sequence number는 패킷 번호

    -> 받은 쪽은 다음에 요청할 패킷 번호를 ack number를 통해 전달

- 데이터 송수신

    -> 연결 후 데이터를 송수신

    -> 데이터를 보낸 패킷에 대해 ack number를 sequence number + 전송된 바이트 크기 + 1로 받음

    -> 전송된 바이트 크기를 포함해서 받음으로써 데이터의 손실 유무도 확인

    -> 패킷 전송 시 타이머가 작동해서 일정 시간 안에 ack 메세지가 오지 않을 경우 재전송

- 연결 종료

    -> 4단계에 거쳐서 연결을 종료

    -> 양쪽 모두 정상적 종료를 위해서 fin 신호를 서로 주고 받음

728x90

+ Recent posts