본문으로 바로가기

 

 

SYN - 연결을 시작한다
ACK - 수신 된 데이터를 확인한다
FIN - 연결을 닫는다
RST - 오류에 대한 응답으로 연결을 중단한다

 

 

1. PSH Flag

PSH 플래그의 기능을 이해하려면 TCP가 데이터를 버퍼링하는 방법을 이해해야 한다.

TCP는 OSI Layer 4에서 동작한다. 
그것은 들어온 데이터를 읽거나 내보낼 데이터를 쓸 수 있는 간단한 소켓 인터페이스를 상위 Layer에 제공한다.
그리고 TCP는 응용 프로그램이 언제든지 이 소켓으로부터 읽거나 쓸 수 있도록 버퍼를 제공한다.
버퍼는 TCP 연결 양쪽(송신자와 수신자)에서 모두 구현된다.
즉, 송신자의 TCP도 Read Buffer, Write Buffer를 가지고, 수신자의 TCP도 Read Buffer, Write Buffer를 가진다.

응용 프로그램(Application Layer) 에서는 소켓에 "Push"하는 옵션을 사용하여 데이터를 쓸 수있다. 
이 옵션은  추가 데이터가 버퍼에 들어갈 때까지 기다리지 않고 즉시 데이터를 내보낸다. 
이 경우 송신 TCP 패킷의 PSH 플래그가 1로 설정된다. 
연결의 반대편인 '수신측' 종단에서는 PSH 플래그가 설정된 패킷을 수신하면 TCP세그먼트를 응용프로그램에 즉시 전달하도록 동작한다. 
PSH 플래그가 없다면 수신측에서도 버퍼에 일정량의 데이터가 모일때까지 기다렸다가 응용프로그램에 전달할 것이다.

1) 송신측에서의 PSH 기능
호스트의 응용 프로그램(Application Layer)은 '이 데이터를 버퍼에 쌓지 말고 즉시 보내라' 라고 TCP Layer 에 알리는 역할

2) 수신측에서의 PSH 기능
'이 데이터는 버퍼에 쌓지 말고 즉시 응용프로그램(Application Layer)에 보내라' 라고 수신측 호스트의 TCP Layer 에 알리는 역할

 

 

2. URG Flag

이름 그대로 긴급(Urgent) 하다는 의미로 

수신측에게 '네가 현재 받은 TCP 데이터는 긴급 데이터야. 우선 처리되게 우선순위를 높여줘' 라고 알리는 역할이다.
이때 수신측 호스트의 TCP Stack은 TCP 헤더의 16비트 필드인 'Urgent Pointer' 를 측정하게 된다.

'Urgent Pointer' 는 긴급한 정도를 나타낸다.

하지만 URG 플래그는 현대의 프로토콜에서 많이 사용되지 않는다.
왜냐하면 이 플래그의 사용을 더이상 추천하지 않기 때문이다. (RFC 6093)
실제 사용되는 예를 거의 찾아볼 수 없으며, 텔넷의 패킷 캡처에서 URG 플래그의 예를 볼 수 있다.

 

 

 

References

techlog.gurucat.net/314