TCP 3 way-handshake(SYN, ACK)

반응형

TCP 3 way-handshake

TCP는 서버와 클라이언트 사이간에 동기화하기 위하여 three-way handshake를 사용한다. TCP 3 Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.


※그림 출처 : https://hpbn.co/building-blocks-of-tcp/


3 way-handshake 과정

client syn : 클라이언트가 데이터를 보내기전 동기화 요청

- tcp 헤더만 가지고 있다.

- tcp 패킷(세그먼트)의 종류는 총 9가지가 있다.

- 서버는 listen 상태이어야 한다.

- 시퀀스 넘버를 생성해서 syn 패킷에 담아 보낸다. (초기시퀀스 넘버는 ISN)

- syn 값은 랜덤하게 정해진다.

- 전송에 사용되는 포트번호는 운영체제에 의해 랜덤하게 지정된다.

- syn의 flag는 2진수 2번째 bit가 1

server syn/ack : 서버가 응답

- 서버도 시퀀스 넘버를 생성해서 syn 패킷에 보낸다.

- 클라이언트에서 받은 시퀀스 넘버에 +1를 해서 ack로 보낸다.

- 전송에 사용되는 포트번호는 서버가 설정 가능하다.


client ack : 클라이언트가 응답

- 서버가 보낸 시퀀스 넘버에 +1를 해서 ack로 보낸다.

- 서버가 보낸 ack 넘버를 시퀀스 넘버로 보낸다.

- ack가 돌아오지 않는다면 데이터가 전달되지 않았다고 판단한 후 다시 보낸다.


ex) 3 way-handshake 과정 tcp 헤더

* seq, ack 부분 port 라고 쓰여져있는데 number라고 이해하시면 될 것 같습니다. 그림을 보면 서버와 클라이언트간에 주고받는

syn, ack가 1씩 증가되는 것을 볼 수 있습니다.


상태

 설명

CLOSED

 닫힌 상태

 LISTEN

 포트가 열린 상태로 연결 요청 대기 중 

SYN_RCV

 SYNC 요청을 받고 상대방의 응답을 기다리는 중

ESTABLISHED

 포트 연결 상태


반응형

'Security > network' 카테고리의 다른 글

IP 헤더(header) 분석  (0) 2017.03.29
IP 주소체계와 클래스 구성  (0) 2017.03.29
TCP / UDP 의 특징 및 헤더(header) 분석  (0) 2017.03.29
네트워크 소켓으로 통신하기  (0) 2017.03.22
VMware 네트워크 설정  (0) 2016.11.07
TAGS.

Comments