IP의 비연결지향적이며 신뢰할 수 없는 문제를 해결해주는 것이 TCP이다. 데이터의 순서가 올바르게 전송 갔는지 확인해주며 대화를 주고받는다. 확인 절차를 걸치며 신뢰성 없는 IP에 신뢰성을 부여한 프로토콜 👉 TCP
송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법.
Flow Control은 receiver가 packet을 지나치게 많이 받지 않도록 조절하는 것이다.
→ receiver가 sender에게 현재 자신의 상태를 feedback 한다
TCP의 흐름제어 방식은 Window Sliding 방식을 사용한다. 이러한 Window Sliding 방식을 실용화하여 사용되는 알고리즘으로는 Stop&Wait, Go-Back-N, Selective Repeat(SR) 방식이 있다.
Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법
Go-Back-N : GBN은 누적 ACK (Accumulate ACK) 방식을 택한다. 누적 ACK란 수신자 측에서 받은 n을 포함하여, n까지의 pkt에 대한 확인 응답이란 뜻이다.
Selective Repeat : SR 프로토콜은 오류가 발생한 패킷만 재전송함으로써 불필요한 재전송을 피한다.
SR은 순서가 틀리게 온 메시지는 버퍼에 저장한 다음, 올바른 순서의 패킷이 오면 버퍼에서 이전에 받았던 메시지들을 꺼내서 순서를 조합한다.
클라이언트 -> 서버로 연결요청(sync)을 하고 클라이언트는 sync_sent 상태가 됨
서버는 요청을 수락(sync+ack)하고 서버는 sync_received 상태가 됨
클라이언트가 서버에 수락확인(ack)을 보냄
CLOSE_WAIT
상태를 갖는 것은 아니다.FIN
을 보낼 수 있고, 이런 경우 서버가 FIN_WAIT1
상태가 된다.close
를 요청하느냐에 따라 상태가 달라질 수 있다.실제 카카오 입사 시험 기출문제이기도 하고 면접에서 자주 물어보는 주제이니 자주 복습하기 🥕
참고사이트
cs 기술면접 질물 - 네트워크
TCP란 무엇인가?