UDP(User Datagram Protocol)

  • 데이터의 빠른 전달을 보장하기 위해 사용 된다.
  • 빠른 속도 보장을 위해 대부분의 기능을 제한 한다.
    • 비 신뢰성
    • 비 연결 지향성
    • 최소화된 Header
  • 단편화 크기 -> 512bytes
    • 재 전송 시 빠른 처리를 위하여 작은 단위로 데이터를 생성 한다.

UDP를 이용하는 Service 종류

  • 빠른 통신 속도가 필요한 서비스 -> 실시간 통신, 음성 서비스에 많이 사용 된다.
  • 정보 해석 및 전달 서비스
    • DNS -> UDP 53, DHCP -> UDP 67(S)/UDP 68(C)
  • 빠른 파일 전송
    • TFTP -> UDP 69

UDP Header

  • Header의 크기 -> (고정) 8bytes

udp1

  • Source Port Address(2bytes)
    • 출발지 서비스 주소(Port주소)
  • Destination Port(2bytes)
    • 목적지 서비스 주소(Port주소)
  • Length(2bytes)
    • Header + Payload 크기
  • Checksum (2bytes)
    • 4계층 Segment 전체와 3계층 정보 중 일부분에 대한 오류검사 값
    • Pseudo header를 구성하여 오류 검출을 수행 한다.

Pseudo Header

  • Layer 4의 오류검출
  • 오류검출 용 임시 Header를 이용 -> Pseudo Header(12bytes)
  • 보안, 기능성이 떨어지는 IP의 오류검출을 함께 수행한다.
  • IP의 일정 정보를 포함한 헤더를 생성한 후 TCP/UDP Segment에 Encapsulation 후 오류검출 수행
  • 초기상태의 checksum = 0
  • 오류검출 값으로 획득한 후 Pseudo Header를 삭제 -> 실 통신에는 Segment만 전달 됨

udp2

udp3

TCP(Transmission Control Protocol)

  • 데이터 전달의 신뢰성을 최대한 보장
  • 연결 지향
    • 데이터를 전달할 논리적인 연결을 먼저 구성 -> 3way Handshake
    • 연결 설정 -> 데이터 전송 -> 연결 종료
  • 신뢰성 보장
    • 순차적으로 데이터를 전송 한다.
    • 확인 응답 및 재전송을 한다.
  • 흐름제어
    • 데이터 전달에 지연 현상이 발생했을 때 데이터의 양을 조절 -> Sliding Window

TCP를 이용하는 Service 종류

  • 정확한 데이터 전달이 필요한 대부분의 서비스
  • 파일 전송 : FTP -> TCP 20(data), TCP 21(Control)
  • WEB 서비스 : HTTP -> TCP 80

TCP Header

  • Header 크기 -> Option필드의 크기에 따라 가변적으로 변한다. -> 최소 20byte ~ 최대 60byte
  • TCP의 동작을 지시하는 메시지를 생성하여 연결상태를 제어 한다. -> TCP Flags
  • 하나의 연결을 통해 한 단위의 Data(Application Data)를 전달한다.

udp4

0~4bytes Field

udp5

  • Source Port Address(2bytes)
    • 출발지 Port 주소
  • Destination Port Address(2bytes)
    • 목적지 Port 주소

5~12bytes Field

udp6

  • Sequence Number(4bytes)
    • 순서화된 일련번호
    • 초기순서번호는 임의의 값으로 설정(ISN - Initial Sequence Number)
    • 전송되는 데이터의 크기를 누적시키며 순서를 알려 준다
  • Acknowledgment Number(4bytes)
    • 확인 응답 번호
    • 데이터를 정상적으로 수신한 뒤 예상하는 다음 Sequence Number를 알려 준다.
      • 받은 Sequence Number + Payload 크기
      • 최초 SYN에 대한 응답 : TNTLSGKS Sqence Number + 1

13~16bytres Field

