들어가기 전
OSI 7 계층에서 전송 계층에서 사용되는 프로토콜(규약)이다.
전송 계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 데이터의 전달을 담당한다.
그리고 데이터를 보내기 위해 사용되는 프로토콜이 있는데, 바로 TCP와 UDP이다.
TCP(Transmission Control Protocol)
전송을 제어하는 프로토콜이라는 뜻으로, 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다.
TCP/IP 프로토콜이라고 불리기도 하는데, 메신저에서 친구와 채팅을 하거나, 이메일을 보내는 등 TCP 프로토콜을 사용한다.
TCP는 연결 기반이므로 데이터를 전송하는 동안 수신자와 발신자 사이에 연결을 설정하고 이를 유지한다.
특징
- 연결형 서비스로 가상 회선 방식을 제공
- 3-way handshaking 과정을 통해 연결을 설정
- 4-way handshaking 과정을 통해 연결을 해제
- 흐름제어
- 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
- 혼잡 제어
- 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
- 높은 신뢰성 보장
- 수신자와 연결된 상태로 전송을 하기 때문에 신뢰성이 보장
- 전이중, 점대점 방식
- 전이중(Full-Duplex) : 전송이 양방향으로 동시에 일어날 수 있다.
- 점대점(Point to Point) : 각 연결이 정확히 2개의 종단점을 가지고 있다.
패킷 : 데이터를 여러 개의 조각들로 나누어 전송을 하는데, 이 조각을 패킷이라고 한다.
3-way handshaking : 클라이언트와 서버가 총 3번 주고받으며 연결을 설정 (클SYN서, 서SYN + ACK클, 클ACK서)
4-way handshaking : 클라이언트와 서버가 총 4번 주고받으며 연결을 해제 (클FIN서, 서ACK클, 서FIN클, 클ACK서)
UDP (User Datagram Protocol)
사용자 데이터그램 프로토콜이라는 뜻으로, 데이터를 데이터그램(메시지) 단위로 처리하는 프로토콜이다.
UDP는 TCP에 비해 안정성은 떨어지지만 더 빠르고 간단해서 스트리밍이나 게임과 같이 빠른 속도가 중요한 상황에서 자주 사용된다.
UDP는 비연결 방식이므로 두 당사자 간에 사전 연결을 설정하지 않는다. 그 과정에서 데이터가 손실될 가능성이 있지만, 그 대신 훨씬 빠른 속도를 얻을 수 있다.
특징
- 비연결형 서비스로 데이터그램 방식을 제공
- 데이터의 전송 순서가 바뀔 수 있다.
- 데이터 수신 여부를 확인하지 않는다.
- 3-way handshaking과 같은 과정이 없다.
- 신뢰성보다는 연속성이 중요한 서비스에 자주 사용된다.
- 브로드캐스트 및 멀티캐스트 기능을 통해 1:1 & 1:N & N:N 통신이 가능하다
한눈에 비교
프로토콜 종류 | TCP | UDP |
연결 방식 | 연결형 서비스 (패킷 교환 방식) |
비연결형 서비스 (데이터그램 방식) |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔 수 있음 |
수신 여부 확인 | 수신여부를 확인함 | 수신 여부를 확인하지 않음 |
통신 방식 | 1 : 1 통신 | 1 : 1 & 1 : N & N : N |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
실전
Q. TCP와 UDP의 차이에 대해 설명해 주세요.
A. TCP와 UDP 모두 데이터를 전송하는 프로토콜이며, 두 프로토콜은 연결 방식에서 차이가 있습니다. 먼저 TCP는 연결형 서비스로, 패킷 교환 방식이며 송신자와 수신자가 연결되어 데이터를 전송하는 방식입니다. 전송의 순서를 보장하고 수신여부를 확인하고 있기 때문에 신뢰성이 높고, 흐름제어와 혼잡제어의 특징이 있습니다. 하지만 1대1 통신만 지원하며 속도는 느린 편입니다. 반면에 UDP는 비연결형 서비스로, 데이터그램 방식이며 송신자가 일방적으로 데이터를 전송하는 방식입니다. 브로드 캐스트 및 멀티 캐스트로 1대N이나 N대N으로 통신이 가능하고, 연결되어 수신여부를 확인하지 않기 때문에 훨씬 빠른 속도를 특징으로 가지고 있습니다. 하지만 데이터의 전송 순서가 보장되지 않고, 신뢰성 또한 낮은 편입니다.
참고
https://mangkyu.tistory.com/15
https://dev-coco.tistory.com/144
항해 개발자 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.
IT 커리어 성장 코스 항해99, 개발자 취업부터 현직자 코스까지
항해99는 실무에 집중합니다. 최단기간에 개발자로 취업하고, 현직자 코스로 폭발 성장을 이어가세요. 실전 프로젝트, 포트폴리오 멘토링, 모의 면접까지.
hanghae99.spartacodingclub.kr
'멋진 개발자 > Network' 카테고리의 다른 글
개발자 취준 기록 37 - HTTP 상태 코드 (0) | 2024.04.01 |
---|---|
개발자 취준 기록 32 - HTTP Method (0) | 2024.03.27 |
[항해 취업코스] 개발자 취준 기록 25 - HTTP & HTTPS (0) | 2024.03.20 |
[항해 취업코스] 개발자 취준 기록 24 - 쿠키와 세션 (0) | 2024.03.19 |
[항해 취업코스] 개발자 취준 기록 22 - CORS는 무엇인가 (2) | 2024.03.16 |