본문 바로가기

Network/[TCPIP]

[Network] 3-way handshake이란? (TCP Connection)

반응형

- TCP 프로토콜에서 장치 간 연결을 성립시킬 때 사용하는 기법.

- TCP는 정확하고 안전하게 데이터를 전송한다고 했다.

- 그 안전함의 과정 중 첫 번째 단계이다.

- 클라이언트와 서버가 연결되는 시작 단계.

- 아래 3-way handshake를 통해 정확성을 보장하고, 연결을 성립시킨다.

- 데이터 전송은 정상적인 연결 성립 이후에 발생하겠지?

 

 

1. Client  --->  Server 

TCP SYN

 

2. Server --->  Client

TCP SYN+ACK

 

3. Client  --->  Server

TCP ACK

 

여기서 SYN, ACK와 같은 것들을 제어 플래그(Control Flag) 라고 한다.

(자세한 사항은 추후 포스트로 다룰 예정)

Flag 명 직역 설명
URG Urgent 긴급한 특정 데이터가 긴급하여, 우선순위가 지정되어야 함을 수신측에 알림
ACK Acknowledgement 승인 SYN에 대한 응답
PSH Push 푸시 버퍼가 채워지길 기다리지 않고 바로 수신측에 던짐
RST Reset 초기화 연결 초기화 과정에서 사용된다.
SYN Synchronize 동기화 초기 세션 설정에 사용됨
FIN Finish 세션을 종료시킬 때 사용된다.

 

 

 

 

- 3way handshake는 아래와 같은 Flow 로 진행된다.

- 단순히 listen(), bind(), accept(), connect()만 된다고 생각했던 나는

- 아래를 보고 네트워크에 대해 더 잘 이해할 수 있었다...

 

 

1. Client  --->  Server

TCP SYN

클라이언트 쪽에서 SYN을 보낸다.

자신의 상태를 SYN_SENT로 바꾼다.

대기...

 

2. Server --->  Client

TCP SYN+ACK

서버 쪽에서 SYN을 받는다.

자신의 상태를 SYN_RCVD 로 바꾼다.

클라이언트에게 SYN과 ACK를 보낸다.

 

3. Client  --->  Server

TCP ACK

클라이언트 쪽에서 SYN을 받는다.

자신의 상태를 ESTABLISHED로 바꾼다.

서버에게 ACK를 보낸다.

 

서버 쪽에서 ACK를 받는다.

자신의 상태를 ESTABLISHED로 바꾼다.

 

- 이 방법이 3-way handshake 이다.

- 이를 통해 서버와 클라이언트 간 연결이 성립된다.

- 연결이 종료(Disconnect)되는 방법은

- 4-way handshake다.

- 이는 다음 포스트에 다룰 예정..

반응형

'Network > [TCPIP]' 카테고리의 다른 글

[Network] TCP란?  (0) 2020.11.18