[네트워크] Transport 계층의 역할과 UDP

ljkgb·2021년 5월 13일
0

Network

목록 보기
11/12
post-thumbnail

1. 프로세스간 통신

1) 수송계층(Transport)의 역할

데이터링크 계층에서는 노드에서 노드로 메세지가 전달되는 과정에 여러 프로토콜들이 있다(규칙 명시). 또한 네트워크 계층에서는 인터넷과 같은 임의의 네트워크 안에서 네트워크 마지막에 붙어있는 컴퓨터(종단시스템 = 호스트)들 끼리 주고받는 내용에 집중한 프로토콜들이 해당한다. 그래서 네트워크 계층에서 가장 중요한 기능이 라우팅(routing-최적경로 선택하는 과정)이 된다.

여기서 오늘은 수송계층(Transport)에 대해서 자세히 알아볼 것이다. 각 컴퓨터 내에는 응용서비스 즉, 프로그램이 돌아간다. 여기서 실행중인 프로그램을 프로세스라고 하는데 이런 프로세스들 간에 메시지 전달에 관여하는 것이 수송계층의 역할이다.(process-to-process delivery)

* 그림출처

위에 그림을 보면 순서대로 데이터링크 계층에서는 통신장치들 끼리 node to node로 전달되고 네트워크 계층에서는 송신자 컴퓨터와 목적지 컴퓨터 사이에서 host to host로 전달된다. 또한 마지막에 수송 계층 에서는 그 컴퓨터들 안에 들어있는 특정 프로세스들 간의 통신에 관한 역할을 담당한다.

2) 포트(Port)

일반적으로 인터넷은 서비스를 요청하는 클라이언트와 서비스를 제공하는 서버의 형태로 구성된다. 만약 사용자가 여러개의 웹 브라우저(클라이언트)를 접속한다면, 서버측에서 오는 정보가 어느 클라이언트 것인지 구분을 해야할 것이다. 여기서 어느 클라이언트 즉, 응용프로세스들을 구분하는 구분자가 필요하게 되는데 그게 바로 포트 번호이다.

포트번호

  • IP주소를 가진 컴퓨터에서 여러개의 프로세스를 구분하기위해 사용함(수송 계층에서 사용하는 주소)
  • 포트번호는 16비트로 구성되어 있고 10진수로 나타내면 0 ~ 65535 사이의 값을 가짐
  • 논리적인 값(물리적 연결 아님!)

(1) 포트의 종류

  • 클라이언트 포트
    우리가 웹 브라우저 열고 닫기를 자유자재로 하듯 클라이언트 프로세스는 생성과 소멸을 반복하게 된다. 그러다보니 클라이언트의 포트번호는 대체로 운영체제에 의해 할당되게 된다. 이러한 포트는 일시적으로 할당되고 웹 브라우저에서 나가게 되면 사라지고 그 후 접속한 다른 프로세스에게 다시 할당될 수 있기 때문에 임시포트번호(ephemeral port number)라고 한다.

  • 서버 포트
    서버 프로세스는 클라이언트에게 상시 서비스를 하기때문에 항상 서비스를 할 수 있는 체제로 유지되어 있다. 그러므로 서버 포트는 고정적으로 할당되고 그를 모두 알고 있어야 하기 때문에 알려진 포트 번호(well-known port numbers)라고 한다.

http프로토콜의 포트번호는 80번으로 고정되어있다.

http://www.google.com 이렇게 있을 때

구분의미용도
http://포트번호프로세스 확인
www.google.comIP주소컴퓨터확인

(3) 포트번호의 구분

포트번호는 IANA(Internet Assigned Numbers Authority)라는 기관에서 관리되고 있다.(따라서 개발자 마음대로 지정할 수 없음)
IANA는 포트번호를 다음과 같이 3가지의 영역으로 구분한다.

  • well-known ports
    인터넷 서비스를 위해 사용(0 ~ 1023)
  • Registered ports
    인터넷에서 표준으로 정하진 않았지만 특정 기업들이 사용하기 위해 등록한 포트번호(1021 ~ 49151)
  • Dynamic ports
    등록되거나 통제되지 않는 임시포트(ephemeral port)로 이용되는 포트번호로 대체적으로 운영체제에서 할당(49152 ~ 65535)

