새소식

반응형
Computer Science

[CS] TCP 3-way handshake와 4-way handshake

  • -
728x90
반응형

review


OSI 7계층

- Application
- Presentation
- Session
- Transport => 인터넷 transport 프로토콜: TCP, UDP
- Network
- Link
- Physical


TCP ?

- Transmission Control Protocol
- UDP와 비교했을때,
- 신뢰성 높음
- 속도 느림
- ex) 메일, 웹 브라우징

 


TCP 3-way handshake와 4-way handshake

TCP는 `정확성/신뢰성` 있는 전송을 보장해줘야함

→ 그를 위한 과정: handshaking
1. Establishing Connection (접속 성립) : 3-way
2. Closing Connection (접속 종료) : 4-way


3-way handshake

접속 성립을 위한 과정

 


과정

  • Step 1.
    • A: SYN 패킷 전송 후, 응답(=SYN/ACK)을 기다리는 상태(=SYN_SENT)
  • Step 2.
    • B: SYN요청을 받은 후, A의 요청을 수락한다는 ACK를 A에게 보내줌. 
    • 이때 SYN flag = 1
    • B는 A의 응답을 기다리는 SYN_RECEVIED 상태
  • Step 3.
    • A는 B의 ACK를 잘 받았다는 의미로 B에게 ACK를 보내줌
    • 그 ACK를 B가 잘 받았을 때부터 `ESTABLISHED` 상태!
이러한 과정이 3-way handshake

 

용어 참고)
- ACK: Acknowledgement. 내가 보낸 패킷을 상대방이 잘 받았는지 확인하는 용도. 헤더의 ACK Number 필드로 ACK 파악.
- SYN: Synchronize sequence numbers. 연결을 요청하겠다!의 의미로, 헤더의 SYN 필드 값을 1로 해서 보냄

 


4-way handshake

세션을 종료하기 위한 과정

 


과정

  • Step 1.
    • A: 연결을 종료하겠다는 의미로, B에게 FIN 패킷 전송
    • 이때 A의 상태 : FIN_WAIT
  • Step 2.
    • B: FIN 패킷 수신. 알겠다는 의미로 A에게 ACK 패킷 전송 
    • 이때 B의 상태: CLOSE_WAIT
    • B가 하던중인 통신 이어서 마저함. 그 통신이 끝날때까지 기다림.
  • Step 3.
    • B가 하던일 다 끝나서 연결을 종료할 준비가 되었다면, A에게 FIN 패킷 전송.
    • 이때 B의 상태: LAST_ACK
  • Step 4.
    • A는 B가 보낸 FIN 수신. 알겠다는 의미로 B에게 ACK 전송.
    • 이때 A의 상태: TIMED_WAIT
이러한 과정이 4-way handshake

 

용어 참고)
- FIN: Finish 
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.