본문 바로가기
Computer Science/Network

[ Computer Science ] Network - TCP/IP (흐름제어/혼잡제어) (1)

by 마늘아빠 2021. 4. 7.
728x90
반응형

 

컴퓨터 사이언스(CS) - 네트워크 부분 -TCP/IPTCP/IP의 흐름제어

혼잡제어는 아래에서!

so-cute-danu-dev.tistory.com/76

 

[ Computer Science ] Network - TCP/IP (흐름제어/혼잡제어)

흐름제어는 아래에서! so-cute-danu-dev.tistory.com/75 [ Computer Science ] Network - TCP/IP (흐름제어/혼잡제어) 컴퓨터 사이언스(CS) - 네트워크 부분 -TCP/IPTCP/IP의 흐름제어 혼잡제어는 아래에서! TCP란..

so-cute-danu-dev.tistory.com


TCP란?
 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나. IP와 함께 TCP / IP라는 명칭으로 널리 불린다. 
 근거리 통신망, 인트라넷, 인터넷 ( Unreliable )에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 패킷
 안정적, 순서대로, 에러없이 교환( Reliable )할 수 있게 해준다. 즉, 네트워크 통신에서 신뢰성있는 연결을 보장한다.
 
 TCP는 네트워크 혼잡 방지 알고리즘(network congestion avoidance algorithm)을 사용한다.

TCP의 구조는 아래에서!

so-cute-danu-dev.tistory.com/74

 

[ Computer Science ] Network - TCP의 구조

컴퓨터 사이언스(CS) - 네트워크 부분 - TCP의 세그먼트와 헤더 TCP ( Transmission Control Protocol )  인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나. IP와 함께 TCP / IP라는 명칭으로 널리 불린다...

so-cute-danu-dev.tistory.com


TCP의 신뢰성 있는 연결시 4가지 문제

 1. 손실(Loss) : Packet이 손실될 수 있는 문제
 2. 순서바뀜 : Packet의 순서가 바뀌는 문제
 3. 혼잡(Congestion) : 네트워크가 혼잡한 문제
 4. 과부하(Overload) : reciever가 과부하 되는 문제

이 문제를 제어하는 것이 흐름제어 / 혼잡제어

흐름제어 / 혼잡제어 개념
 흐름제어 ( Endsystem 대 Endsystem )
  - 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법
  - 흐름제어는 RecieverPacket을 지나치게 많이 받지 않게 조절하는 것
  - 기본 개념은 RecieverSender에게 현재 자신의 상태를 Feedback 한다는 것

 혼잡제어
  - 송신측의 데이터 전달과 네트워크의 데이터 처리 속도차이를 해결하기 위한 기법
전송의 전체 과정
 Application 계층 : 송신자 Application 계층이 Socket에 Data를 씀
 Transport 계층 : Data를 Segment에 감쌈. 그리고 Network 계층에 넘겨줌
 아래 계층에서 Receiving Node로 전송.
 Sender는 Send Buffer에 Data 저장, Receiver는 Receive Buffer에 Data 저장
 Application에서 준비가 되면 이 Buffer에 있는 것을 읽기 시작
 
 흐름제어의 핵심은 Receiver Buffer가 넘치지 않게 하는 것
 즉, Receiver는 RWND(Receive WiNDow) 의 Receive Buffer의 남은 공간을 알려줌


 

OSI 7계층의 자세한 내용은 아래로!

so-cute-danu-dev.tistory.com/66

 

[ Computer Science ] Network - OSI 7계층

컴퓨터 사이언스(CS) - 네트워크 부분 - OSI 7계층의 전반적인 내용 OSI 7계층 OSI 모형은 국제표준화기구(ISO)에서 개발한 모델. 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한

so-cute-danu-dev.tistory.com


흐름제어
 - 수신측송신측보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신측속도가 빠를 경우 문제가 발생
 - 수신측에서 제한된 저장 용량을 초과한 이후에 도착하는 데이터는 손실 될 수 있으며, 만약 손실이 발생한다면
   불필요하게 응답과 데이터 전송이 송/수신측 간에 빈번하게 발생
 - 이러한 위험을 줄이기 위해 송신 측의 데이터 전송량을 수신측에 따라 조절
