코딩일지(2024-05-27)
컴퓨터망 24장쪽을 복습했다.
이제 곧 있으면 기말고사이다. 홧팅~
흐름제어
오류제어
1.checksum
2.acknowledgement
3.retransmission after time-out(RTO)
혼잡제어
- 양단에서는 혼잡이 없으나 그 중간(라우터들 사이)에 혼잡 발생
- 라우터의 다중입력
- TCP로 하여금 cwnd를 사용하여 전송할 세그먼트의 수를 조절
Three congestion policies>
1.slow start
혼잡윈도우의 크기를 지수적으로 증가시켜(1->2->4->8…) 네트워크의 상태를 빠르게 파악
2.congestion avoidance
혼잡이 발생하기 전에 혼잡상황을 피하기 위해 윈도우의 크기를 선형적으로 증가시킴
3.fast recovery
세개의 중복 ACK를 혼잡이 발생한 것으로 간주, 혼잡 윈도우의 크기를 감소시킨 후 빠르게 회복
policy transision>
Type A)Tahoe tcp
(slow start + congestion avoidance)
Type B)Reno tcp
(slow start + congestion avoidance + fast recovery)
TCP Timers>
Type A)Retransmission Timers>
이 재전송 타이머에서는 그 역할과 계산방법이 중요하다. 전송과정 도중에 손실된 세그먼트를 재전송하는 목적으로 이 재전송 타이머를 활용한다. 그리고 이 타이머의 계산방법은 좀 독특한데 바로 RTO계산방식을 사용한다는 것이다(중요!!). 이 계산을 위해 RTT를 측정하고 평활화된 RTT와 편차를 계산한다. 이로써 효율적으로 세그먼트르 재전송하게 되고 네트워크 성능을 최적화할 수 있게 된다.
한가지 예를 들어보자. 송신자가 세그먼트를 수신자한테 던졌다. 그러면 송신자는 ack가 올때까지 기다리겠지?
그리고 ack가 1분후에 도착했어, 그러면 RTT_M을 1분으로 설정해놔,
그러면 이 대기시간과 가중치라는 것을 기반으로 평활화된 RTT를 계산하게 돼,
어? 이 가중치가 대체 뭐냐고? 내가 찾아본 바로는 그냥 하이퍼파라미터처럼 연구자들이 주로 쓰는 고유상수값인거 같다ㅋㅋ.
이를 기반으로 하는 계산방법은 아래와 같다. 대충 훑어만 보고 넘어가즈아!
Type B)Persistence Timers>
Type C)Keepalive Timers>
Type D)Time-Wait Timers>
위 그림에서 알 수 있듯이, TCP연결을 종료하는 과정에서 Time-Wait 타이머는 중요하다. 이 Time-Wait 타이머는 최종 ACK패킷이 손실될 가능성에 대비하여, 송신자가 일정시간동안 대기하도록 하는 것이다. (보통 버스 막차시간이 11시이면 버스기사님이 막차손님들이 버스 놓치는 것을 배려하기 위해 10분 더 늦게 버스를 출발시키는 것과 유사하당). 쉽게 말해서 종료의 안정성을 높이는 목적이라 보면 될 것 같다.
댓글남기기