[혼자 공부하는 네트워크] 4-1 전송 계층 개요: IP의 한계와 포트

술술·2024년 9월 6일
0

신뢰할 수 없는 통신과 비연결형 통신

  • 신뢰할 수 없는 통신(unreliable protocol)
    • IP 프로토콜이 패킷이 수신지까지 제대로 전송되었다는 보장을 하지 않는 특징
    • 통신 과정에서 패킷의 데이터가 손상되거나 중복된 패킷이 전송되었더라도 확인 X, 재전송 X, 순서대로 패킷 도착 보장 X
    • 최선형 전달(best effort delivery) - 최선을 다해 보겠지만, 전송 결과에 대해서는 어떠한 보장도 하지 않겠다.
  • 비연결형 통신(connectionless protocol)
    • 송수신 호스트 간에 사전 연결 수립 작업을 거치치 않는 특징
    • 수신지를 향해 패킷을 보내기만 함
  • 성능 때문에 이런 통신을 한다!
    • 모든 패킷을 확인하고, 호스트 간 연결 수립 작업은 패킷의 빠른 송수신과는 배치됨
    • 신뢰성 있는 전송이 모든 경우에 필요한 것은 아님



IP의 한계를 보완하는 전송 계층

  1. 전송 계층은 연결형 통신을 가능하게 한다.

    • 연결형 통신을 지원하는 대표적인 전송 프로토콜 TCP
    • 두 호스트가 정보를 주고받기 전에 마치 가상의 회선을 설정하듯이 연결 수립
    • 송수신하는 동안 연결 유지, 끝나면 연결 종료
  2. 전송 계층은 신뢰성 있는 통신을 가능하게 한다.

    • 신뢰성 있는 통신 또한 TCP를 통해 가능
    • 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어 등 다양한 기능들을 제공
    • UDP - 신뢰할 수 없는 통신, 비연결형 통신을 가능하게 하는 전송 계층의 프로토콜
      • TCP 보다 비교적 빠른 전송



응용 계층과의 연결 다리, 포트

  • 패킷의 최종 수신 대상은 애플리케이션 프로세스 → 패킷에 특정 애플리케이션을 식별할 수 있는 정보가 포함되어 있어야 한다.
  • 이러한 정보를 port(포트)


분류

  • 패킷 내 수신지 포트와 송신지 포트를 통해 송수신지 호스트의 애플리케이션을 식별
  • TCP와 UDP는 모두 포트 번호 필드인 송신지 포트 번호와 수신지 포트 번호를 포함
  • 포트 번호는 16비트로 표현 가능, 65536개 존재
  • 포트 번호 범위에 따른 종류
  • 서버로서 동작하는 프로그램의 포트 번호는 사전에 암묵적으로 정해진 경우가 많다
  • 클라이언트로서 동작하는 프로그램은 동적 포트 번호 중에서 임의의 번호가 할당되는 경우가 많음
    • 웹 브라우저
  • IP 주소와 포트 번호에 대한 정보가 함께 주어지면 특정 호스트에서 실행 중인 특정 애플리케이션 프로세스를 식별할 수 있음
  • 포트 번호는 일반적으로 IP 주소:포트 번호 형식으로 IP 주소와 함께 표기되는 경우가 많다

  • 잘 알려진 포트(well known port), 시스템 포트(systemport)
    • 0 - 1023번
    • 범용적으로 사용되는 애플리케이션 프로토콜이 일반적으로 사용하는 ‘널리 알려진, 유명한’ 포트 번호를 의미


  • 등록된 포트(registered port)
    • 1024 - 49151번
    • 덜 범용적이지만, 흔히 사용되는 애플리케이션 프로토콜에 할당하기 위해 사용


  • 동적 포트(dynamic port), 사설 포트(private port), 임시 포트(ephemeral port)
    • 49152 - 65535번
    • 자유롭게 사용

❗전송 계층은 신뢰할 수 있는 연결형 통신이 가능한 프로토콜(TCP)를 제공하기에 네트워크 계층의 한계를 보완할 수 있고, 포트를 통해 응용 계층의 애플리케이션을 식별함으로써 응용 계층과의 연결 다리 역할 수행




포트 기반 NAT

  • NAT
    • IP 주소를 변환하는 기술
    • 주로 네트워크 내부에서 사용되는 사설 IP 주소와 네트워크 외부에서 사용되는 공인 IP 주소를 변환하는데 사용
    • 변환을 위해 NAT 변환 테이블 사용

