TCP Protocol 통신과정

강윤경·2022년 6월 26일
0

Network

목록 보기
1/17

3-way Handshake

  • 장치들 사이에 논리적인 접속을 성립하기 위해 사용

  • TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정

  • 양쪽 모두 데이터를 전송할 준비가 되어있다는 것을 보장

    • LISTEN : 서버의 데몬을 떠서 접속 요청을 기다리는 상태
      • 데몬(Daemon) : 멀티태스킹 운영체제에서 데몬은 사용자가 직접적으로 제어하지 않고 백그라운드에서 돌면서 여러 작업을 하는 프로그램 , 사용자의 요청을 기다리고 있다가 요청 발생 시 이에 적절히 대응하는 리스너 역할
    • SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에게 연결을 요청한 상태
    • SYN_RECEVIED : 서버가 원격 클라이언트로부터 접속 요청을 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메세지는 받지 못한 상태
    • ESTABLISHED : 3-way handshaking이 완료된 후 서로 연결된 상태
    • CLOSED : 완전히 종료
  1. 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 클라이언트는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태, 서버는 Wait for Client 상태
  2. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN 플래그가 설정된 패킷을 발송하고 클라이언트 ACK으로 응답하기를 기다린다. 서버는 SYN_RECEIVED 상태가 된다.
  3. 클라이언트는 서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 통신이 가능하게 된다. 서버의 상태는 ESTABLISHED로 바뀐다.

4-way Handshake

  • 세션을 종료하기 위해 수행되는 절차

  • 서버와 클라이언트의 TCP 연결이 해제되며 연결을 위해 사용하였던 리소스 정리

    • FIN-WAIT1, FIN-WAIT2, CLOSE-WAIT : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
    • TIME-WAIT : 연결은 종료되었지만 분실되었을지 모르는 세그먼트를 위해 소켓을 열어두고 있는 상태
    1. 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.
    2. 서버는 확인 메시지를 보내고 자신의 통신이 끝날때까지 기다리는 TIME-WAIT 상태가 된다.
    3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 플래그 전송한다.
    4. 클라이언트는 확인했다는 ACK를 보낸다.

0개의 댓글