본문 바로가기
  • 개발공부 및 일상적인 내용을 작성하는 블로그 입니다.
이론/네트워크

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

by 방구석 대학생 2022. 1. 29.

 

TCP 통신이란?

- 네트워크 통신에서 신뢰적인 연결방식

- TCP 는 기본적으로 unreliable network 에서 reliable network 를 보장할 수 있도록 하는 프로토콜 이다.

- TCP 는 network congestion avoidance algorithm 을 사용한다.

 

* reliable network 를 보장한다는 것은 4가지 문제점이 존재한다.

1. 손실 : 네트워크 패킷이 손실될 수 있는 문제

2. 순서 바뀜 : 패킷의 순서가 바뀌는 문제

3. Congestion : 네트워크가 혼잡한 문제

4. Overload : receiver 가 overload 되는 문제

 

흐름제어 / 혼잡제어 란?

* 흐름제어

- 호스트와 호스트 간의 데이터 처리를 효율적으로 하기 위한 기법. End to End

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

- 수신측이 송신측 보다 속도가 빠른 것은 아무 문제가 되지 않는다.

- 송신측이 수신측보다 속도가 빠르면 문제가 발생한다.

 

수신측에서 수신된 데이터를 처리해서 윗 계층으로 서비스 하는 속도보다, 송신측에서 보내는 데이터 속도가 더 빠르다면, 수신측에서 제한된 저장용량(일반적으로 큐이다.)을 초과하여 이후에 도착하는 데이터의 손실을 가져올 수 있다.

그렇다면 불필요하게 응답과 재전송의 데이터가 다시 송신측과 수신측 간에 빈번히 이동해야 한다.

따라서, 이러한 위험을 줄이가 위해 강제로 송신측의 데이터 전송을 줄인다.

 

방법 1 : Stop and wait 방식

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

 

방법 2 : 슬라이딩 윈도우 기법

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

이 처럼 슬라이딩 윈도우 기법을 통하여 송신 버퍼의 범위는 수신 측의 여유 버퍼 공간을 반영하여 동적으로 바뀜으로서, 흐름제어를 수행한다.

 

 

* 혼잡 제어

- 호스트와 네트워크 상의 데이터 처리를 효율적으로 하기 위한 기법

- 송신측의 데이터 전달과 네트워크 처리 속도 차이를 해결하기 위한 기법이다.

- 송신측의 데이터는 지역망이나 인터넷으로 연결된 대형 네트워크를 통해 전달된다.

- 하지만 이러한 네트워크 상의 라우터가 항상 한가로운 상황은 아니다.

- 만약, 한 라우터에 데이터가 몰릴 경우, 다시 말해 혼잡할 경우 라우터는 자신에게 온 데이터를 모두 처리할 수 없다.

- 그렇게 되면 호스트들은 또 다시 재전송을 하게 되고 결국 혼잡을 가중시켜 오버플로우나 데이터 손실을 발생시킨다.

- 따라서, 이러한 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송 속도를 강제로 줄이게 된다.

 

방법 1 : Slow start

윈도우의 크기를 2배로 늘린다.

그러다 혼잡현상이 발생하면 창 크기를 1로 떨어뜨린다.

그 후 혼잡현상이 발생했던 창 크기의 절반 까지는 이전처럼 지수 함수 꼴로(2배로) 창 크기를 증가시키고, 그 이후부터는 완만하게 1씩 증가시킨다.

 

방법 2 : Fast Recovery

혼잡한 상태가 되면 창 크기를 1로 줄이지 않고 반으로 줄이고 선형 증가시키는 방식이다.

 

 

 

참고 : https://gyoogle.dev/blog/

 

👨🏻‍💻 Tech Interview

 

gyoogle.dev

참고 : https://jsonsang2.tistory.com/17

 

흐름제어(Flow control)과 혼잡제어(Congestion control)

1. Flow control은 (호스트와 호스트 간의 데이터 처리를 효율적으로 하기 위한 기법, End to End)  송신측과 수신측의 데이터처리 속도 차이를 해결하기 위한 기법이다.  수신측이 송신측보다 속도가

jsonsang2.tistory.com

 

'이론 > 네트워크' 카테고리의 다른 글

네트워크 - HTTP & HTTPS  (0) 2022.01.29
네트워크 - 대칭키 & 공개키  (0) 2022.01.29
네트워크 - UDP  (0) 2022.01.29
네트워크 - TCP 3 & 4 way handshake  (0) 2022.01.29
네트워크 - OSI 7계층  (0) 2022.01.29