cs 공부

TCP/UDP에 대해서 설명해주세요.

늘곰's 2023. 12. 11. 18:29

TCP와 UDP는 네트워크에서 데이터를 전송하는데 사용되는 프로토콜입니다.

TCP (Transmission Control Protocol)

1.연결 지향적인 프로토콜로, 통신 전에 연결을 설정하고 통신 후에는 연결을 해제

2. TCP의 3-way handshake는 클라이언트가 서버에게 SYN 패킷을 보내고, 서버가 SYN-ACK로 응답하며, 클라이언트가 ACK로 최종 응답하여 연결

3.데이터 전송의 신뢰성을 보장하기 위해 흐름 제어, 오류 복구, 재전송 등의 기능을 제공

4.패킷 전송 순서를 보장하여 데이터를 순차적으로 전달

5.대표적으로 웹 브라우징, 이메일 전송 등 신뢰성이 요구되는 곳에서 사용

UDP (User Datagram Protocol)

1. 비연결 지향적인 프로토콜로, 연결 설정 및 해제 과정이 없습니다.

2. 신뢰성이 낮고 간단한 헤더 구조를 가지고 있어 전송 속도가 빠릅니다.

3. 흐름 제어 및 오류 복구 기능이 없어 일부 데이터 손실이 발생할 수 있습니다.

4. 대표적으로 DNS 조회, 스트리밍 서비스 등에서 사용됩니다.

 

꼬리질문

 

1. TCP와 UDP 중 어떤 상황에서 어떤 것을 선택해야 할까요?

TCP는 데이터 전송의 신뢰성이 중요한 상황에서 사용되며, 예를 들어 파일 전송, 웹 페이지 요청과 같이 신뢰성이 요구되는 곳에 적합하고  UDP는 속도가 중요하고 손실이 발생해도 괜찮은 곳에 사용되며, 예를 들어 실시간 영상 스트리밍, 음성 통화와 같이 빠른 응답이 필요한 경우에 적합합니다.

 

2. TCP의 3-way handshake 매커니즘에 대해 설명해주세요

1. SYN (Synchronize):

클라이언트가 서버에게 통신을 시작하고자 하는 의사를 전달하기 위해 SYN 패킷을 보냄

2. SYN-ACK (Synchronize-Acknowledgment):

서버는 클라이언트의 SYN을 받고, 클라이언트의 초기 순차 번호에 1을 더한 값을 자신의 초기 순차 번호로 선택하여 SYN-ACK 패킷을 생성하여 클라이언트에게 전송 ( 패킷은 서버가 클라이언트의 통신 요청에 응답할 준비가 되었음을 알림)

3. ACK (Acknowledgment):

클라이언트는 서버의 SYN-ACK를 받으면, 서버의 초기 순차 번호에 1을 더한 값을 자신의 초기 순차 번호로 선택하여 ACK 패킷을 생성하여 서버에게 전송 ( 클라이언트는 서버의 응답을 받았으며, 서버와의 신뢰성 있는 연결 확인)