컴퓨터 네트워크에서 중요한 내용이며,
면접에서 무조건 물어볼만한 질문이라고 생각한다.
TCP와 UDP의 차이가 뭐죠?
해당 내용에 대해 대답을 제대로 하지 못한다면,
"네트워크에 대해 잘 모르는구나"라고 판단할 수 밖에 없다.
나 역시 제대로 설명하지 못하는 자신을 발견한 후,
한번 제대로 정리를 해보기로 했다.
네트워크를 구성하는 OSI 7계층 중,
4계층에 속하는 전송 계층에서
사용되는 프로토콜이다.
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며
즉, 데이터의 전달을 담당하는 계층이다.
전송 계층에서 데이터를 보내기 위해
사용되는 두 프로토콜이
TCP와 UDP다.
인터넷 상에서
데이터를 메세지 형태로 보내기 위해
3계층의 IP와 함께 사용하는 프로토콜이다.
연속성보다
신뢰성있는 전송이 중요할 때
사용되는 프로토콜
- 연결형 서비스로 연결이 성공해야 통신이 가능합니다.
- 3-way handshake 과정을 통해 연결을 하고, 4-way handshake를 통해 연결을 해제합니다.
- 데이터 흐름 제어 및 혼잡 제어
- 데이터 흐름 제어 : 수신자의 버퍼 오버플로우를 방지
- 혼잡 제어 : 패킷 수가 과도하게 증가하는 현상을 방지
- 높은 신뢰성을 보장한다
- 데이터의 순서를 유지해 각 바이트마다 번호를 부여해 해당 순서를 보장하며 전달
- UDP보다 속도가 느리다
- 전이중 (Full-Duplex), 점대점(Point to Point) 방식
TCP는 3 way handshake를 통해 연결하고,
4 way handshake를 통해 연결을 해제합니다.
전송계층의 비연결 지향적 프로토콜
비연결 지향적 : 데이터를 주고 받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식
비연결 지향적이라는 특징 덕분에
빠른 전송을 할 수 있지만
데이터 전달의 신뢰성은 매우 떨어집니다.
- 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다.
- 정보를 주고 받을 때, 신호 절차를 거치지 않는다.
- 신뢰성이 없는 데이터를 전송한다.
- 패킷 오버헤드가 적어 네트워크 과부화가 감소된다.
- TCP보다 전송속도가 빠르다.
해당 내용의 학습한 후,
어느 부분에
TCP를 사용하고
UDP를 사용하는지에 대한
차이를 학습할 수 있었다.
스트리밍 서비스의 경우 UDP를 사용합니다. 그외 HTTP, DB 등등 대부분 어플리케이션에서는 TCP를 사용하죠