TCP and UDP

2023. 6. 13. 13:48보안관제

개요

  • TCP
    • 양종단 호스트 내 프로세스 상호 간에 신뢰성 + 연결지향성 서비스를 제공.

 

  • UDP
    • 신뢰성이 낮고, 완전성 보증x, 가상회선을 굳이 확립할 필요x, 유연 + 실시간 데이터 전송에 적합

 

구조(TCP)

TCP Header Structure

  • Source Port, Destination Port
    • 양쪽 호스트 내 종단 프로세스를 식별
      • 소켓 주소 (Socket Address): 프로세스 식별에 쓰이는 주소
      • IP Address 및 Port Number 를 조합한 것. 즉, Socket address = IP Address + Port Number
    • 포트 번호 길이
      • 포트의 식별을 위한 포트 번호(Port Address)는 16 비트 길이
      • 이론상 2^16 = 65,536(0~65,535)개의 서로 다른 TCP 또는 UDP 연결이 가능함
  • Sequence Number
    • 바이트 단위로 구분되어 순서화되는 번호(1Byte = 8Bit)
    • 이를 통해 TCP에서 신뢰성 및 흐름제어 기능 제공
      • 수신 측에서 올바른 순서로 데이터를 재조합 할 수 있도록 도움.
    • 순서 가능 범위
      • 시작 : 임의 값 ~ 최대값(2^32  - 1 = 4,294,967,295)까지, 이후: `0`으로되어 시작함
        • 최대 : 32 비트이므로 최대 4바이트(2^32) 크기(0 ~ 4,294,967,295)
      • 초기 순서 번호
        • 초기 TCP 연결설정을 위함.(3way - handshaking)
        • 난수 발생기로 초기 순서번호(ISN)를 생성하고, 이를 순서번호 필드에 넣어 송신
        • TCP는 양방향이므로 각 방향 마다 다른 ISN 번호가 사용됨

 

 

  • Acknowledgement Number
    • 송신 메세지가 정상 수신되었음을, 수신측에서 송신측으로 확인응답하는 것
    • 수신하기를 기대하는 다음 바이트 번호 = 마지막 수신 성공 순서 번호 + 1
    • 6 control flag에서 ACK = 1
  • Header Length Feild
    • 헤더 길이를 4바이트(32비트) 단위로 표시
    • TCP 헤더 길이는 20 Byte ~ 60 Byte
    • 옵션까지 포함했을 시 최대 60Byte
  • TCP Header Option
    • TCP 연결 관리 기능을 확장시키는데 주로 사용되는 옵션 필드
  • 6 Control Flag
    • TCP 세그먼트 전달과 관련되어 TCP 회선 및 데이터 관리 제어 기능을 하는 플래그
      • SYN: Synchronize: 세션 연결을 시작하는 플래그
      • ACK: Acknowledgement: 송신측으로부터 온 패킷을 잘 받았다고 응답하는 플래그
      • FIN: Finish: 더 이상 전달할 데이터가 없고, 세션 연결 해제를 원하는 플래그
      • RST: Reset: 연결 확립된 회선을 끊고, 초기화하는 플래그
      • PSH: Push: 수신 버퍼가 다 채워지기 전에 받은 즉시 전달하는 플래그
      • URG: Urgent: 순서 상관없이 바로 송신, Urgent Pointer가 가리키는 곳까지 응용프로그램쪽으로 전달해달라는 플래그

 

  • Ckecksum
    • 에러 체크 비트
    • 판단 방법: 수신자에서 구한 체크섬 값과 송신측에서 보낸 체크섬 값을 더했을 때 모두 1이면 정상, 아니면 비정상
  • Urgent Pointer
    • TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호
    • 현재 일련번호(sequence number)로부터 긴급 데이터까지의 바이트 오프셋(offset)
    • 해당 세그먼트의 일련번호에 urgent point 값을 더해 긴급 데이터의 끝을 알 수 있음

 

구조(UDP)

UDP Header Structure

  • Header size = 8Byte
  • 16비트 길이의 포트 번호
  • 체크섬: 선택항목
    • 체크섬 값이 0이면, 수신측은 계산x

 

특징(TCP)

  • 신뢰성
    • 패킷 손실, 중복, 순서바뀜 등이 없도록 보장
      • 패킷 손실 및 중복: 재전송하여 손실된 패킷 보장
      • 순서 바뀜: 순서 번호를 통해 수신측에서 순서에 맞게 재조립, 확인 응답 번호를 통해 실제 수신 여부 확인 및 그 다음 보낼 순서 번호를 알려줌
  • 연결지향적
    • 종단 호스트 내 프로세스 간에만 존재하는 연결: 세션 유지
    • TCP 연결의 설정 및 해제
      • 연결설정 ☞ TCP 3-way Handshaking  
      • 연결해제 ☞ TCP 4-way Handshaking

