3-way Handshake란?
클라이언트와 서버간 데이터를 전송하기 위하여 양쪽 모두 데이터 전송 및 응답을 받을 준비가 되었는지 확인하는 절차이다.
TCP 통신 진행 순서 (1 ~ 3번까지가 3-way Handshake 이다)
STEP 1) Client --> Server : TCP SYN (접속 요청)
STEP 2) Client <-- Server : TCP SYN ACK (접속 요청 수락 응답)
STEP 3) Client --> Server : TCP ACK (접속 요청 수락 수신 응답)
STEP 4) Client --> Server : Data Send (데이터 전송)
STEP 5) Client --> Server : TCP FIN (연결 종료 요청)
STEP 6) Client <-- Server : TCP ACK (연결 종료 수신 응답) // TIME_WAIT 상태
STEP 7) Client <-- Server : TCP FIN (연결 종료 완료)
STEP 8) Client --> Server : TCP ACK (연결 종료 완료 응답)
[STEP 1]
클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보내고, 서버로부터 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
[STEP 2]
서버는 SYN요청을 수신하고, 요청에 대한 ACK 와 SYN flag 가 설정된 응답 패킷을 클라이언트로 발송하고, 클라이언트가 다시 ACK으로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVED 상태가 된다.
[STEP 3]
클라이언트는 서버에게 응답 ACK 패킷을 보낸다.
이후부터 데이터 전송이 이루어 지고, 이때의 서버 상태가 ESTABLISHED 이다.
'개발 (develop)' 카테고리의 다른 글
[macOS] xcode를 이용한 app 공증 받기 (0) | 2020.04.07 |
---|---|
[macOS] app codesign and notarization (앱 디지털 서명 및 공증 받기) (0) | 2020.04.07 |
[linux] 데비안 .deb 패키지 생성 및 삭제 방법 (0) | 2020.03.10 |
[linux] USB로 Mac에 Linux 설치하기 (0) | 2020.03.02 |
[linux] 리눅스(linux), 데비안(debian) 에서 한글 입력 안될때 (0) | 2020.02.17 |