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 |