포트 번호의 사용법
포트 번호는 컴퓨터 안에서 작동하는 애플리케이션을 식별하기 위해 사용하는 숫자입니다. 구체적으로 어떻게 사용하는지를 웹 클라이언트가 웹 서버에 접근하는 경우를 예로 들어 자세히 설명하겠습니다.
클라이언트에서 서버에 대한 연결(요청)
① 웹 클라이언트는 웹 브라우저가 만든 요청 데이터를 받으면 출발지 포트 번호에
는 동적 포트 중에서 무작위로 선택한 숫자를 넣고, 목적지 포트 번호에는 웹 서비스를 나타내는 80을 넣어서 세그먼트를 만듭니다.
② 웹 클라이언트는 IP와 이더넷의 캡슐화를 수행한 후 웹 서버에게 전송합니다.
③ 웹 서버는 이더넷과 IP의 캡슐화를 해제하여 목적지 포트 번호를 검사합니다. 목적지 포트 번호 80은 웹 서비스를 나타내는 잘 알려진 포트 번호이므로 웹 서비스를 제공하는 서버 소프트웨어에 요청 데이터를 전달합니다. 서버 소프트웨어는 클라이언트의 요청에 대한 처리를 수행하고 응답 데이터를 만듭니다.
서버에서 클라이언트에 대한 연결(응답)
① 웹 서버는 서버 소프트웨어로부터 응답 데이터를 받으면 출발지 포트 번호에는 웹 서비스를 나타내는 80을, 목적지 포트 번호에는 받은 세그먼트의 출발지 포트 번호를 넣어서 세그먼트를 만듭니다.
② 웹 서버는 IP와 이더넷의 캡슐화를 수행하고 웹 클라이언트에게 전송합니다.
③ 웹 클라이언트는 이더넷과 IP의 캡슐화 해제를 수행하고 목적지 포트 번호를 검사합니다. 목적지 포트 번호는 자신이 할당한 포트 번호이므로 그 번호와 연결된 애플리케이션, 즉 웹 브라우저에 데이터를 전달합니다.
NAT와 NAPT의 정의
기업이나 가정의 LAN에서 사용하는 프라이빗 IP 주소를 인터넷에서 사용하는 글로벌 IP 주소로 변환하는 기술이 NAT(Network Address Translation)과 NAPT(Network Address Port Translation)입니다. NAT와 NATP는 IP 주소를 일대일로 변환한다. NAT는 프라이빗 IP 주소와 글로벌 IP 주소를 일대일로 연결하여 변환합니다. NAT는 LAN에서 인터넷으로 연결할 때에는 출발지 IP 주소를 변환합니다. 반대로 인터넷에서 LAN으로 연결할 때는 목적지 IP 주소를 변환합니다.
NAPT는 IP 주소와 포트 번호를 변환한다.
NAPT는 프라이빗 IP 주소와 글로벌 IP 주소를 n 대 1로 연결하여 변환합니다.
NAPT는 LAN에서 인터넷에 접근할 때 출발지 IP 주소뿐만 아니라 출발지 포트 번호도 같이 변환함으로써 n 대 1 변환을 구현하고 있습니다. 여기서는 LAN에 있는 클라이언트가 인터넷에 있는 서버와 통신할 때 예로 들어 LAN의 처리를 구체적으로 설명하겠습니다.
① 라우터는 클라이언트로부터 받은 패킷의 출발지 IP 주소를 프라이빗 IP 주소에서 글로벌 IP 주소로 변환합니다. 이때 출발지 포트 번호도 변환하여 그 변환 정보를 기억한 후에 서버에게 전송합니다
② 서버는 클라이언트로부터 패킷을 받아 그 처리 결과를 클라이언트에게 되돌려줍니다.
③ 라우터는 받은 패킷의 목적지 IP 주소와 목적지 포트 번호를 1에서 만든 변환 정보를 바탕으로 원래대로 되돌리고 클라이언트에게 반환합니다.
NAT와 NAPT의 차이
NAT와 NAPT는 프라이빗 IP 주소를 글로벌 IP 주소로 변환하는 기술입니다.
NAT는 하나의 프라이빗 IP 주소와 하나의 글로벌 IP 주소를 연결합니다. 서버를 인터넷에 공개할 때 사용합니다.
NAPT는 IP 주소뿐만 아니라 포트 번호도 사용함으로써 하나의 글로벌 IP 주소에 대해 여러 개의 프라이빗 IP 주소를 변환시킬 수 있습니다.
최신 네트워크기술동향
네트워크에서는 실제로 사용되고 있는 프로토콜이 상당히 한정되어 있습니다. 그렇다고 해서 전혀 발전이 없는 것은 아니므로 새로운 기술도 조금씩 나오고 있습니다. 최근에 등장한 기술로는 IPv6와 SDN이 있습니다. IPv6는 이 장에서도 설명한 IP(IPv4)를 확장한 프로토콜입니다. IPv6는 식별 번호인 IP 주소를 32bit에서 128bit로 확장함으로써 할당할 수 있는 IP 주소의 개수를 42억 개 (2의 32승)에서 약 340만 개 (2의 128승)까지 늘렸습니다. IPv6는 글로벌 IPv4 주소의 고갈 우려와 함께 요란
하게 등장했습니다. 할당할 수 있는 글로벌 IPv4 주소의 재고가 없어지기 직전 IPv6 대책까지 못 기다리겠다고 할 정도로 많은 잡지에서 특집으로 다루기까지 했는데, 지금은 여유 있게 기다리고 있는 듯합니다. 사실 IPv6 이 풍부한 시점에서도 정말로 필요한가? 라는 의심을 계속 품었었습니다. 이를 방증하는 듯이 IPv4 주소의 재고가 없어진 지 현재에도 사용자 레벨에서는 전혀 불편을 느끼지 못할 정도로 IPv6는 보급되어 있지 않습니다. 또 다른 하나의 신기술인 SDN은 사용자가 만든 소프트웨어에 의해 관리 및 제어되는 가상 네트워크 또는 그것을 구축하기 위한 기술입니다. SDN은 애플리케이션 소프트웨어를 자유롭게 제어하거나 네트워크 전체를 일원 관리할 수 있다고 해서 OSI 참조 모델의 개념에서 탈피하여 여러 가지 일들을 실현할 수 있다는 점에서 네트워크 업계도 어쩌면 정말 굉장한 것일지도 모른다고 수군거렸습니다. 하지만 실제로 사용해 보니 뜻밖에 제한이 많아 아직 발전 도상 영역을 벗어나지 못하고 있습니다. 신기술을 사용하는 것은 자유이지만 절대 안정이 요구되는 네트워크에서는 신기술이 반드시 좋기만 하다고는 할 수 없다는 점도 분명하게 인식해 둘 필요가 있는 것 같습니다.