NAT 변환 테이블

  • 변환의 대상이 되는 IP 주소 쌍이 명시
  1. 네트워크 내부에 192.168.0.5라는 사설 IP 주소를 가진 호스트, 수신지 주소가 10.11.12.13인 네트워크 외부의 호스트에게 패킷을 전송
  2. 패킷이 NAT 기능을 갖춘 라우터를 거쳐 네트워크 외부로 나가게 되면 패킷의 송신지 주소는 네트워크 외부에서 사용되는 공인 IP 주소인 1.2.3.4가 됨
  3. 수신지 주소가 1.2.3.4인 패킷이 네트워크 외부에서 네트워크 내부로 전송되는 상황
  4. 패킷의 수신지 주소는 NAT 라우터를 거쳐 192.168.0.5가 됨
  • 오늘날 NAT는 대부분 다수의 사설 IP 주소를 그보다 적은 공인 IP 주소로 변환

NAPT

  • 포트 기반의 NAT를 NAPT(Network Address Port Translation), APT(Address Port Translation)
  • 포트를 활용해 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유할 수 있도록 하는 NAT의 일종
  • NAT 테이블에 변환할 IP 주소 쌍과 더불어 포트 번호도 함께 기록하고, 변환
  • 네트워크 외부에서 사용할 IP 주소가 같더라도 포트 번호가 다르면 네트워크 내부의 호스트를 특정할 수 있음
  • 다수의 사설 IP 주소를 그보다 적은 수의 공인 IP 주소로 변환할 수 있게 된다
  • 네트워크 내부에서 사용할 IP 주소와 네트워크 외부에서 사용할 IP 주소를 N:1로 관리
  • 공인 IP 주소 수 부족 문제를 개선한 기술




포트 포워딩(prot forwarding)

  • 네트워크 내 특정 호스트에 IP 주소와 포트 번호를 미리 할당
  • IP 주소: 포트 번호로써 해당 호스트에게 패킷을 전달하는 기능
  • 네트워크 내부의 여러 호스트가 공인 IP 주소를 공유하고, 네트워크 외부에서 내부로 통신을 시작하는 상황
    • 처음 패킷을 보내는 네트워크 외부 호스트 입장에서는 어떤 IP 주소(및 포트)를 수신지 주소로 삼을지 결정하기 어렵다
    • 특정 IP 주소와 포트 번호 쌍을 특정 호스트에게 할당하고 외부에서 통신을 시작할 호스트에게 해당 접속 정보를 알려 주면 됨
    • 네트워크 외부 호스트는 그 IP 주소: 포트 번호로 통신을 시작
  • 네트워크 외부에서 네트워크 내부로 통신을 시작할 때, 네트워크 내부의 서버를 외부에서 접속할 수 있도록 접속 정보를 공개하기 위해 자주 사용


ICMP(Internet Control Message Protocol)

  • IP의 신뢰할 수 없는 전송 특성과 비연결형 전송 특성을 보완하기 위한 네트워크 계층의 프로토콜
  • IP 패킷의 전송 과정에 대한 피드백 메시지를 얻기 위해 사용하는 프로토콜
  • 전송 과정에서 발생한 문제 상황에 대한 오류 보고
  • 네트워크에 대한 진단 정보
  • 타입과 코드로 정의
    • ICMP 패킷 헤드에 포함되어 있는 정보
    • 타입 필드에는 ICMP 메시지의 유형이 번호로 명시
    • 코드 필드에는 구체적인 메시지 내용이 번호로 명시
  • 오류 보고를 위한 대표적인 ICMP 메시지 타입으로는 수신지 도달 불가와 시간 초과가 있다.
    • 라우터에게 전달된 패킷의 TTL 필드가 0이 되면 해당 라우터는 송신지 호스트에게 [시간 초과 타입 - TTL 만료 코드] ICMP 패킷을 전송
    • 패킷을 전달받은 라우터가 수신지 네트워크로 향하는 경롤르 찾을 수 없을 때는 [수신지 도달 불가 타입 - 네트워크 도달 불가 코드] ICMP 패킷을 전송
  • IP의 신뢰성을 보장하는 것은 아니다.
profile
Hello

0개의 댓글

관련 채용 정보