네트워크 - TCP/IP 흐름제어 & 혼잡제어

고태희·2022년 3월 10일
0

CS

목록 보기
14/20
post-thumbnail

서론

  • TCP 통신이란?

    • 네트워크 통신에서 신뢰적인 연결방식
    • TCP는 비신뢰적인 네트워크에서, 신뢰적인 네트워크를 보장할 수 있도록 하는 프로토콜
    • TCP는 network congestion avoidance algorithm 사용
  • reliable network 보장의 4가지 문제점

    • packet이 손실될 수 있는 문제
    • packet의 순서가 바뀌는 문제
    • 네트워크가 혼잡한 문제
    • receiver가 Overload되는 문제
  • 전송의 전체과정

    • Application Layer : sender application layer가 socket에 data를 씀
    • Transport Layer : data를 segmentdp 감싸서 network layer에 넘겨줌
    • 그러면 아랫단에서 어쨋든 receiving node로 전송이 됨. 이 때, sender의 send buffer에 data를 저장하고, receiver는 recevie buffer에 data를 저장
    • application에서 준비가 되면 이 buffer에 있는 것을 읽기 시작
    • 따라서 흐름 제어(flow control)의 핵심은 receiver buffer가 넘치지 않게 하는 것

흐름제어(Flow Control)

송수신측의 데이터 처리속도 차이를 해결하기 위한 기법

stop and wait

매번 전송한 패킷에 대해 확인 응답을 받아야 그 다음 패킷을 전송하는 방법

Sliding Window ( Go Back N ARQ )

수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절

동작방식

  • 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는대로 이 윈도우를 옆으로 옮김으로써 그 다음 패킷들을 전송
  • TCP/IP를 사용하는 모든 호스트들인 송수신을 위한 2개의 window를 가지고있다. 3 way handshaking을 통해 수신 호스트의 window size에 자신의 window size를 맞춘다. (수신 윈도우보다 작거나 같은 크기로 하면 흐름제어 가능)

혼잡제어(Congestion Control)

송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위함
만약 한 라우터에 data가 몰리게 되면, 그 모든 data를 처리할 수 없게 되므로, 몇몇 호스트들은 계속해서 재전송을 하게 된다.
이는 혼잡만 가중시켜 overflowdata손실이 발생하게 된다.
=> 이러한 네트워크의 혼잡을 피하기 위해 송신측의 데이터 전송 속도를 강제로 줄이게 되는데, 이것이 혼잡제어

혼잡제어는 흐름제어보다 넓은 관점에서 전송 문제를 다룬다.

AIMD ( Additive Increase / Multiplicative Decrease )

  • 처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 window크기를 1씩 증가시켜가며 전송하는 방법
  • 패킷 전송에 실패하거나 일정시간을 넘으면 전송속도를 절반으로 줄인다
  • 먼저 진입한 호스트가 처음에는 유리하지만, 시간이 지나면 평형상태로 수렴하게 되는 특징

문제점 : 초기에 네트워크의 높은 대역폭을 사용하지 못하여 오랜시간이 걸리고, 네트워크 혼잡상황을 미리 감지하지 못한다. 즉, 혼잡해지고나서야 대역폭을 줄이는 방식이다.

Slow Start

  • AIMD와 마찬가지로 패킷을 하나씩 보내면서 window 크기를 1씩 늘려주는 방식
  • AIMD에 반해 전송속도가 지수함수 꼴로 증가하지만, 혼잡상황이 발생하면 window크기를 1로 줄여버린다
  • 한번 혼잡 상황이 발생하면 네트워크의 수용량을 어느정도 예상할 수 있으므로 혼잡상황이 발생하였던 window크기의 절반까지는 지수함수 꼴로 증가시키고, 그 이후부터는 1씩 증가시킨다.

Fast Retransmit

  • 수신측에서 먼저 도착해야할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 보낸다
  • 단, 순서대로 잘 도착한 마지막 패킷의 다음 패킷의 순번은 ACK패킷에 실어서 보내게 되므로, 중간에 하나가 손실되면 송식측에서는 순번이 중복된 ACK패킷을 받게된다. 이걸 감지하는 순간 문제가 되는 순번의 패킷을 재전송해줄 수 있다.
  • 중복된 순서의 패킷을 3개 받으면 재전송. 약간 혼잡한 상황이 발생했으므로 window크기를 줄인다.

Fast Recovery

  • 혼잡상태가 되면 window 크기를 1로 줄이지 않고 반으로 줄인다음 선형증가시키는 방법.
  • 이 정책까지 적용하면 혼잡상황을 한번 겪고 나서부터는 순수한 AIMD방식으로 동작하게 된다.

0개의 댓글

관련 채용 정보