제어 비트 

필드명 설  명
PSH 밀어 넣기 비트, 세그먼트의 송신 장비가 TCP 밀어 넣기 기능을 사용했으므로 세그먼트를 받는 즉시 애플리케이션으로 송신하라는 뜻입니다.
URG 긴급 비트, 비트가 켜지면 세그먼트에 우선 순위가 높은 데이터가 있다는 뜻을 가집니다. 긴급 포인터 필드 값을 사용합니다.

TCP 즉시 데이터 송신 : 밀어 넣기 기능(PSH)

 TCP는 프로세스에서 전달된 데이터를 그저 바이트 스트림으로 생각하고 전송하기 때문에 데이터의 내용에 따라서

 다르게 세그먼트를 생성해서 전달할 수 없습니다. 일반적으로는 데이터를 버퍼에 축적한 다음에 슬라이딩 윈도우와

 프로토콜 방식에 따라서 데이터를 보내고 받는 것을 결정합니다.

 그런데 특정 애플리케이션의 경우 빠른 응답이 필요한 경우가 있습니다. 예를 들면 텔넷 프로토콜과 같은 대화형

 어플리케이션 같은 경우 사용자의 입력을 받을 때마다 즉각적인 반응이 필요합니다. 

 그래서 TCP는 이런 상황을 처리하기 위해서 PSH 제어 비트를 사용합니다. 이 제어 비트를 사용하면 다른 데이터를 

 더 기다리지 말고 보낼 수 있는 한 빨리 데이터를 전송하라고 명령을 내리는데 전송 장비는 모든 데이터를 모아서

 세그먼트를 생성하고 PSH제어 비트를 1로 설정하여 전송하고 수신 장비는 받은 세그먼트에 PSH비트가 켜져 있으면

 곧바로 애플리케이션에 데이터를 전달합니다. 

TCP 우선순위 데이터 송신 : 긴급 기능(URG)

 앞에서 언급했듯이 TCP는 데이터를 구조가 없는 바이트 스트림으로 취급합니다. TCP는 데이터의 내용에는 관심이 없고

 전달된 순서대로 전달합니다.(FIFO)

 일반적인 데이터 전송 시에는 FIFO방식을 사용하는 것은 정상적이며 일반적입니다. 

 하지만 특정한 데이터를 긴급하게 전송하려고 하는데 앞선 데이터들이 쌓여 있다면 긴급한 데이터는 앞선 데이터들이

 모두 전달이 될 때까지 기다려야 하는 상황이 생기게 됩니다.

 예를 들면 매우 큰 파일을 전송하는 도중에 파일 전송을 중단하려고 하는 메시지를 전달하고자 한다고 가정합니다.

 TCP의 일반적인 전달 방식에 의하면 큰 파일의 전송이 다 완료된 이후에 파일 전송 중단 메시지가 도착을 할 것이고 

 이런 상황이면 파일 중단 메시지의 의미가 없어집니다. 그러므로 긴급 기능을 사용해서 데이터 송신의

 우선순위를 주어서 앞선 데이터보다 먼저 전달되도록 해야 합니다. 

 TCP가 긴급 기능을 사용하는 방법은 첫째로 제어 비트인 URG 비트를 1로 세팅합니다. 

 두 번째로 할 일이 있는데 TCP 헤더 중에 Urgent pointer필드 값을 세팅해야 합니다. 이 필드 값은 세그먼트 내의

 긴급 데이터의 마지막 바이트를 가리킵니다. 

 예를 들어서 긴급으로 만들어진 세그먼트 내의 데이터의 구조가 긴급한 데이터 300바이트, 일반 데이터가 100바이트가

 붙은 상태로 전달되었다고 가정합니다. 

 이런 경우 Urgent pointer 필드를 300을 설정해서 긴급한 데이터의 크기를 확인할 수 있도록 세팅합니다. 

 URG 플레그를 1로 세팅된 세그먼트를 수신 장비가 받으면 Urgent pointer 필드를 통해서 긴급한 데이터를 확인 후 

 프로세스에게 긴급한 데이터를 전달합니다. 나머지 데이터는 일반적으로 처리합니다. 

 

+ Recent posts