3way - handshaking

  • 3way - handshaking 
    • 데이터 전송 전, 신뢰성있는 통신을 보장하기 위해 송 수신자간애 세션을 수립해나가는 과정
  • 세그먼트 1 (SYN 세그먼트) : 연결 요청 (`초기 동기화 패킷` 라고도 불리움)
    • TCP 제어 플래그  : SYN = 1로 설정
    • TCP 상태: 클라이언트는 `SYN-SENT` TCP상태로 전이 
  •  세그먼트 2 (SYN+ACK 세그먼트) : 연결 허락
    • TCP 제어 플래그  : SYN = 1, ACK = 1로 설정 
    • TCP 상태: 서버는 `LISTEN` → `SYN-RECEIVED` TCP상태로 전이, 이를 Half Open 이라고도 함
  • 세그먼트 3 (ACK 세그먼트) : 연결 설정
    • 단순히 ACK 전송 만을 위함
    • TCP 상태: 양단 모두 `ESTABLISHED` TCP상태로 들어감
      • (C: SYN-SENT` → `ESTABLISHED`, S: `SYN-RECEIVED` → `ESTABLISHED`)

 

4way - handshaking

  • 4way - handshaking
    • 3way - handshaking에서 수립한 세션을 해제하기 위한 절차 
    • 연결 종료 순서
      •  FIN 세그먼트:  클라이언트측의 연결 종료 요청
             - TCP 제어 플래그 : FIN: 1
      • ACK 세그먼트: 연결 종료 요청에 대한 서버측의 응답
             - TCP 제어 플래그 :  ACK: 1
      • FIN+ACK 세그먼트  : 서버측의 종료 알림
             - TCP 제어 플래그 : FIN: 1, ACK: 1
      • ACK 세그먼트: 클라이언트측의 최종 종료 알림
         

 

  • Flow Control
    • 송신(송신전송률) 및 수신(수신처리율) 속도를 일치시키는 것: 종단간 윈도우 크기내에서 제어
      • `순서번호`,`확인응답번호`,`수신윈도우 크기`라는 3개 변수로 흐름제어
      • 주로 슬라이딩 윈도우 방식, 즉 연속적 ARQ 방식 채택을 사용함
        • 송수신간에 버퍼 크기를 공유하고, 수신자의 버퍼 크기에 맞게 송신자도 보낼 패킷 버퍼 크기를 설정함
        • 송신자는 버퍼 안 패킷을 수신자의 확인을 받지 않고, 지속적으로 전송
        • 수신 확인 받으면, 보낸 데이터 만큼 다시 버퍼에 보낼 데이터를 넣음
      • Stop and wait 방식도 있는데 거의 안 씀.
        • 매번 전송한 패킷의 응답 번호를 받아야 다음 패킷을 전송하는 방식
  • Congestion Control
    • 정의: 망혼잡시 전송량을 줄이고 망 정상시 다시 전송량을 늘리도록 하여 송신자와 네트워크 망 간에 속도 차이 제어
    • 혼잡제어 방식
      • 느린시작 (Slow Start) : 혼잡 예상 초기에 윈도우 크기 작게 시작 > 곱 증가: 1 2 4 8… > 혼잡 감지시 1로
      • AIMD: 윈도우 크기 가산적 증가, 혼잡 감지시 절반
      • 빠른 재전송: 수신측에서 손실 패킷 있을 시 중복 ACK 3개 패킷을 보내면, 송신측은 손실된 패킷을 다시 보내며, 윈도우 크기 줄이는 방식
      • 빠른 회복 (Fast Recovery: ): 빠른 회복은 혼잡한 상태가 되면 윈도우 크기를 1로 줄이지 않고 반으로 줄이고 선형증가시키는 방법, 이 방법을 적용하면 혼잡 상황을 한번 겪고 나서부터는 AIMD 방식으로 동작

 

특징(UDP)

  • 비연결성이고, 신뢰성이 없으며, 순서화되지 않은 Datagram 서비스 제공
    • (확인응답 없음) 메세지가 제대로 도착했는지 확인하지 않음
    • (순서제어 없음) 수신된 메세지의 순서를 맞추지 않음
      • TCP 헤더와 달리 순서번호 필드 없음
    • (흐름제어 없음) 흐름 제어를 위한 피드백을 제공하지 않음
    • (오류제어 없음) 검사합을 제외한 특별한 오류 검출 및 제어 없음
      • UDP를 사용하는 프로그램 쪽에서 오류제어 기능을 스스로 갖추어야 함
    • (비연결성) 논리적인 가상회선 연결이 필요없음 (No Handshaking)

 

  • 실시간 응용 및 멀티캐스팅 가능
    • (실시간용) 빠른 요청과 응답이 필요한 실시간 응용에 적합
    • (1:多) 여러 다수 지점에 전송 가능 (즉, Multicasting 가능)
    • (무제한) 전송속도 제한 없음
  • 데이터 전송 단위 : 데이터그램
    • 한편, TCP의 데이터 전송 단위는 세그먼트라 함
  • 최대 데이터 크기
    • 65,507 바이트 = 65,535 바이트 - UDP 헤더 8 바이트 - IP 헤더 20 바이트

'보안관제' 카테고리의 다른 글

FW, IDS, IPS and DDoS 장비  (0) 2023.07.26
계층별 프로토콜 - 2  (0) 2023.07.02
계층별 프로토콜 - 1  (0) 2023.06.26
OSI 계층별 장비  (0) 2023.06.17
OSI 7 Layer  (0) 2023.06.05