본문 바로가기

자기개발/Linux

TCP 3-Way HandShaking과 4-Way HandShaking

TCP장치들 사이에 논리적인 접속을 성립하기 위해 사용함

TCP/IP 프로토콜을 이용해 데이터 전송 전에 정확한 전송 보장을 위해 상대 컴퓨터와 사전에 세션을 수립하는 과정

Client -> Server : TCP SYN (신호를 보냄)

Client가 Server에 접속을 요청(SYN패킷 전송) Client는 SYN/ACK라는 응답을 기다리며 SYN_SENT라는 상태가 됨

Server -> Client : TCP SYN/ACK (신호를 받고 보냄)

Server가 받고 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송한 뒤에 ACK라는 응답을 기다리며 SYN_RECEIVED라는 상태가 됨

Client -> Server : TCP ACK (신호를 보냄)

Client가 Server에게 ACK패킷을 발송하면 연결이 이루어진다 여기서 ESTABLISHED 상태가 된다.

SYN : Synchronize Sequesnce Numbers

ACK : Acknowlegment

양쪽 모두 데이터 전송 준비가 된 것을 보장한다. (서로 검증)

 

4-Way HandShaking

Clinet -> Server : TCP FIN (신호를 보냄)

Client가 Server에게 종료를 뜻하는 FIN신호를 보낸 후 Client는 FIN-WAIT 상태가 된다.

Server -> Client : TCP ACK (신호를 보냄)

Server가 Client에게 알겠다는 의미로 ACK신호를 보낸다 그리고 Server는 CLOSE_WAIT상태가 된다.

Server -> Client : TCP FIN (신호를 보냄)

Server가 Client에게 종료한다는 의미로 FIN신호를 보낸다 그리고 Server는 LAST-ACK라는 상태가 된다.

Client -> Server : TCP ACK (신호를 보냄)

Client가 Server에게 알겠다는 의미로 ACK를 전송하고 Client는 TIME_WAIT상태가 되었다가 시간이 지나고 CLOSE로 바뀌며 연결이 종료된다.

'자기개발 > Linux' 카테고리의 다른 글

Linux 공부 5일차  (0) 2021.01.30
Linux 공부 4일차  (0) 2021.01.24
Linux 공부 3일차  (0) 2021.01.23
Linux 공부 2일차  (0) 2021.01.22
Linux 공부 1일차  (0) 2021.01.21