udp7

  • HLEN(4bits)
    • TCP Header 길이 값
    • 4개의 Bit로 표현되고 4bytes단위로 표시된다.(최대 길이 값 60bytes)
  • Reserved(4bits)
    • 예약된 Field
  • TCP Flags(1byte)
    • 논리적인 TCP 연결회선 제어 및 데이터 관리를 위해 사용
    • TCP 메시지의 종류를 명시 한다.
    • 1bit씩 메시지 종류가 지정되어 있고 해당 bit값이 설정되면 지정된 기능을 수행한다.
  • TCP Flags 상세

udp8

13~16bytres Field

udp9

  • Window (2bytes)
    • 통신의 상대방에게 자신의 버퍼 여유용량 크기를 지속적으로 알려 준다.
    • 능동적인 흐름제어를 위해 사용 된다.
    • Sliding Window 기법을 사용한다.

17bytes~Valiable Field

udp10

  • Checksum
    • 4계층 Segment 전체와 3계층 정보 중 일부분에 대한 오류검사 값
    • Pseudo Header 구성하여 오류 검출을 수행 한다.
  • Urgent Pointer
    • 긴급 데이터의 마지막 위치를 나타내는 값
  • TCP Options
    • 지정된 구조에 따라 옵션 설정
    • Option 종류(1byte) + Option 길이(1byte) + Option Data
  • TCP Options(0~40bytes)
    • 기본적으로 필수 옵션이 사용 된다.
    • type -> 옵션의 종류
    • length(byte) -> 옵션 data의 크기
    • option data -> 옵션 값
TYPE name Length 의미
2 MSS 4 Maximum Segment Size
현재 전달 받을 수 있는 버퍼의 여유 용량을 알림
TCP초기 최초에 한번만 전달되는 값(SYN)
최초 통신의 부하를 줄이기 위해 사용 된다. -> 일반적으로 처리 가능한 최소 단위의 크기를 알림
3 Wscale 3 Window Scale Factor
Window 필드로 표시할 수 없는 크기를 명시 한다.
4 SACK 2 Selective Acknowledgement data
선택적 확인응답 기능 지원 여부
5 SACK
data
가변 Selective Acknowledgement data

3way-Handshake

  • TCP 통신 시 상호간의 연결을 통해 신뢰성을 보장하기 위한 기법
  • TCP segment를 전달하기 전 목적지와의 통신상태를 확인
  • 정상 통신이 가능하면 논리적인 양방향 연결을 맺은 후 Segment를 전송

udp11

TCP 확인 응답

  • 일반 확인 응답
    • 출발지에서 Segment가 전달되면 반드시 목적지에서 전달 받았음을 확인 한다.
    • 출발지는 목적지의 확인응답 TCP 메시지를 전달 받아야지만 다음 순서의 데이터를 전달 할 수 있다.
    • Segment : ACK -> 1:1
  • 누적 확인 응답
    • TCP 연결 설정을 통해 한번에 보낼 수 있는 Segment의 양을 약속 한다.
    • 출발지 에서는 지정된 양에 해당하는 Segment를 목적지의 확인응답이 없어도 계속 전달 한다.
    • 목적지는 지정된 양의 Segment를 전달 받았을 때 하나의 확인응답을 전달 한다.
    • Segment : ACK -> N:1
  • 선택적 확인 응답
    • 누적 확인응답의 문제점의 해결 -> 중간에 손실된 Segment가 발생하면 정상적으로 전달받은 Segment까지 재전송을 해야 한다.
    • 누적 확인응답과 비슷하지만 확인응답을 할 때 재전송이 필요 없는 Segment의 정보를 알림으로 불필요한 재전송을 방지한다.

L4 Switch

  • TCP/UDP port번호를 이용하여 트래픽을 서비스 별로 분류하여 포워딩하는 장비
  • 주요 기능 -> Load Balancing

Load Balancing

  • 부하 분산
  • 특정 시스템이 받게 되는 부하를 동일한 기능을 수행할 수 있는 여러 시스템으로 분산
  • Server Farm에서 필수적으로 사용하는 기능

udp12