TCP와 UDP 특징

nevermind·2023년 1월 4일
0

기술면접

목록 보기
21/25
post-custom-banner

TCP와 UDP는 OSI 7 계층 중 TCP/IP 전송계층에서 사용되는 프로토콜이다(4계층)

전송계층은 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스 제공 계층이다.
(즉, 데이터의 전달을 담당, 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당)

TCP

  • TCP는 연결 지향적 프로토콜이다
    - 연결 지향적 프로토콜 : 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미
  • TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메시지, 세그먼트라는 블록단위)안정적으로, 순서대로, 에러 없이 교환 할 수 있게 한다.

🤜 TCP의 특징

  1. 연결형 서비스로 가상 회선 방식을 제공
    • 3-way handshaking과정을 통해 연결을 설정
    • 4-way handshaking과정을 통해 연결을 해제
  2. 흐름 제어
    • 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
  3. 혼잡 제어
    • 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
  4. 높은 신뢰성 보장
    • 신뢰성이 높은 전송을 하기에 UDP보다 속도가 느림
  5. 전이중, 점대점 방식
    • 전이중(Full-Duplex): 전송이 양방향으로 동시에 일어날 수 있음
    • 점대점(Point to Poing): 각 연결이 정확히 2개의 종단점을 가지고 있다.

🤝 TCP 연결과정(3-way handshake)

3-way handshake를 간단히 표현하면 다음과 같다.
#1. Client -> Server : 내 말 들려?
#2. Server -> Client : 어 잘 들려! 내 말은 들려?
#3. Client -> Server : 잘 들려!

SYN(synchronize sequence numbers) - 연결 확인을 보내는 무작위의 숫자 값 (내 말 들려?)
ACK(acknowledgements) - Client 혹은 Server로부터 받은 SYN에 1을 더해 SYN을 잘 받았다는 ACK (잘 들려!)

  1. 먼저 Open 한 클라이언트가 SYN(내 말 들려?)를 보내고 SYN_SENT 상태로 대기한다.

  2. 서버는 SYN-RECEIVED 상태로 바꾸고 SYN과 응답 ACK(어 잘 들려! 내 말은 들려?)를 보낸다.

  1. SYN과 응답 ACK를 받은 클라이언트는 ESTABLISHED 상태로 변경하고 서버에게 응답 ACK(잘 들려!)를 보낸다.

  2. 응답 ACK를 받은 서버는 ESTABLISHED 상태로 변경한다.

✋ TCP의 연결 해제 과정(4-way handshake)

4-way handshake를 간단히 표현하면 다음과 같다.

#1. Client -> Server : 나는 다 보냈어! 이제 끊자!
#2. Server -> Client : 알겠어! 잠시만~
#3. Server -> Client : 나도 끊을게!
#4. Client -> Server : 알겠어!

  1. 먼저 close를 실행한 클라이언트가 FIN(연결 끊자!)을 보내고 FIN-WAIT-1 상태로 대기한다.
  2. 서버는 CLOSE-WAIT으로 바꾸고 응답 ACK(알겠어! 잠시만~)를 전달한다. 동시에 해당 포트에 연결되어 있는 애플리케이션에게 close를 요청한다.
  3. ACK를 받은 클라이언트는 상태를 FIN-WAIT-2로 변경한다.
  4. close 요청을 받은 서버 애플리케이션은 종료 프로세스를 진행하고 FIN(나도 끊을게!)을 클라이언트로 보내 LAST_ACK 상태로 바꾼다.
  5. FIN을 받은 클라이언트는 ACK(알겠어!)를 서버에 다시 전송하고 TIME-WAIT으로 상태를 바꾼다.

UDP

  • 비연결형 프로토콜
  • 연결을 위해 할당되는 논리적인 경로가 없고, 각각의 패킷은 다른 경로로 전송되며 독립적인 관계를 지님

🤜 UDP의 특징

  • 비연결형 서비스로 데이트그램 방식을 제공(데이터의 전송 순서 바뀔 수 있음)
  • 데이터 수신 여부 확인x(TCP의 3-way handshaking 과정 x)
  • 신뢰성이 낮다
  • TCP보다 속도가 빠르다
  • 1:1 & 1:N & N:N 통신 가능

TCP와 UDP 비교

정리하면

TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용되는 프로토콜
UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만 신뢰성있는 데이터 전송을 보장하지는 않는다. 그렇기에 신뢰성보다는 연속성이 중요한 실시간 스트리밍 같은 서비스에 자주 사용된다


출처: 감사합니다!
https://mangkyu.tistory.com/15
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://seongonion.tistory.com/74

profile
winwin
post-custom-banner

0개의 댓글