면접준비(2-1) 네트워크 편 : TCP와 UDP

Edwin·2023년 5월 4일
0

면접준비

목록 보기
2/6

네트워크 편(2-1) TCP와 UDP

(1) Transmission Control Protocol : TCP

TCP 대표적 사례 : HTTP, FTP, SMTP, TELNET

TCP는 인터넷 프로토콜 중 가장 많이 사용되는 전송 계층 프로토콜(규약) 가운데 하나이다. 한글로는 "전송 제어 프로토콜"이라고 불려지며, 2개의 호스트의 연결을 지향하고 3-way handshaking를 통해서 통신이 이뤄지는 방식을 말한다. 이 과정에서 TCP는 옥텟(8비트)을 안정적으로, 그리고 순차적으로, 에러없이 데이터를 주고받는다.

  • SYN : 동기화 패킷 Synchronize
  • SYN+ACK
  • ACK : 승인 패킷 Acknowledement

TCP(전송제어프로토콜)이 호스트 간에 연결을 설정하는 방법은 “SYN/ACK”으로 이뤄진다.

  • (1) 서버는 클라이언트의 동기화 패킷을 기다린다.
  • (2) 클라이언트로부터 동기화 패킷(능동개방, 시퀀스 번호 생성)을 서버로 보내고, 서버는 이를 받는다.
  • (3) 서버는 자신만의 시퀀스 번호를 생성하고 SYN(클라 시퀀스+1[서버 시퀀스])를 ACK 박스에 담아보낸다
  • (4) 클라이언트는 ACK패킷에서 시퀀스 번호가 자신이 보낸 번호인지 확인, 다시 SYN+1 서버로 보낸다.
  • (5) 서버는 SYN(클라 시퀀스+1[서버 시퀀스])+1을 통해 자신이 보낸 시퀀스인지 확인하고
  • (6) 이것이 확인되면, 본격적인 통신을 시작할 준비를 한다.

(2) User Datagram Protocol : UDP

UDP 대표적 사례 : DNS, DHCP, 비디오/오디오 스트리밍

한글로 ‘사용자 데이터그램 프로토콜’은 TCP와 함께 데이터그램으로 알려진 단문 메시지를 교환하기 위해서 사용된다. UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 한다. UDP는 일반적으로 오류의 검사와 수정이 필요 없는 애플리케이션에서 수행할 것으로 가정한다.

UDP는 전송 속도가 빠르고 오버헤드가 적은 통신에서 활용된다. DNS(Domain Name System)은 도메인의 이름을 IP주소로 변환해 주는데, 클라이언트가 DNS서버에게 질의 메시지를 보내면, DNS서버는 UDP 패킷을 사용하여 클라이언트에게 응답을 보낸다.

비디오/오디오 스트리밍은 매우 큰 데이터 양을 빠르게 전송해야 하기 때문에 UDP프로토콜을 사용하여 동작한다. TCP는 전송할 데이터를 나누어 여러 번 전송하고, 순차적으로 보내는데, 지연이 발생될 수 있다. 그러기에 UDP를 사용하여 데이터를 한번에 보내고, 전송이 실패하면 다시 전송하는 방식으로 동작하며, 전송 속도가 빠르고 지연이 적은 비디오.오디오 스트리밍 서비스를 제공하는 것이다.

(3) TCP 와 UDP 의 차이

  • 둘 다 패킷 교환 방식을 사용하지만, 몇 가지 차이점이 있다.
  1. 연결 지향성 (Connection-oriented) : TCP는 연결 지향 프로토콜이므로, 데이터를 주고받기 전에 연결 설정(3-way handshake)을 수행합니다. 반면, UDP는 비연결형 프로토콜로서 연결 설정을 하지 않고 데이터를 바로 전송한다.
  2. 높은 신뢰성 (Reliability) : TCP는 패킷 손실이나 오류를 감지하고 재전송을 요청함으로써 높은 신뢰성을 보장한다. UDP는 이러한 기능을 제공하지 않아, 패킷 손실이나 오류가 발생할 경우 애플리케이션에서 별도로 처리해야 한다.
  3. 순서대로 전송 (Ordered Delivery) : TCP는 데이터를 전송할 때 패킷에 일련번호(Sequence number)를 부여하여 순서대로 전송됨을 보장한다. UDP는 데이터그램이 도착한 순서대로 전달되며, 순서가 보장되지 않는다.
  4. 전 이중 방식 (Full-Duplex) : TCP(양방향 통신)는 전 이중 방식으로 데이터를 주고받을 수 있다. 즉, 동시에 양방향으로 데이터를 전송할 수 있다. UDP(반방향 통신)는 반 이중 방식으로 데이터를 전송할 수 있다. 즉, 단방향으로만 데이터를 전송할 수 있다.
  5. 바이트 스트림 (Byte Stream) : TCP는 바이트 스트림 방식으로 데이터를 전송한다. 이는 데이터를 일련의 바이트로 처리하며, 패킷의 크기나 경계를 고려하지 않는다. UDP는 데이터그램 단위로 전송되며, 패킷의 크기나 경계가 존재한다.
  • TCP : 데이터를 일정한 크기의 블록으로 나누지 않고, 전체 데이터를 바이트 단위로 쪼개서 전송 → 전송되는 데이터의 크기가 유동적이고 → 패킷의 경계가 없으며 → 세그먼트(segment; 헤더와 데이터로 구성) 단위로 나눠서 전송하며, 시퀀스 번호/확인응답번호/윈도우 크기 등을 포함한다.
  • UDP : 데이터를 데이터그램 방식으로 전송하는데, 이는 전체 데이터를 일정한 크기의 블록으로 나누어 전송하는 방식으로, 일정한 데이터의 크기로 전달되기에 패킷의 경계가 분명하다. 이 역시 헤더와 데이터로 이루어진 패킷 단위로 전송하며, 출발지 포트, 목적지 포트, 데이터그램 길이, 체크섬 등의 정보를 포함한다.
  • 이는 전송 속도의 차이에 있는데, UDP는 데이터의 높은 전송속도를 위해서 이 방식을 채택하였다.

따라서, TCP는 연결 지향성, 높은 신뢰성, 순서대로 전송, 전 이중 방식, 바이트 스트림 방식을 지향한다. 반면, UDP는 비연결형, 높은 성능을 지향하며, 데이터 전송의 속도가 중요한 경우에 사용된다.

profile
신학전공자의 개발자 도전기!!

0개의 댓글