IT 지식/네트워크(Network)

컴퓨터 네트워크 - TCP 특성, 송수신측 이벤트

나아가는중 2021. 12. 6. 21:41
반응형

TCP의 특성

TCP는 IP의 신뢰성없는 서비스 위에 신뢰성 있는 전송 서비스를 구현한다.

cumulative acks 사용한다.

하나의 재전송 타이머를 사용한다.

재전송을 유발시키는 경우는 타임아웃 이벤트와 중복 ACK 수신의 경우이다.

 

point-to-point: 한개의 송신자(one sender), 한개의 수신자(one receiver)

신뢰성reliable): 재전송을 통해 신뢰성있게 한다.

순차 바이트 스트림(in-order byte stream): 순서대로 전송. 어플리케이션 측에서 보면 하나의 스트림이 바이트 단위로 쭉 들어오는 것처럼 보인다.

pipelined: ACK없이도 window를 통해 여러 패킷을 보낼 수 있다. 혼잡제어와 흐름제어가 가능하다.

send & receive buffers: 송신측, 수신측 각각 버퍼를 가지고 있다.

full duplex data: 동일한 연결에서 데이터가 양방향으로 전달될 수 있다.

MSS: maximum segment size

Connection-oriented: 연결지향적이다. handshaking을 통해 데이터 교환 이전에 송수신측의 상태 control 메시지를 교환한다.

flow controlled: 수신측이 패킷 수신 후 버퍼에 넣어 처리하는 속도보다 빠르게 패킷을 전송하지 않는다.

 

송신측 이벤트

송신측의 이벤트 흐름은 다음과 같다. 응용층에서 데이터 스트림을 수신받는다. 최대 전체 데이터 스트림 / MSS(Maximum Segement Size)의 세그먼트를 만든다. 만들어진 세그먼트는 첫 번째 데이터 바이트의 sequence number를 갖는다. 가장 오래동안 수신받지 않은 세그먼트의 타이머를 갖는다.

 

타임아웃이 발생한경우 타임아웃을 발생시킨 세그먼트를 재전송하고 타이머를 다시 작동시킨다.

 

수신받지 않은(unacked) 세그먼트의 ACK 수신시 다음으로 어떤 ACK를 받아야 할지 업데이트하고 ACK를 받을 세그먼트가 더 있으면 타이머를 작동시킨다.

 

수신측 이벤트

정상적인 순서(in-order)대로 세그먼트를 기대한 sequence number가 수신된 경우, 즉 이전 세그먼트까지 모두 ACK가 된 경우 바로 ACK를 보내지 않고 최대 500ms까지 기다린다(delayed ACK). 그 사이에 다음 세그먼트가 수신되지 않으면 ACK를 전송한다. delayed ACK하는 동안 다음 세그먼트를 수신받으면 누적(Cumulative) ACK를 전송한다.

 

비정상적인 순서(out-of-order)대로 세그먼트를 기대한 값보다 큰 sequence number가 수신된 경우, 즉시 duplicate ACK를 전송한다. 이 때 duplicate ACK는 다음 예상 바이트의 sequence number를 나타낸다.

 

반응형