TCP vs UDP

이수동·2022년 5월 25일
29
post-thumbnail

🤔 시작하기 앞서...

컴퓨터 네트워크에서 중요한 내용이며,
면접에서 무조건 물어볼만한 질문이라고 생각한다.

TCP와 UDP의 차이가 뭐죠?

해당 내용에 대해 대답을 제대로 하지 못한다면,
"네트워크에 대해 잘 모르는구나"라고 판단할 수 밖에 없다.

나 역시 제대로 설명하지 못하는 자신을 발견한 후,
한번 제대로 정리를 해보기로 했다.



TCP, UDP란?

네트워크를 구성하는 OSI 7계층 중,
4계층에 속하는 전송 계층에서
사용되는 프로토콜이다.

전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며
즉, 데이터의 전달을 담당하는 계층이다.



전송 계층에서 데이터를 보내기 위해
사용되는 두 프로토콜이
TCP와 UDP다.



TCP

인터넷 상에서
데이터를 메세지 형태로 보내기 위해
3계층의 IP와 함께 사용하는 프로토콜이다.

연속성보다
신뢰성있는 전송이 중요할 때
사용되는 프로토콜



TCP의 특징

  • 연결형 서비스로 연결이 성공해야 통신이 가능합니다.
  • 3-way handshake 과정을 통해 연결을 하고, 4-way handshake를 통해 연결을 해제합니다.
  • 데이터 흐름 제어 및 혼잡 제어
    • 데이터 흐름 제어 : 수신자의 버퍼 오버플로우를 방지
    • 혼잡 제어 : 패킷 수가 과도하게 증가하는 현상을 방지
  • 높은 신뢰성을 보장한다
    • 데이터의 순서를 유지해 각 바이트마다 번호를 부여해 해당 순서를 보장하며 전달
  • UDP보다 속도가 느리다
  • 전이중 (Full-Duplex), 점대점(Point to Point) 방식


TCP의 연결 및 해제 방식

TCP는 3 way handshake를 통해 연결하고,
4 way handshake를 통해 연결을 해제합니다.

3 way handshake

  • A 클라이언트는 B 서버에 접속을 요청하는 SYN 패킷을 전송합니다.
  • B 서버는 SYN 요청을 받고 A 클라이언트에게 요청을 수락한다는 ACK + SYN flag가 설정된 패킷을 전송합니다.
  • A 클라이언트는 B 서버에게 ACK를 전송 후 연결이 이루어지고 데이터가 오고 가게 됩니다.


4 way handshake

  • 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송합니다.
  • 서버는 확인메세지 ACK를 보낸 후, 자신의 통신이 끝날때까지 기다립니다.
  • 서버의 통신이 끝났으면 연결이 종료되었다고 클라이언트에 FIN 플래그를 전송합니다
  • 클라이언트는 확인했다는 메세지 ACK를 보냅니다.
    • 만약, Client에서 세션을 종료시킨 뒤 도착하는 패킷이 있다면 해당 패킷은 Drop되고 데이터는 유실되게 됩니다.
    • 이러한 현상을 위해 Client는 Server로부터 FIN을 수신하더라도 일정시간동안 세션을 남겨놓고 잉여 패킷을 기다리는 TIME_WAIT과정을 마지막으로 거치게 됩니다.


UDP

전송계층의 비연결 지향적 프로토콜

비연결 지향적 : 데이터를 주고 받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식

비연결 지향적이라는 특징 덕분에
빠른 전송을 할 수 있지만
데이터 전달의 신뢰성은 매우 떨어집니다.



UDP의 특징

  • 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다.
  • 정보를 주고 받을 때, 신호 절차를 거치지 않는다.
  • 신뢰성이 없는 데이터를 전송한다.
  • 패킷 오버헤드가 적어 네트워크 과부화가 감소된다.
  • TCP보다 전송속도가 빠르다.


UDP의 연결 방식

  1. 서버에서 클라이언트에 데이터 요청을 보낸다.
  2. 클라이언트는 계속해서 서버에 데이터를 전송한다.


TCP, UDP의 한줄 요약

  • TCP : 연속성, 속도보다 신뢰성있는 전송이 더 중요할 때 사용한다.
  • UDP : 신뢰성보다 연속성, 속도가 더 중요할 때 사용한다.
    • Ex) 실시간 스트리밍 서비스


🤩 느낀점

해당 내용의 학습한 후,
어느 부분에
TCP를 사용하고
UDP를 사용하는지에 대한
차이를 학습할 수 있었다.



참고한 자료

profile
기록을 통한 성장하기 🧐

8개의 댓글

comment-user-thumbnail
2022년 5월 26일

스트리밍 서비스의 경우 UDP를 사용합니다. 그외 HTTP, DB 등등 대부분 어플리케이션에서는 TCP를 사용하죠

1개의 답글
comment-user-thumbnail
2022년 5월 27일

썸네일 웃겨서 들어왔는데 잘 봤습니다.🤣

1개의 답글
comment-user-thumbnail
2022년 6월 2일

썸네일 재치있으시네요 😆
참고로 HTTP/3 의 표준으로 채택예정인 QUIC(구글개발프로토콜) 는 UDP를 사용하고있어요!
구글에서 TCP의 제약과 성능저하가 맘에 안들어서 UDP를 기반으로 TCP보다 뛰어난 보안기술들을 접목해서 커스터마이징 했다네요 ㄷㄷ...

1개의 답글
comment-user-thumbnail
2022년 6월 9일

연결을 종료할 때 4way가 아닌 3way로 처리되는 경우도 존재하더라고요!

1개의 답글