[CS] TCP/IP, 3-way , 4-way hand shake란?

else·2023년 8월 28일
0

CS

목록 보기
2/10

뜻부터 알자!

  • TCP(Transmission Control Protocol)

    • 데이터의 전송을 보장하며 패킷 처리 순서를 일치시키고, 흐름 제어 및 혼잡 제어를 수행하는 연결 지향적인 프로토콜

    • 정확한 전송을 위해 사전에 세션을 수립하는 과정

  • IP(Internet Protocol)

    • 네트워크 간의 라우팅과 비연결성 전송에 이용

    • 데이터 전송을 지키기 위한 규약

3-way handshaking

  • TCP의 연결 수립 과정

  • 세 번의 과정을 통해 내 신호를 받을 수 있는지 확인하는 과정

  1. 클라이언트가 서버에 SYN을 전송

    • SYN : Synchronize Sequence Number의 약자, 랜덤한 숫자로 구성
    • 클라이언트 : SYN_SENT
    • 서버 : LISTEN
  2. 서버가 요청을 받고 다시 SYN + ACK 전송

    • 클라이언트 : SYN_SENT
    • 서버 : SYN_RECEIVED
  3. ACK를 받은 클라이언트가 다시 서버에게 ACK 전송

    • 클라이언트 : ESTABLISHED
    • 서버 : ESTABLISHED

4-way handshaking

  • 세션 종료 과정
  1. 클라이언트가 서버에게 FIN플래그 전송

    • 클라이언트 : FIN_WAIT_1
    • 서버 : ESTABLISHED
  2. 서버가 요청을 받고 클라이언트에게 ACK 전송

    • 서버는 자신의 통신이 끝날때 까지 대기
    • 클라이언트 : FIN_WAIT_2
    • 서버 : CLOSE_WAIT
  3. 서버가 close 준비가 되면 클라이언트에게 FIN 플래그 전송

    • 클라이언트 : FIN_WAIT_2
    • 서버 : LAST-ACK
  4. 클라이언트는 해지준비가 되었다는 ACK를 서버에게 전송

    • 클라이언트 : TIME-WAIT
    • 서버 : LAST-ACK

연결에는 3-way, 해지에는 4-way?

  • 클라이언트가 데이터 전송이 끝나도 서버는 그렇지 않을 수도 있음
  • 그래서 서버는 FIN에 대한 ACK만 보내고(2) 이후 FIN을 보냄(3)
profile
피아노 -> 개발자

0개의 댓글