업데이트:

TCP와 UDP

TCP와 UDP는 OSI 모형의 4번째 계층인 전송 계층(Transport Layer)에서 사용되는 프로토콜로 데이터를 보내기 위해 사용한다.

TCP, UDP 미리보기


🗣️ 데이터를 누락 없이, 확실히 주고 받고 싶어! — TCP

🗣️ 다 필요 없고 데이터 전송 속도가 중요해! — UDP

용어 정리


TCP와 UDP에 대해 알아보기 전에 용어를 먼저 정리해보자. 모르는 용어가 너무 많았다..

💡 연결 지향형 프로토콜

: 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받는 프로토콜

💡 비연결형 프로토콜

: 전송 전에 미리 연결을 설정하지 않고 발신자가 일방적으로 데이터를 전달하는 프로토콜

💡 흐름 제어

: 송신과 수신의 데이터 처리 속도 차이를 조절해주는 것

💡 혼잡 제어

: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것

💡 패킷

: 인터넷 내에서 데이터를 주고받을 때 라우팅을 효율적으로 하기 위해 나눈 데이터 조각

💡 전이중 전송방식 Full Duplex

: 데이터를 항상 양방향으로 동시에 전송 가능

💡 점대점 방식 Point to Point

: 양 노드 또는 네트워크가 1 : 1로 연결된 구조

Transmission Control Protocol, TCP

TCP(전송 제어 프로토콜)는 연결 지향형 프로토콜로 신뢰성을 보장한다. 일반적으로 IP와 함께 사용되며 IP는 데이터 전송의 처리를, TCP는 패킷 추적 및 관리를 담당한다.

특징


  • 전송되는 데이터의 신뢰성 보장 (흐름 제어, 혼잡 제어, 오류 제어)
  • 가상 회선을 만들어 신뢰성을 보장
  • 데이터의 전송 순서를 보장 (각 바이트마다 번호 부여)
  • 데이터의 경계를 구분하지 않음 (Byte Stream 서비스)
  • 전이중 (Full Duplex), Point to Point 서비스
  • 1 : 1 통신만 가능
  • UDP 보다 상대적으로 데이터 전송 속도가 느림

사용


  • 서버 연결
  • 이메일 전송
  • 파일 전송

작동


1. 연결 생성 (3-way handshaking 사용)

SYN : 클라이언트가 서버에게 SYN 메시지 전송

SYN-ACK : 서버가 클라이언트에게 SYN-ACK 메시지로 응답

ACK : 클라이언트가 서버에게 ACK 메시지 전송

정해진 시간이 지났거나 중복 ACK가 도착하면 재전송 시도

2. 자료 전송

3. 연결 종료 (4-way handshaking 사용)

TCP 세그먼트 구조


IP Datagram 안에 TCP 세그먼트가 캡슐화 되어있다. 세그먼트는 헤더데이터 섹션으로 구성되며 헤더는 10개의 필수 필드 및 옵션 확장 필드들을 포함한다. 몇 개만 알아보자.

Checksum

: 헤더 및 데이터의 에러 확인

Sequence number

: 순서 번호로 순서가 어긋나지 않도록 함

Acknowledgement number

: 확인 응답 번호로 실제 수신 여부 확인 및 그 다음 순서를 지시, 데이터에 대한 응답 포함 X

User Datagram Protocol, UDP

UDP(사용자 데이터그램 프로토콜)은 비연결형 프로토콜로 데이터를 데이터그램 단위로 처리한다. TCP보다 빠른 전송이 가능하지만 데이터 전달의 신뢰성은 떨어진다.

특징


  • 신뢰성 없는 데이터 전송 (데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않음)
  • 연결 없이 통신 가능
  • 패킷 오버헤드가 적어 네트워크 부하 감소
  • 데이터의 경계 구분 (Datagram 서비스)
  • 패킷 관리 필요
  • Checksum 필드로 최소한의 오류만 검출
  • TCP 보다 상대적으로 데이터 전송 속도가 빠름

사용


  • 주로 실시간 서비스
  • 도메인 이름 서비스 DNS
  • 음성 인터넷 프로토콜 VoIP
  • 온라인 게임

작동


TCP vs. UDP


- TCP UDP
연결 방식 연결형 서비스 비연결형 서비스
패킷 교환 방식 가상 회선 방식 (데이터 경계 구분 X) 데이터그램 방식 (데이터 경계 구분 O)
전송 순서 보장 O X
수신 여부 확인 O X
통신 방식 일대일 통신 일대일, 일대다, 다대다(Multicast) 통신
신뢰성 높음 (데이터 재전송 O) 낮음 (데이터 재전송 X)
속도 느림 빠름

Notice: 이 게시물은 coding-factory.tistory.com, mangkyu.tistory.com 사이트를 참고하였습니다.

댓글남기기