본문 바로가기

IT 엔지니어를 위한 네트워크

4계층 프로토콜(TCP, UDP)과 서비스 포트

Today Keys : protocol, 계층, service, port, 포트, 서비스, 헤더, 프로토콜, 지시자

본 포스팅은 'IT 엔지니어를 위한 네트워크 입문' [길벗] 서적에 포함된 '3. 네트워크 통신하기'의 내용  3.4.1장의 내용입니다.


4계층 프로토콜(TCP, UDP)과 서비스 포트

데이터를 보내고 받는 인캡슐레이션, 디캡슐레이션 과정에 각 계층에서 정의하는 헤더가 추가되고 여러 가지 정보가 들어갑니다.

다양한 정보 중 가장 중요한 두 가지 정보는

   ● 각 계층에서 정의하는 정보

   ● 상위 프로토콜 지시자 정보

입니다.

 

각 계층에서 정의하는 정보와 상위 프로토콜 지시자

 

각 계층을 정의하는 정보는 수신 측의 동일 계층에서 사용하기 위한 정보입니다. 예를 들어 송신 측에서 추가한 2계층 헤더의 MAC 주소 정보는 수신 측의 2계층에서 확인하고 사용됩니다.

 마찬가지로 송신 측에서 추가한 3계층 IP 주소는 수신 측 3계층에서 사용합니다.

4계층에서는 이런 정 보로 시퀀스 번호, ACK 번호가 있습니다.

상위 프로토콜 지시자는 디캡슐레이션 과정에서 상위 계층의 프로토콜이나 프로세스를 정확히 찾 아가기 위한 목적으로 사용됩니다.

2계층은 이더 타입, 3계층은 프로토콜 번호, 4계층은 포트 번 호가 상위 프로토콜 지시자입니다.

 TCP/IP 프로토콜 스택에서 4계층은 TCP와 UDP가 담당합니다. 4계층의 목적은 목적지를 찾아가는 주소가 아니라 애플리케이션에서 사용하는 프로세스를 정확히 찾아가고 데이터를 분할한 패 킷을 잘 쪼개 보내고 잘 조립하는 것입니다.

 패킷을 분할하고 조합하기 위해 TCP 프로토콜에서는 시퀀스 번호와 ACK 번호를 사용합니다.

 

TCP와 UDP 헤더

 

TCP/IP 프로토콜 스택에서 4계층의 상위 프로토콜 지시자는 포트 번호입니다. 일반적으로 TCP/IP에서는 클라이언트-서버 방식으로 서비스를 제공하고 클라이언트용 프로그램과 서버용 프로그램을 구분해 개발합니다.

 3계층의 프로토콜 번호나 2계층의 이더 타입과 같은 상위 프로토콜 지시자는 출발지와 도착지를 구분해 사용하지 않고 한 개만 사용하지만 4계층 프로토콜 지시자인 포트 번호는 출발지와 목적지를 구분해 처리해야 합니다.

 평소 우리가 표현하는 포트 번호의 기준은 서버의 포트입니다. 이 포트 번호 중 HTTP TCP 80, HTTPS TCP 443, SMTP TCP 25와 같이 잘 알려진 포트를 ‘웰 노운(Well Known) 포트’라고 합니다.

 이 포트들은 이미 인터넷 주소 할당기구인 IANA(Internet Assigned Numbers Authority)에 등록 되고 1023번 이하의 포트 번호를 사용합니다.

 다양한 애플리케이션에 포트 번호를 할당하기 위해 Registered Port 범위를 사용합니다.

1024~ 49151의 범위이며 포트 번호를 할당받기 위해 신청하면 IANA에 등록되어 관리되지만 공식 (Official) 번호와 비공식(Unofficial) 번호가 혼재되어 있고 사설 포트 번호로 사용되기도 합니다.

 동적, 사설, 임시 포트의 범위는 49152~65535입니다. 이 범위의 포트 번호는 IANA에 등록되어 사용되지 않습니다.

이 포트 번호는 자동 할당되거나 사설 용도로 할당되고 클라이언트의 임시 포트 번호로 사용됩니다.

 

 

 서비스 요청 시와 응답 시에는 출발지 IP와 목적지 IP가 반대가 되듯이 출발지와 도착지 포트 번호도 요청 패킷과 응답 패킷이 반대가 됩니다. 서버 측에서 클라이언트 측의 요청에 대한 응답을 할 때는 출발지 포트가 서버의 포트, 도착지 포트가 클라이언트(사용자)의 포트가 되어 전송됩니 다.

 이런 포트의 방향 변화는 문제를 해결할 때 서비스 흐름을 이해하는 데 매우 중요합니다.

 

참고
상위 프로토콜 지시자인 포트와 프로토콜 주소 정보 중에서 주요 주소 번호를 운영 체제 내부 파일에서 찾아볼 수 있습니다.

C:\Windows\System32\drivers\etc 폴더에 protocols와 services 파일에 해당 정보가 있 습니다.