본문 바로가기

네트워크

TCP handshake Deep-dive (3) - Flag

TCP 패킷의 플래그

SYN 패킷의 플래그 -> SYN에만 Set이 되어있음을 확인할 수 있음

SYN, ACK, FIN은 3way, 4way 핸드쉐이크의 패킷에서 감지,

TCP연결의 첫 번째 패킷만이 ACK비트가 설정되지 않음. 

 

 

*RST

비정상적인 이유로 연결을 즉시 종료할 때 사용. 존재하지 않는 포트에 접속하거나 앱에서 강제로 연결을 종료할 때 사용된다. RST 플래그는 FIN 플래그와 달리 "양방향 "즉시 "연결 종료" 를 유발합니다. FIN 플래그는 "graceful close" (우아한 종료) 를 위한 것이고, RST 플래그는 "abrupt close" (갑작스러운 종료) 를 위한 것입니다.

존재하지않는 포트로 curl 명령어를 사용하였고, 연결이 '거부'됨. 실패X
RST 플래그가 ACK와 함께 Set되어서 응답됨.

 

 

*PSH

"수신측 애플리케이션에게 "데이터를 "즉시 "처리해달라고 "요청" 하는 깃발입니다. 일반적으로 TCP는 효율적인 전송을 위해 데이터를 버퍼에 모아서 한 번에 처리하지만, PSH 플래그가 설정된 경우, 수신측 TCP는 버퍼링 없이 "가능한 한 "빨리 "데이터를 "애플리케이션에 "전달" 하도록 지시. 텔넷, SSH, 채팅 프로그램 등 "즉각적인 "응답성" 이 "중요한 "대화형 애플리케이션" 에 유용하게 사용됨.

-> 추가설명: TCP는 버퍼(Buffering) 기반으로 동작하는데, 예시로 든 프로그램은 키보드에서 입력되자마자 바로바로 전달되어야함. 이런 경우 PSH를 사용한다는 것. 

 

 

echo를 이용하여 메시지 발생시킨 결과, PSH 패킷 발생