[네트워크관리사 2급 독학로그] UDP 와 TCP 정리

UDP

UDP 비연결형 서비스

  • UDP 정의
    • User Datagram Protocol
    • 전송 계층 프로토콜
      • Process-to-process protocol
      • [비교대상] IP : host-to-host protocol
    • 비연결성과 비신뢰성
    • 기본적인 IP 데이터 전달 서비스에 프로세스 간 통신이 추가된 형태이다.
    • 연결성 보장과 신뢰적 전송에 소요되는 오버헤드가 없다.
    • 간단한 메시지를 송수신 하는데 유리하다.
  • 응용 프로세스의 데이터 전송
    • 응용 프로세스는 다음 프로토콜을 이용하여 데이터를 다른 응용 프로세스 전송을 할 수 있다.
      • UDP : 비연결형,비신뢰성 전송 서비스
      • TCP : 연결형,신뢰성 전송 서비스
    • 포트 번호 사용(프로세스들을 구별하기 위함)
  • UDP의 특징
    • UDP = 비연결형 IP 전달 서비스 + 검사합(checksum) 기능
    • 최종 목적지의 데이터 수신 여부를 확인하지 않는다.
      • 데이터 손실 가능성이 있다.
    • 메시지의 도착 순서를 재조정 하지 않는다.
      • 데이터의 순서가 틀릴 가능성이 있다.
    • 호스트 사이에 데이터 흐름 제어가 없다.
      • 수신자 처리 용량을 초과하는 데이터 발생 가능성이 생긴다.
  • UDP의 장단점
    • 장점 : TCP 보다 데이터 전송 속도가 빠르고 응용 프로그램이 간단해진다.
    • 단점 : UDP를 사용하는 응용 프로그램은
      • 메시지손실,중복수신,수신지연,잘못된 순서 등을
      • 처리하기 위한 신뢰성 제어 기능을 제공해야 한다.

UDP 사용자 데이터그램

  • UDP 데이터그램 형식
    • 1.UDP 발신지 포트 (16bit)
      • 발진지 프로세스 포트 번호
    • 2.UDP 목적지 포트 (16bit)
      • 목적지 프로세스 포트 번호
    • 3.UDP 전체 길이 (16bit)
      • 데이터그램 전체 길이 ( 헤더길이 + 데이터길이)
    • 4.UDP 검사 합(16bit)
      • 데이터그램 전체의 오류 검사용

UDP 데이터그램 형식

UDP  가짜 헤더

  • UDP 가짜 헤더 (pseudo header)
    • UDP 데이터그램이 정확히 목적지에 도착하였는지를 2중으로 인증하기 위해 사용한다.
    • IP주소 확인, 오류 검증 (검사합)
      • UDP  헤더는 단지 포트번호만 가지고 있고 IP 주소 정보는 없다.

UDP  가짜 헤더

UDP 포트 번호

  • Process - to - process 통신
    • 포트 번호
      • 서버 프로세스는 잘 알려진 포트 번호 사용한다. (well-known port)
      • 클라이언트 프로세스는 임시 포트 번호를 사용한다.

 


TCP

전송제어 프로토콜

  • TCP 정의
    • Transmission Control Protocol
      • 신뢰성이 요구되는 응용
        • UDP : 응용 프로그램에서 신뢰성 보장
        • TCP : 전송 계층 (TCP)에서 신뢰성 보장
      • 방대한 양의 데이터 전송 -> TCP 사용
      • 간단한 메시지 송수신 -> UDP 사용
    • 전송 계층 프로토콜
      • Process - to - process protocol
    • 연결지향 (connection - oriented) 전송 서비스
      • 연결 설정 - 데이터 전송 - 연결 해제
      • TCP 연결 식별자 : 송신측 TCP 종점 주소, 수신측 TCP 종점 주소
    • 신뢰성
      • 흐름 제어 (sliding window protocol)
      • 오류 제어 (응답 패킷, 시간 초과, 재전송 방식 )

