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/
참고 : https://jsonsang2.tistory.com/17
'이론 > 네트워크' 카테고리의 다른 글
네트워크 - 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 |