[컴퓨터네트워크] TCP & UDP 정리

[컴퓨터네트워크] TCP & UDP 정리

TCP 프로토콜(Transmission Control Protocol)

플래그 M 비트 : 끝이냐(0) 끝이 아니냐(1)

OSI 계층모델의 관점에서 전송 계층(4계층)에 해당
양 종단 호스트 내 프로세스 상호 간의 신뢰적인 연결지향적 서비스를 제공
  • IP의 비신뢰적인 최선형 서비스에다가 신뢰적인 연결지향성 서비스를 제공하게 됨
  • 신뢰적인 전송을 보장함으로써, 어플리케이션 구현이 한층 쉬워지게 됨

1. 신뢰성 있음 (Reliable)
  • 패킷 손실, 중복, 순서바뀜 등이 없도록 보장
  • TCP 하위계층인 IP 계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성을 제공

2. 연결지향적 (Connection-oriented)
  • 같은 전송계층의 UDP가 비연결성(connectionless)인 것과는 달리, TCP는 연결지향적임
  • 이 경우, 느슨한 연결(Loosly Connected)을 갖으므로 강한 연결을 의미하는 가상회선이라는 표현보다는 오히려 연결지향적이라고 말함
  • 연결 관리를 위한 연결설정 및 연결해제 필요 
  • 양단간 어플리케이션/프로세스는 TCP가 제공하는 연결성 회선을 통하여 서로 통신


UDP 프로토콜(User Datagram Protocol)

발신지 포트, 목적지 포트는 필수, 체크섬은 옵션
전송 계층의 통신 프로토콜의 하나(TCP에 대비됨)
  • 신뢰성이 낮은 프로토콜로써 완전성을 보증하지 않으나
    • 단, 출발지 포트 번호목적지 포트 번호를 포함함
  • 가상회선을 굳이 확립할 필요가 없고 유연하며 효율적 응용의 데이터 전송에 사용

1. 비연결성이고, 신뢰성이 없으며, 순서화되지 않은 Datagram 서비스 제공
  • 메시지가 제대로 도착했는지 확인하지 않음 (확인응답 없음)
  • 수신된 메시지의 순서를 맞추지 않음 (순서제어 없음)
  • 흐름 제어를 위한 피드백을 제공하지 않음 (흐름제어 없음)
  • 검사합을 제외한 특별한 오류 검출 및 제어 없음 (오류제어 거의 없음)
    • UDP를 사용하는 프로그램 쪽에서 오류제어 기능을 스스로 갖춰야 함
    • 체크섬을 통한 간단한 오류검사는 가능 -> 체크섬은 선택
  • 데이터그램 지향의 전송 계층용 프로토콜 (논리적인 가상회선 연결이 필요 없음)
    • 비연결접속상태 하에서 통신

2. 실시간 응용 및 멀티캐스팅 가능
  • 빠른 요청과 응답이 필요한 실시간 응용에 적합
  • 여러 다수 지점에 전송 가능 (1:)

3. 헤더가 단순함
  • UDP는 TCP처럼 16비트의 포트 번호를 사용하나
  • 헤더는 고정크기의 8바이트(TCP는 20바이트)만 사용
    • 즉, 헤더 처리에 많은 시간과 노력을 요하지 않음

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?