ChenDroid.log
로그인
ChenDroid.log
로그인
TCP 흐름제어, 혼잡제어 정리
Android Chen
·
2021년 12월 9일
팔로우
0
네트워크
0
TCP는 연결지향적이며 순서가 뒤바뀐 패킷을 교정해주고 데이터의 신뢰도를 보장한다는 특징이 있다. 신뢰성을 보장하기 위해 아래와 같은 4가지를 제어해야 한다.
패킷의 손실
패킷의 순서가 바뀌는 현상
네트워크의 혼잡
수신측의 데이터 처리속도가 송신측의 데이터 전송속도보다 느린 경우
흐름제어
흐름제어란 4번문제를 고안하기 위해 사용하는 방법이다. 수신측에서 송신측에게 자신의 상태를 알려주고 수신측의 데이터 전송량을 알맞게 조절하는 방법이다.
1) Stop and wait
패킷을 1개씩 전송하며 매번 패킷에 대한 응답을 수신해야 다음 패킷을 전송하는 방법
2) Sliding Window
수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답없이 세그먼트를 전송하여 데이터 흐름을 동적으로 조절하는 방법이다. 패킷의 전달이 확인되는대로 윈도우를 옮긴다.
패킷의 손실 처리(오류제어)
1) Stop and Wait
데이터를 정상적으로 받았다는 응답이 오지 않으면 재전송한다.
2) Go back N
손실된 정보 이후에 전송되는 모든 정보 프레임을 재전송하는 방식이다.
3) Selective Repeat
Go back N 방식에서 오류가 발생한 부분만 재전송하는 것으로 보완한 방식. 재전송이후에 제대로 수신된 부분을 알려주고 그부분부터 시작한다.
혼잡제어
송신측의 데이터 전달과 네트워크의 데이터 처리속도 차이를 해결하기 위한 기법
1) AIMD
하나의 패킷을 보내고 문제가 없으면 윈도우 크기를 1씩 증가시키며 전송한다.
만약 문제가 발생하면(손실이 발생하면) 윈도우 크기를 절반으로 줄인다.
2) Slow Start
패킷이 문제없이 도착하면 크기를 2배씩 증가시킨다. 혼잡현상이 발생하면(ssthresh도달) 윈도우 크기를 1씩늘린다.
3) Fast Retransmit
재전송을 위한 timeout값이 상대적으로 길어지므로 손실된 패킷에 대한 중복ack가 3번이상 도착했을 경우 세그먼트를 즉시 재전송한다.
Fast Recovery
Android Chen
https://github.com/Userz1-redd
팔로우
이전 포스트
스위치, 라우터의 차이
다음 포스트
프로그래머스 Lv2 뉴스 클러스터링 Java
0개의 댓글
댓글 작성