인프라/Network
[Network] TCP 3Way Handshake & 4Way Handshake 란?
copcat
2022. 1. 7. 13:44
TCP(Transmission Control Protocol) 은 연결 지향 프로토콜입니다.
또 데이터가 제대로 보내졌나 확인을 해서 신뢰성을 가지고 있습니다.
통신 하는 과정에서 "손흔들기"절차를 통해서 서로 통신하려는 둘 간의 연결을 제대로 확립시켜야 하는데,
이 과정을 "3-Way Handshake"이라 불리고,
연결을 종료하기 위해서도, 3 Way Handshake 처럼, 4 Way Handshaking이라는 과정을 거친다.
TCP 헤더는 다음과 같습니다.
📍 Flags 참고
SYN(Synchronize Sequence Number)
- 연결 설정
Sequence Number를 랜덤으로 설정하여 세션을 연결하는 데 사용하며, 초기에 Sequence Number를 전송한다.
ACK(Acknowledgement)
- 응답 확인
패킷을 받았다는 것을 의미한다.
Acknowledgement Number 필드가 유효한지를 나타낸다.
양단 프로세스가 쉬지 않고 데이터를 전송한다고 가정하면
최초 연결 설정 과정에서 전송되는 첫 번째 세그먼트를 제외한 모든 세그먼트의 ACK 비트는 1이라 생각할 수 있음
FIN(Finish)
- 연결 해제
세션 연결을 종료시킬 때 사용되며, 더 이상 전송할 데이터가 없음을 의미한다.
3-Way Handshake
예시
TCP는 연결 지향적이라는 특성때문에 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
예를 들어, A 프로세스(Client)가 B 프로세스(Server)에 연결을 요청
- A -> B: SYN(최초 연결)
- 접속 요청 프로세스 A가 연결 요청 메시지 전송 (SYN)
- 송신자가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다.
- PORT 상태 - B: LISTEN, A: CLOSED
- B -> A: SYN(최초연결) + ACK(응답)
- 접속 요청을 받은 프로세스 B가 요청을 수락했으며, 접속 요청 프로세스인 A도 포트를 열어 달라는 메시지 전송 (SYN + ACK)
- 수신자는 Acknowledgement Number 필드를 (Sequence Number + 1)로 지정하고, SYN과 ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
- PORT 상태 - B: SYN_RCV, A: CLOSED
- A -> B: ACK
- PORT 상태 - B: SYN_RCV, A: ESTABLISHED
- 마지막으로 접속 요청 프로세스 A가 수락 확인을 보내 연결을 맺음 (ACK)
- 이때, 전송할 데이터가 있으면 이 단계에서 데이터를 전송할 수 있다.
- PORT 상태 - B: ESTABLISHED, A: ESTABLISHED
4Way Handshake
예시
- A(cli)-> B(ser) : FIN+ACK (종료)
- 프로세스 A가 연결 해제 메시지 전송
- server가 받기를 기대하는 마지막 패킷 ACK 넘버를 sequence Number로 지정하고 FIN에는 전 패킷의 응답 ACK 넘버를 지정
- PORT 상태 - A: FIN_WAIT1 , B: CLOSE_WAIT
- B -> A: ACK / ACK,FIN
- 맨처음에 FIN에 대한 응답코드 ACK( FIN sequence Number+1) 을 클라이언트쪽으로 전송
- 그 후 FIN (client에서 준 ACK 을 sequence Number로 지정) 과 ACK(1단계에서 보냈던 sequence Number 지정) 전송
- PORT 상태 - A: FIN_WAIT2, B: LASK_ACK
- A -> B: ACK
- 마지막으로 A가 서버에서 온 FIN 에 대한 응답 ACK(FIN sequence Number +1)을 전송
- 이때, 클라이언트쪽에서 대기하다가 PORT 상태를 CLOSED로 바꾸면서 통신 종료
- PORT 상태 - A:TIME_WAIT....->CLOSED B: CLOSED
반응형