목록TCP (3)
순간이 영원해 지는 곳
UDP 는 Flow Control 기능이 없기 때문에 보내는 쪽에서 전송 시작과 동시에 Physical Layer 에서 지원 가능한 최대 속도(max throughput)로 데이터를 전송할 수 있다. 반면 TCP의 경우 재전송 기능(ACK 패킷의 사용)과 Flow Control 기능(수신측에서 처리할 수 있는 속도이상으로 데이터를 보내지 않도록 조정) 때문에 전송 시작과 동시에 최대 속도로 데이터를 보낼 수 없으며, End to End 지연시간(delay)이 길면 1 session(1개의 TCP 연결)으로는 최대 속도로 데이터를 보내지 못할 수 있다. 전송 시작과 동시에 최대 속도로 데이터를 보낼 수 없는 것은, TCP가 window 라는 개념을 사용하기 때문이다. TCP는 ACK 패킷을 수신해야 그 다..
TCP에서 Receiver는 데이터 패킷을 잘 수신하면 Acknowledgement(ACK) 패킷을 Sender 에게 전송한다. ACK 패킷 전송 횟수를 줄이기 위해 Delayed ACK 라는 방식을 사용하는데, 아래 링크를 보면 윈도우 운영체제에서는 Delayed ACK timer(하나의 패킷을 수신하고 곧장 ACK 을 보내지 않고 다음 패킷을 기다리는 시간)는 200ms 이다. http://support.microsoft.com/kb/328890 위에 링크에는 아래와 같은 내용이 있다. RFC 1122에 지정된 대로 TCP는 지연된 응답을 사용하여 미디어의 송신 패킷 수를 줄입니다. Windows 2000 이상에서의 TCP는 수신한 각 TCP 세그먼트에 대해 응답을 보내는 대신 일반적인 방법으로 지연..
프로그래머 입장에서 보는 TCP와 UDP 패킷 전달 TCP는 신뢰성 있는 통신을 보장한다고 다들 배웠을 것이다. 프로그래머 입장에서 TCP를 다시 보자. 1. in-order delievery(순서대로 전송) 우리가 send(1000byte)를 여러번 호출하는 경우, send()호출 한번에 패킷 하나가 생성되어 전달된다고 가정해보자. 이 경우 네트워크 경로상의 문제로 인해 먼저 전송한 데이터가 나중에 전달될 수 있다. 하지만 프로그래머는 그것을 신경쓰지 않아도 된다. TCP(L4 : Transport Layer)에서 순서가 뒤 바뀐 패킷을 원래대로 조립하여 프로그래머가 다루는 데이터의 형태로 만들어서 상위계층( Application Layer )로 올려준다. 그러므로 송신자가 보낸 순서대로 수신자는 데이..