본문 바로가기
CS 전공 지식/네트워크

10. 전송 프로토콜

by Chaedie 2022. 5. 24.
728x90

모든 레퍼런스는 K-MOOC : 네트워크 기초 (성균관대 안성진 교수님) 입니다.


1. 전송 프로토콜과 UDP

프로세스 간의 통신

  • 데이터 링크 계층은 이웃한 두 노드 사이의 프레임 전달에 관여
  • IP와 같은 네트워크 계층은 두 호스트 사이의 패킷 전달에 관여
  • 수송 계층 프로토콜은 프로세스 프로세스 사이의 메시지전달에 관여
    • 프로세스 to 프로세스 전달
    • 포트 번호가 프로세스 간의 전달에 사용

프로세스 간의 통신

  • 클라이언트 / 서버 구성
    • 프로세스간의 통신은 클라/서버 구성을 통해서 이루어짐
    • 포트 번호는 “수송 계층에서 사용하는 (논리적인) 주소”로서 특정 호스트에서 실행 되는 프로세스를 구분하기 위해 사용
  • 클라이언트 프로그램은 포트 번호를 갖게 되는데 OS에 의해 선택된다.
    • 이러한 포트는 일시적으로 할당되고 사라져서 “임시 포트 번호”라 한다.
  • 서버 프로그램은 인터넷에서 식별을 위해 동일한 포트 번호를 갖는다.
    • 이러한 포트는 고정적으로 할당 되고, 모두가 알고 있어야 하기 때문에 “Well-known, 알려진 포트 번호”라 한다.

포트 번호

  • IANA (Internet Assigned Numbers Authority)는 포트 번호를 3개의 영역으로 구분
    • Well-known ports : 0 ~ 1023, 인터넷 서비스를 위해 사용
    • Registered ports : 1024 ~ 49151, 특정 응용을 위해 기업이 사용
    • Dynamic ports : 49152~65535, 임시 포트(Ephemeral ports)로 이용

UDP (User Datagram Protocol)

  • 비 연결형, 비 신뢰성 수송 프로토콜 (대신 효율적)
    • 흐름제어나 에러제어가 없음
    • UDP가 에러를 검출하면 단순히 폐기
    • 연결 설정이나 종료과정이 없음
    • 데이터그램들 사이의 서로 관련이 없으며, 번호가 붙지 않음
    • 각 UDP 데이터그램은 서로 다른 경로로 전달
    • → 수신자는 수신 메시지로 “오버 플로우” 될 수 있음
    • → 송신자는 “메시지가 유실되거나 중복”되었는지 알 수 없음
  • 포트 번호를 이용해서 데이터 전송이 가능하다.
  • UDP는 오버헤드가 작은 아주 단순한 프로토콜에 이용

  • 53번 포트 == DNS
  • SNMP

UDP Datagram

  • UDP는 8바이트의 고정된 헤더를 갖음
  • 체크섬의 계산은 선택 사항
  • Checksum은 IP나 ICMP와 달리 가상헤더를 만들어서 계산
    • 가상헤더, UDP헤더, 데이터에 대해 체크섬 수행
    • 가상헤더는 IP패킷의 헤더에서 가져온 정보로 구성

UDP의 사용

  • 간단한 요청 - 응답 서비스에 적합
  • 프로세스 내부에서 흐름제어, 에러제어를 갖는 경우 적합
  • 멀티 캐스팅에 적합
  • SNMP 같은 망관리 할 때 사용

TCP 프로토콜

TCP의 기능

  • TCP는 프로세스 간 통신, 스트림 전달 서비스, 전이 중 통신, 연결 지향 서비스, 신뢰성 있는 서비스를 제공
    • 연결 설정과 해제 과정이 존재
    • 데이터의 안전한 도착을 확인하는 “ACK를 사용”하여 신뢰성 있는 전송을 제공
  • TCP는 프로세스 간의 통신을 위해 포트 번호를 사용

Well-known ports used by TCP

TCP의 특징

  • TCP는 모든 바이트에 번호를 부여
    • 번호는 흐름제어와 에러제어에 사용
    • 세그먼트의 순서번호는 해당 세그먼트가 나르는 데이터의 첫 번째 바이트 번호
  • ACK번호는 수신해야 할 다음 바이트 번호
    • 이전의 모든 바이트를 안전하게 받았음을 의미

세그먼트 형태

  • 헤더는 20바이트이며, 옵션이 있으면 60바이트까지 존재, 4바이트 단위로 표시
  • 제어 필드
    • 여러 비트가 동시에 설정될 수 있음
    • 보정적 ACK (NACK)가 없음

  • 긴급 데이터
    • 우선적으로 데이터 처리되길 원할 수 있음
    • 제어 필드의 PSH와 긴급 포인터 (Urgent Pointer)가 사용
  • PSH 비트 설정
    • 송신 TCP는 수신 TCP가 버퍼링 하지 말고 즉시 데이터를 응용에게 전달 할 것을 요구
    • 지연된 전송은 대화 식 응용 (Interactive applications) 에서는 바람직하지 않음
  • RST
    • 비정상적인 상황이나 오랫동안 통신이 없으면 현재 연결을 끊음
  • 체크섬
    • 오류 검사
    • TCP에서 체크섬은 “강제사항”
    • UDP와 같이 “가상헤더를 포함” 하여 계산

연결 설정

  • TCP는 3단계 메시지 교환 (Three-way handshake)를 통해서 연결 설정

      1. 클라 : 클라는 연결을 요청하는 SYN 세그먼트 전송

      2. 서버 : SYN, ACK를 포함하는 세그먼트로 응답

      3. 클라 : ACK를 보냄

        -   1.  SYN → 2) SYN + ACK → 3) ACK 

연결 해제

  • 해제는 3단계와 4단계 메시지 교환을 제공
    • 3way : 즉시 연결 종료
    • 4way : Half-close 상태 (수신은 가능함)


- 3 Way

-   4 Way

흐름 제어 (속도 제어, 데이터 크기 제어 등등)

  • 송신 TCP가 목적지로 부터 ACK를 수신하기 전에 보낼 수 있는 데이터의 양을 정함
    • TCP는 슬라이딩 윈도우 프로토콜을 이용
    • TCP는 바이트 단위로 윈도우 크기 (수신 가능한 데이터 양) 를 명시
    • 윈도우 크기는 시간에 따라서 변할 수 있음

읽을 거리

DNS의 작동원리와 이를 공격하는 방법

http://www.itworld.co.kr/t/62078/네트워크/108921#csidx481ffd60918f3308a8d2a41ce45126d

댓글