2. 수송계층의 프로토콜

2. 사용자 데이터그램 프로토콜(UDP)

UDP는 User Datagram Protocol의 약자로서 수송계층에서 많이 사용되는 프로토콜중 하나이다.

1) UDP의 특징

  • 비신뢰성(목적지까지 도달하는걸 보장하지 않음), 비연결형(연결 설정과 해지할 필요가 없음), 수송 프로토콜로서 흐름제어나 에러제어가 없는 단순한 프로토콜이다.
  • 체크섬(Checksum)등으로 에러를 검출할 수 있긴한데 에러가 검출된다면 복구하는 행위 없이 그냥 폐기해버린다.(체크섬은 선택사항임!)
  • UDP는 오버헤드가 작은 아주 단순한 프로토콜에 이용된다.

2) UDP 포트목록

UDP/TCP 포트목록을 보면 53번에 DNS(Domain Name Sevice)프로토콜이 있는 것을 알 수 있고 161번과 162번에는 SNMP라는 프로토콜이 있는데 이는 네트워크 관리용도로 사용되는 포트번호이다.

3) 데이터그램(Datagram)

UDP에서 사용하는 메시지에서 헤더는 8바이트의 고정된 크기를 갖는다. (IP헤더는 가변)
또한 위에 언급한 것과 같이 체크섬은 선택사항으로 체크섬의 값이 계산되지 않으면, 해당 필드의 값은 0이 된다.

* 그림출처

4) 체크섬(Checksum)

UDP의 체크섬 계산은 기존 IP나 ICMP와는 달리 가상헤더를 만들어서 계산한다. 가상헤더는 IP 패킷의 헤더에서 가져온 정보로 구성하게 되는데 송신지 IP주소, 목적지 IP주소, 프로토콜필드, 전체 길이 필드로 구성되어 있다. IP헤더가 잘못되면 잘못된 호스트나 잘못된 수송계층 프로토콜로 전달될 수 있음으로 한 번더 검사하기 위해 가상헤더를 붙여서 확인한다.

* IP에서 프로토콜 필드는 IP위에 올라가는 여러 프로토콜중에 어느 하나를 구분하는 구분자 역할을 함

IP와 다른점

  • IP는 데이터를 확인하지 않고 헤더만 확인
  • UDP는 데이터 확인을 선택할 수 있음(체크섬)

* 그림출처

위의 그림과 같이 UDP 체크섬 Datagram을 보면 위에 검은색 3줄은 가상헤더로 P주소, 목적지 IP주소, 프로토콜필드, 전체 길이 필드가 들어있다.
그 밑에 분홍색 2줄은 UDP헤더로 송신자 포트번호, 목적지 포트번호, 전체 길이 필드가 들어있다. 여기서 가상헤더 부분의 전체 길이필드는 IP 패킷의 헤더에서 가져온 부분이고 UDP헤더 부분은 UDP 자체의 길이이다.

5) 비연결형

앞서 특징에서 언급했듯 UDP는 비연결형 서비스를 제공한다. 비연결형이란 앞에 나간 UDP와 뒤에 오는 UDP간 즉, Datagram들 사이에 서로 관련이 없는것을 말한다. 그로 인한 특징들은 다음과 같다.

  • 번호를 붙이지 않는다.(넌 1번, 난 2번 이렇게 번호를 붙일필요 없음!)
  • 연결설정이나 종료과정이 없음
  • UDP는 IP 패킷으로 가기 때문에 경로가 계속 변경될 수 있음
  • 흐름제어나 에러제어가 없기 때문에 수신자 측에서 오버플로우가 발생할 가능성이 있다.

6) UDP의 사용

  • 간단한 요청이나 응답 서비스
  • 프로세스에서 내부 흐름제어나 에러제어를 가지고 있는 경우(UDP는 없으니까!)
  • 멀티캐스팅에 적합(각 그룹에게 연결설정이며 해지며 하기 힘드니 UDP로 메시지 보내기)
  • SNMP, RIP
profile
🐹

1개의 댓글

comment-user-thumbnail
2021년 5월 13일

🤯

답글 달기