해결방법
정지-대기(Stop and Wait)
 - 가장 단순한 형태의 흐름제어
 - 송신측이 송신 할 때마다 수신측이 ACK 또는 NAK를 받음
 - 송신측은 ACK를 받을 경우만 다음 데이터 전송
 - 송신측이 NAK를 받거나 일정 시간이 지날때까지 응답이 없는 경우 데이터 재전송

 장점 : 구현 방법이 단순하고, 송신측내에 최대 프레임 크기의 버퍼를 1개만 잡아도 된다
 단점 : 송신측이 ACK를 수신할 때까지 다음 프레임을 전송할 수 없으므로 전송 효율이 떨어짐

 개선방안은 슬라이딩 윈도우 방식이 있다!
슬라이딩 윈도우 방식 ( 연속적 ARQ - Continuous ARQ = Go Back n ARQ)
 - 흐름제어를 위한 검출후 재전송 방식(ARQ)의 일종 ( 혼잡제어도 가능 )
 - 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답 없이 세그먼트를 전송할 수 있게 하여
   데이터 흐름을 동적으로 조절하는 제어기법
 - 전송은 되었지만, ACK를 받지못한 Byte의 숫자를 파악하기 위해 사용하는 프로토콜

 - 일정 윈도우 크기 이내에서 한번에 여러 패킷을 송신
 - 이들 패킷에 대하여 단지 한 번의 ACK 로써 수신을 확인
 - 윈도우 크기를 변경시키고 윈도우를 옮기며 흐름제어를 하는 기법

 Window
 - TCP/IP를 사용하는 모든 호스트들은 송신하기 위한 것과 수신하기 위한 2개의 Window를 가지고 있음
 - 호스트들은 실제 데이터를 보내기 전에 3 way Handshake를 통해 수신 호스트의 Receive Window Size에 자신의
    Send Window Size를 맞추게 된다

주로 TCP, HDLC, 패킷교환등에 널리 이용한다

 슬라이딩 윈도우 동작상 주요 요소
 
 윈도우 구조
 - 송신기, 수신기 모두에 유사한 윈도우 구조를 유지할 필요 있음
 - 가장 중요한 변수는 버퍼의 여유 용량(윈도우크기)

 윈도우 크기(Window Size)
 - 한번에 전송할 수 있는 최대 프레임 크기(통상, '바이트갯수' N)를 의미
 
 - 수신 윈도우 크기 = 수신 버퍼의 여유 용량 ( rwnd, Receiving Window )
   수신 윈도우 크기로써 수신측에 의해 결정, 송신측에 통보
   아직 확인 응답되지 않았으나, 송신할 패킷 덩어리의 크기
 
 - 혼잡 윈도우 크기 ( cwrd, Congestion Window )
   네트워크 혼잡을 초래하지 않도록 송신율을 제한하는 (송신) 윈도우 크기

 윈도우 크기 알림 ( Window Advertizement, Window Update ) 기능
 - 수신측에서 송신측에게 얼마나 큰 윈도우 크기를 유지해야 하는지 알려주는 것

 윈도우 이동 
 - 윈도우 시작위치(n) 
 TCP 슬라이딩 윈도우 구현 요소
 
 TCP 헤더 내 3개 필드( 순서번호, 승인번호, 윈도우 크기 )로 구현
 - 통상, 송신측 TCP는 수백 바이트씩 모아 세그먼트 단위로 나눔
 - 윈도우 크기 내에서 1 이상의 세그먼트들을 연속 송신 후 한번의 확인 응답


 주요 변수 관리
 - 윈도우 시작 위치에 대한 변수 관리
 - 송신측 : '순서번호' 로써 관리
 - 수신측 : '승인번호(확인응답번호)' 로써 관리

 윈도우 크기
 - 윈도우 크기는 흐름제어 / 혼잡제어를 수행하는 수단
   윈도우 크기를 늘리거나 감소시킴으로써, 흐름제어/혼잡제어를 수행

 윈도우 크기 사항
 - TCP에서는 윈도우 크기TCP 최대 세그먼트 크기 (MSS)보다 크게 할 수 없음

 실제 윈도우 크기
 - 실제 송신 윈도우 크기 = min ( cwnd, rwnd )
 - cwnd 및 rwnd 중 작은 값을 취한다

 흐름제어 ( 수신측이 주도적으로 rwnd 값 결정 )
 - 수신측을 송신측에게 자신의 가능한 수신 버퍼 상태 (rwnd)를 알림
 - 수신측은 ACK(확인응답)을 보내면서 현재의 수신 윈도우 크기를 함께 보냄

참조 : www.ktword.co.kr/abbr_view.php?nav=2&m_temp1=1469&id=746

 

GBN [정보통신기술용어해설]

 

www.ktword.co.kr

 

반응형