보안세상

TCP 제어플래그, 3way handshake및 4way handshacke 개념도 본문

내 생각

TCP 제어플래그, 3way handshake및 4way handshacke 개념도

똔민 2015. 6. 27. 22:20
반응형

( 1 ) TCP 제어 플래그

| URG | ACK | PSH | RST | SYN | FIN |
각각 1비트로 TCP 세그먼트 필드 안에 CONTROL BIT 또는 FLAG BIT 로 정의 되어 있음.

① URG (Urgent) - 긴급 데이터
Urgent Pointer 유효한 것인지를 나타냄. Urgent Pointer란 전송하는 데이터 중에서 긴급히 전달해야 할 내용이 있을 경우에 사용함.

긴급한 데이터는 다른 데이터에 비해 우선순위가 높아야 함.
ex) Ping 명령어 실행 도중 Ctrl+C 입력

② ACK (Acknowledgement) - 응답
받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냄.(일반적으로 +1 하여 보냄)

ACK의 번호와 응답을 통해 보낸 패킷에 대한 손실을 판단하여 재전송 하거나 다음 패킷을 전송함.

③ PSH (Push) - 밀어넣기
대화형 트래픽(Telnet 등)에 사용되는 것으로 버퍼가 채워지기를 기다리지 않고 데이터를 전달함. 데이터는 버퍼링 없이 바로 위 Layer가 아닌 7 Layer의 응용프로그램으로 바로 전달함.

④ RST (Reset) - 재연결 종료
재설정(Reset)을 하는 과정이며 양방향에서 동시에 일어나는 중단 작업을 말함. 비정상적인 세션 연결 끊기에 해당함.

⑤ SYN (Synchronization) - 연결 요청
세션을 설정하는 데에 사용되며 초기에 시퀀스 번호를 보내게 됨. 시퀀스 번호는 임의적으로 생성하여 보냄.

⑥ FIN (Finish) - 연결 종료
세션을 종료시키는 데에 사용되며 보낸 사람이 더이상 보낸 데이터가 없음을 보여줌.

( 2 ) 3-Way Handshake

TCP를 사용한 데이터 송수신 간의 정확한 전송을 보장하기 위한 세션 수립 과정

Client Server
(Connect) (Listen, Accept) TCP 제어 플래그
| SYN, SEQ=J | ↓
| ----------------------> | : 연결요청 (SYN=1, ACK=0)
| SYN, ACK=J+1, SEQ=K |
| <---------------------- | : 연결허락 (SYN=1, ACK=1)
| ACK=K+1 |
| ----------------------> | : 연결설정 (ACK=1)
| |
| (연결통로 확보) |
| <---------------------> | : 이후 회선이 작동되며, 통신의 양측
에서 데이터를 주고 받기 시작

※ 참고로 여기서 J, K는 임의의 Sequence Number

① 호스트 A는 호스트 B에게 연결을 설정하고자 한다는 것을 알리기 위한 세그먼트를 전송함.
② 호스트 B는 A의 요구를 확인 응답하기 위한 세그먼트를 전송함.
호스트 B는 B로부터 A로 향하는 트래픽에 대한 초기화 정보를 포함하는 세그먼트를 전송함.
③ 호스트 A는 B의 요구를 확인 응답하기 위한 세그먼트를 전송함.

( 3 ) 4-Way Handshake

TCP를 사용한 데이터 송수신 간의 정확한 전송을 보장하기 위한 세션 종료 과정

Client Server
(Connect) (Listen, Accept) TCP 제어 플래그
| FIN, SEQ=J | ↓
| ----------------------> | : 종료요청 (FIN=1, ACK=0)
| ACK=J+1 |
| <---------------------- | : 종료응답 (ACK=1)
| FIN, ACK=J+1, SEQ=K |
| <---------------------- | : 종료완료 (FIN=1, ACK=1)
| ACK=K+1 |
| ----------------------> | : 확인응답 (ACK=1)

※ 여기서 J, K는 임의의 Sequence Number

① 호스트 A는 연결을 종료하고자 한다는 것을 알리는 세그먼트를 전송함.
② 호스트 B는 A의 요구를 확인 응답하는 세그먼트를 전송함.
- 한 방향의 연결은 종료되지만 다른 방향의 연결은 계속 유지함.
- 호스트 B는 A로 데이터를 계속 전송함.
③ 호스트 B가 자신의 데이터 전송을 완료하면, B는 자신이 연결을 해지하고자 한다는 것을 알리기 위한 세그먼트를 전송함.
④ 호스트 A는 B의 요구를 확인 응답함.

반응형
Comments