ABOUT ME

-

Graduate of Computer Engineering at Inha University

https://github.com/juwon0605

devprofessionalism@gmail.com
  • 3.TCP/IP, 흐름제어(Flow Control), 혼잡제어(Congestion Control)
    Computer Science/Network 2021. 9. 3. 23:31

      ∙TCP 통신
       ∘신뢰성을 보장하는 통신 프로토콜
                -서버:socket() -> bind() -> listen() -> accept() -> read/writhe() -> close()
                (소켓생성)  (소켓주소할당) (연결요청대기) (연결허용)  (데이터송수신)  (연결종료)
                -클라이언트:socket() -> connect() -> read/write() -> close()
                                (소켓생성)  (연결요청)  (데이터송수신)  (연결종료)
       ➀LINK 계층: 물리적인 영역의 표준화
       ➁IP 계층: 경로를 검색
       ➂TCP/UDP 계층: 데이터의 실제 송수신을 담당
       ➃애플리케이션 계층: 응용 서비스 수행
      ∙흐름제어
       ∘수신측의 저장 용량 초과로 발생하는 데이터 손실을 줄이기 위해 송신 데이터 전송량을 조절하는 기법
       ○Stop and Wait
                -매번 전송한 패킷에 대해 확인 응답을 받고 그 다음 패킷을 전송하는 방법
       ○Sliding Window
                -수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송하는 방법
                -3 way handshaking을 통해 수신 호스트의 receive window size에 자신의 send window size
                  를 맞춘다.
                -먼저 윈도우에 포함되는 모든 패킷을 전송하고, 전달이 확인되면 윈도우를 옆으로 옮겨 그 
                  다음 패킷전송

      ∙혼잡제어
       ∘네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터 전송량을 제어하는 기법
                -만약 한 라우터에 데이터가 몰릴 경우 데이터를 전부 다 처리할 수는 없게 되어 버리게 된다.
                -이런 경우 호스트들은 신뢰성 보장을 위해 또 다시 재전송하게 되고 혼잡이 가중된다.
                -혼잡제어는 호스트와 라우터를 포함한 보다 넓은 관점에서 전송 문제를 다룬다.
       ○Slow Start (느린 시작)
                -처음에 패킷을 하나씩 보내고 문제없이 도착하면 window 크기를 2배씩 증가시키며 전송한다.
                -혼잡 현상이 발생하면 window size를 1로 떨어뜨린다.
                -window size의 절반까지는 2배씩 증가시키고 이후에는 1씩 증가시킨다.
       ○AIMD(Additive Increase/Multiplicative Decrease)
                -처음에 패킷을 하나씩 보내고 문제없이 도착하면 window 크기를 1씩 증가시켜가며 전송하는 것
                -패킷 전송에 실패하거나 일정 시간을 넘기면 패킷의 보내는 속도를 절반으로 줄인다.
                -나중에 진입하는 호스트가 처음에는 불리하지만, 시간이 흐르면 공평한 상태로 수렴한다.
                -네크워크의 높은 대역폭을 사용하지 못하고, 오랜 시간이 걸리며, 네트워크 혼잡을 미리 
                  감지하지 못한다.
       ○Fast Retransmit (빠른 재전송)
                -송신측에서 여러 개의 세그먼트를 전송하는 데 중간에 손실된 경우, 수신측에서 손실된 ACK
                  를 계속 보낸다. (신뢰성 보장을 위해 연속해서 받은 마지막 패킷 ACK을 전송)
                -타임아웃 전에 중복 ACK를 3번 받게 되면 해당 세그먼트를 즉시 전송한다.
                -혼잡을 감지하고 window size를 줄인다.
       ○Fast Recovery (빠른 회복)
                -혼잡이 감지되면 window size를 반으로 줄이고 선형적으로 증가시키는 방법이다.
                -Time out이 발생하면 window size를 1로 줄이고 slow start를 한다.

     

    출처

    링크
       

    댓글

Designed by Tistory.