TCP Characteristics

TCP / IP에는 표준화 된 구현에 따라 작동하는 특성이 있으며, 이러한 특성 때문에 개발을 어떻게 하느냐에 따라 성능 저하를 초래할 수 있다.

TCP / IP 기능이 응용 프로그램에 미치는 영향은 응용 프로그램의 성격이 transactional 한지 아니면 streaming 인지에 따라 다르다.

transactional 한 응용 프로그램은 connection 및 termination 오버 헤드의 영향을 받는다.

three handshake에 대한 이미지 검색결과

예를 들어, 이더넷 네트워크에서 연결이 설정 될 때마다 약 60 바이트의 세 패킷(3-handshake)을 보내야하며 교환을 위해 약 하나의 RTT가 필요하다.

연결 종료가 발생하면 네 개의 패킷이 교환된다. 이것은 매번의 연결마다 발생하며, 연결을 열고 닫는 행위는 종종 응용 프로그램 오버 헤드를 발생시킨다.

 

TCP / IP의 또 다른 측면은 연결이 설정 될 때마다 발생하는 느린 시작이다.

느린 시작이란 해당 세그먼트의 수신을 수신하기 전에 보낼 수있는 데이터 세그먼트 수에 대한 인위적인 제한이다. 느린 시작은 네트워크 정체를 제한하도록 설계되었다.

이더넷을 통한 연결이 설정된 경우 수신기의 창 크기에 관계없이 느린 시작으로 인해 4KB 전송에 3-4 RTT가 걸릴 수 있다.

 

nagle algorithm에 대한 이미지 검색결과

Nagle 알고리즘이라고하는 TCP / IP 최적화는 연결시 데이터 전송 속도를 제한 할 수도 있다. Nagle 알고리즘은 한 번에 한 문자 씩 보내는 텔넷과 같이 소량의 데이터를 보내는 응용 프로그램의 프로토콜 오버 헤드를 줄 이도록 설계되었다. 많은 헤더와 작은 데이터가있는 패킷을 즉시 보내지 않고 스택은 계속하기 전에 응용 프로그램 또는 확인 응답에서 더 많은 데이터를 기다린다. 이 데이터가 곧 도착하지 않고 송신 측이 확인을 기다리는 경우, 송신 당 약 200 밀리 초의 응답 지연이 발생할 수 있다.

 

time wait에 대한 이미지 검색결과

TCP 연결이 닫히면 노드의 연결 리소스가 시작되는데, 이때 TIME-WAIT 메시지가 보내진다. 이는 server/client 양단간의 연결 종료를 보장하기 위한 장치인데, 이 때문에 응용 프로그램을 자주 열고 닫으면 RAM 및 포트와같이 필요한 리소스가 고갈 될 수도 있다.

그밖에 congestion avoidance algorithm, 스트리밍 응용 프로그램에서 너무 작은 window size 등이 영향을 끼친다.