: TCP와 달리 연결 지향형이 아니고, 신뢰적인 데이터 전송을 보장하지 않는 프로토콜
장점
단점
: UDP 세그먼트의 오류 검출을 위해 사용되는 것
: 패킷을 전송하고 그 패킷에 대한 수신 확인 응답을 받고나서, 다음 패킷을 전송하는 프로토콜
: 전송한 패킷에 대한 수신 확인 응답을 받지 않고도, 여러 개의 패킷을 연속으로 전송하여 링크 이용률과 전송 속도를 높이는 프로토콜
: 인터넷에서 데이터를 안정적이고 신뢰성 있게 전송하기 위해 설계된 프로토콜
: TCP 프로토콜에서 클라이언트와 서버 간에 신뢰할 수 있는 연결을 설정하기 위해 사용하는 과정
: TCP 프로토콜에서 클라이언트와 서버 간에 연결을 종료하기 위해 사용하는 과정입니다.
: 데이터 전송 중 패킷 손실이 발생했을 때, 송신 측이 빠르게 재전송하도록 돕는 TCP의 오류 복구 메커니즘
: 네트워크 혼잡 상태를 완화하고 안정적인 데이터 전송을 보장하기 위한 메커니즘.
네트워크가 혼잡해질 경우 패킷 손실이나 지연이 발생할 수 있는데, TCP 혼잡 제어는 이를 방지하고, 네트워크 상태에 따라 송신 속도를 동적으로 조절 합니다.
TCP는 혼합 창(Congestion Window, cwnd) 크기를 조절하여 혼잡을 제어합니다.
1. 느린 시작 : 초기에는 작은 크기의 혼합 창으로 시작하여 크기를 지수적으로 증가(ex. 두 배씩)시킵니다. 혼잡 임계값에 도달하면 느린 시작을 종료하고 혼잡 회피 단계로 전환합니다.
2. 혼잡 회피 : 혼잡 임계값 이휴에는 혼합 창을 선형적으로 증가(ex. +1씩)시킵니다.
3. 혼잡 발생 : 패킷 손실(ACK 타임아웃, 중복 ACK 발생)을 감지하여, 혼합 창과 임계값을 감소시킵니다.
4. 빠른 복구 : 혼잡이 발생했을 때, 혼합 창을 완전히 초기화하지 않고 부분적으로 줄입니다. 중복 ACK가 발생했을 때, cwnd를 절반으로 줄이고, 혼잡 회피 단계를 유지하면서 패킷 손실을 복구합니다.
: 송신 측과 수신 측 간의 데이터 전송 속도를 동기화하여 수신 측의 버퍼 오버플로우를 방지하는 메커니즘.
송신 속도를 수신 측의 처리 능력에 맞게 조절함으로써 안정적이고 효율적인 데이터 전송을 보장합니다.
흐름 제어 기법에는 Sliding Window 기법이 있습니다.
1. 연결 설정 (3 way handshake) 시, 수신 측은 초기 윈도우 크기를 송신 측에 전달합니다.
2. 송신 측은 윈도우 크기 내에서 데이터 패킷을 전송합니다.
3. 송신 측은 수신 측에서 ACK를 받을 때마다 윈도우를 이동시키며, 새로운 데이터를 전송합니다. 수신 측은 ACK와 함께 남은 버퍼 크기를 알려줍니다. 송신 측은 이를 바탕으로 전송 속도를 조정합니다.
4. 수신 측이 처리 속도를 따라잡지 못하면 윈도우 크기를 줄여 송신 속도를 제한합니다. 반대로 수신 측이 데이터를 빠르게 처리하면 윈도우 크기를 늘려 더 많은 데이터를 한 번에 전송할 수 있도록 합니다.
https://techjuny.tistory.com/entry/TCP-3-Way-Handshake-%EB%9E%80
https://gyoogle.dev/blog/computer-science/network/%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4%20&%20%ED%98%BC%EC%9E%A1%EC%A0%9C%EC%96%B4.html