신뢰성 제공

  • 신뢰성 제공 방법
    • 연결지향(connection-oriented)데이터 전송
    • Segment 단위의 전송 (MSS:Maximum Segment Size)
    • 흐름제어(low contorl:sliding window 사용)
    • 오류 제어 (응답 패킷, 시간 초과,재전송 방식)
      • 타이머 관리
      • checksum,순서 보장,중복 패킷 방지

타이머 이용) 패킷 손실과 응답 손실에 대한 재전송 과정

TCP 세그먼트 형식

  • TCP Segment
    • header (20~60 bytes) + Application data
    • 1.발신지 포트 (2 bytes) : 발신지 TCP 사용자 프로세스 식별
    • 2.목적지 포트 (2 bytes) : 목적지 TCp 사용자 프로세스 식별
    • 3.순서 번호 (sequence number , 4 bytes)
      • 데이터 필드의 첫번째 데이터 바이트의 순서 번호
    • 4.응답 번호 (ACK number , 4 bytes)
      • 송신측으로부터 받은 세그먼트에 대한 응답.
      • 바로 다음에 받기를 기대하는 순서 번호를 의미한다.
      • 예시) 순서번호가 x인 세그먼트를 수신하면 응답번호는 x+1을 사용함.
    • 5.헤더 길이 (HLEN, 4 bits)
      • 4바이트 단위로 표시되는 헤더의 길이
      • 5~15 사이의 값을 입력, (5-> 20바이트, 15->60바이트)
    • 6.예약 ( Reserved , 6 bits )
    • 7.제어 (flag bits , 6 bits )
      • 1) URG : 긴급 포인터 (urgent pointer) 필드가 유효함을 표시한다.
      • 2) ACK : 응답번호가 유효함을 표시한다.
      • 3) PSH : 가능한 빨리 현재 세그먼트를 상위 계층에 전달해야 할 때 표시
      • 4) RST : 연결을 재설정 할 때 표시
      • 5) SYN : 연결을 초기화하기 위해 순서번호를 동기화 시킬 떄 사용한다.
      • 6) FIN : 연결을 해제시키기 위해 현재 세그먼트가 마지막 데이터임을 표시할 때 사용.
    • 8.윈도우 크기 (window size , 2 bytes )
      • 흐름제어를 위한 윈도우의 크기를 명시한다.
      • 최대 크기는 2^16 = 65,535 바이트이다.
    • 9.검사합 (checksum , 2 bytes) : 오류 제어를 위한 검사합 부분
    • 10. 긴급 포인터 (urgent pointer , 2 bytes)
      • 제어(flag bits)에서 URG flag = 1 일 때,
      • 긴급 데이터의 마지막 바이트의 순서 번호를 기입한다.
      • 긴급포인터 + 순서번호
    • 11.옵션(option , 0 ~ 40 bytes)
      • Maximun Segment Size (MSS)
      • 윈도우 크기를 증가시키기 위한 값, time stamp 등을 기입

TCP 세그먼트 형식, 위는 24byte 헤더

TCP 연결형 서비스

  • TCP 종점 ( endpoint ) 식별자 [ = socket address ]
    • 호스트 IP 주소와 포트 번호로 정의한다.
    • 예 ) 방송대 와 고려대 사이의 TCP 연결
      • 방송대 호스트 (211.110.34.15)
      • 고려대 호스트 (163.100.21.67)
      • (211.110.34.15,12345) 및 (163.100.21.67,20) 
        • port numbers : 12345 (client)
        • port numbers : 20 (FTP Server)
  • TCP 연결
    • 전이중 (full-duplex) 데이터 전송 서비스

TCP 연결 : 전이중 데이터 전송 서비스

  • TCP 연결 설정
    • 3 - way handshaking

TCP 연결설정 과정

  • TCP 연결 종료
    • 양방향 모두 연결 종료를 해야 한다.
    • FIN 을 이용하여 종료.

TCP 연결종료 과정