[컴퓨터네트워크] 전송계층 4

백은진·2021년 4월 25일
1

강의

목록 보기
5/7
post-custom-banner

복습

  • TCP는 Network 상태에 따라 데이터 전송 속도를 높이거나 낮춘다. 이 행동은 남을 위한 것이 아닌 나 자신을 위한 것이다. (무조건적으로 전송 속도를 높여 Network가 막힌다면 모두 힘든 일이 되기에)

  • Network 상태에 대한 직접적인 피드백이 없기 때문에 TCP는 상대 receiver로부터의 피드백을 통해 간접적으로 Network 상태를 파악한다.


본 학습

  • Network를 파이프라고 가정해보자.
    • 파이프에 물을 붓는 양 그대로 물이 나오는 것이 이상적이다. 그러나 파이프에 너무 많은 양의 물을 한 번에 붓는다면 파이프는 쉽게 터질 수 있다.
    • 그리고 물을 붓는 쪽과 물이 나오는 쪽(end to end)은 서로 정보를 주고 받을 수 있지만, 파이프 안에서 일어나는 일에 대해서는 정보를 받을 수 없다. 따라서 처음에는 한 방울 씩 떨어뜨려보며 괜찮은 정도의 속도를 알아야 한다.
  • TCP Congestion Control에는 세 개의 메인 페이즈가 있다.

  1. Slow Start는 파이프에 물을 한 방울씩 흘려보내는 것과 같다. (물방울 수는 2배씩 증가한다. 그러다가 threshold 지점을 만나면 증가 속도를 낮춘다.)

  2. Additive increase는 threshold 지점을 만나 +1씩 linear하게 증가하는 것을 이른다. 이 증가는 packet loss를 감지할 때까지 이루어진다.

  3. Multiplicative decrease는 packet loss를 감지하여 전체 속도를 1/2로 떨어뜨리는 것을 이른다.

    	(2배, + 1, 1/2 등의 단위는 모두 MSS이다.)
    • 증가는 linear하게 이루어지는 반면 감소는 급격히 이루어지는 이유는 Network가 공유 자원이어서 조심해야하며, 막힌 네트워크를 빠르게 풀어야하기 때문이다.

    • MSS (Maximun Segment Size)

      • segment 1개는 최대 500 byte의 속도를 가질 수 있다.
      • MSS는 Window size와 동일하다.

    • 전송속도는 Congestion Window size / RTT이다.

    • RTT보다 Congestion Window size의 값이 더욱 자주 바뀌기 때문에 전송속도는 RTT보다 Congestion Window size의 값에 의해 좌우된다. 그리고 이 Congestion Window size 값은 Network에 의해 좌우된다.


      (↪ 2배씩 증가하기 때문에 실제로는 slow 하기보다 rapid하다.)

    • 하늘색 선은 이전 버전인 TCP Tahoe이고, 검정색 선은 이후 버전인 TCP Reno이다.

      • x 축은 시간이고 y 축은 congestion window size이다.
      • 앞서 말한 바와 같이 x 축 혹은 y 축의 1은 MSS(500 bytes)이다.
      • Threshold도 packet loss가 발생했을 시점의 window size의 1/2로 축소된다. (Threshold 이후에는 항상 linear increase가 일어난다. )
    • 버전 업데이트가 된 이유는 다음과 같다. packet loss는 크게 두 가지 이유에 의해 발생한다. 1. timeout, 2. three duplicate ACK. 이 두 가지 경우의 Network 상황은 다르다.

      • timeout 경우는 모든 패킷이 잘 전송되지 않은 상황이다.
      • 3 dup ACK 경우는 특정한 1개의 패킷만 전송이 잘 이루어지지 않은 상황이다.
    • TCP Reno에서는

      • 3 dup ACK일 때 window size를 1/2로 줄이고, linear increase를 지속한다.
      • timeout일 때는 TCP Tahoe와 동일하게 동작한다.
    • 이제 TCP Tahoe는 더이상 사용되지 않는다.

  • TCP Fairness

    신기하게도 모든 TCP는 Network 사용을 공평하게 맞춘다.

    결국 내가 Network를 어떻게 사용하느냐가 그대로 내게 돌아온다.
    또한, TCP connection 끼리 공평하기 때문에 만약 TCP connection을 2개 쓴다면, 이는 Network를 2배로 사용하는 것(사용 몫이 2배가 되는 것)과 동일하다.


정리

profile
💡 Software Engineer - F.E
post-custom-banner

0개의 댓글