네트워크
네트워크는 우리가 만들어나갈 웹서비스의 밑바탕이다. 두 대 이상의 컴퓨터가 연결된 통신망를 네트워크라고 한다. 인터넷에 꼭 접속되지 않더라도 내 컴퓨터와 다른 컴퓨터를 연결한 것 자체가 작은 네트워크를 구성한 것이라 볼 수 있다.
네트워크에서 중요한 것은 어떤 방식으로 어떻게 데이터가 오가는지 이해하는 것이 핵심이다. 구성된 네트워크에서 연결된 개별 컴퓨터를 호스트(host)라고 한다. 많은 컴퓨터를 하나의 네트워크망 안에 구성하기 위해서는 연결을 위한 매개체가 필요하다. 하나로 묶어주는 것을 스위치(switch)라고 한다. 동일한 네트워크에서 호스트 간의 통신을 가능하게 해준다. 그러나 다른 네트워크에는 접선할 수 없다. 그래서 라우터(router)가 등장했다. 네트워크를 구성하는 스위치의 기능을 포함하고 있으며 서로 다른 네트워크 간에 통신을 할 수 있도록 한다. 우리에게 친숙한 이름으로 공유기라고도 불린다. 그렇게 네트워크와 네트워크가 연결된 거대한 통신망을 인터넷(internet)이라고 한다.
IP 주소
Internet Protocol
컴퓨터 간 데이터를 주고 받는 네트워크 계층의 규약
네트워크 계층의 규약에 따라 데이터 전달에 필요한 목적지 컴퓨터 정보가 반드시 필요하다.
송신자가 수신자에게 우편을 보내기 위해 우체국에 필요한 정보를 넘겨야한다. 이때 가장 중요한 정보는 수신자 주소이다. 송신자가 우체국에 정보를 전달하면, 우체국은 수신자 주소에 문제가 없다면 수신자에게 우편을 전달한다. 만약 수신자 주소를 잘못 전달한다면 우체국에서는 수신자에게 우편을 수신할 수 없게 되고 송신자에게 다시 반송한다.
컴퓨터가 다른 컴퓨터에 요청할 때에는 식별할 수 있는 고유한 주소를 가져야한다. 네트워크에서 컴퓨터가 부여받는 고유한 주소를 IP 주소라고 한다.
IP 주소에는 크게 두 가지 종류가 있다. IPv4 체계에서는 32bit의 용량을 가질 수 있다. 초창기 인터넷과는 달리 IT 서비스가 급성장을 하고 환경이 급변하게 되면서 전세계의 주소자원, IP 주소자원이 매우 부족해지게 됐다. 그래서 이를 대체할 수 있는 128bit의 IPv6가 나오게 된다. IPv6는 아직 자리잡기 못해 IPv4와 병행 중이다.
IP 주소의 구조(IPv4 기준)
IP 주소는 2진수로 이루어져있다. 실제 활용할 때는 10진수로 변환한 값을 활용한다.
2진수 IP를 8비트씩 분할하면 4개로 구성된다. 여기서 분할된 1byte(=8bit)는 옥텟(octet)이라고 한다. 즉, 4개의 옥텟으로 구성된다. 이 4개의 옥텟으로 분할된 각각의 값을 2진수에서 10진수로 변환한 다음, 마침표로 구분해주면 우리가 사용하는 IP 주소의 형태가 된다.
각 마디의 숫자는 0부터 255까지의 범위를 가지고 있다. 이 범위를 벗어난 숫자로 된 IP 주소는 잘못된 IP 주소이다.
공인 IP vs 사설 IP
일반적인 가정에서는 대부분 SK나 KT, LG U+ 등에서 제공하는 인터넷 서비스에 가입하여 사용한다. 이렇게 인터넷 서비스를 제공하는 업체를 ISP(Internet Service Provider)라고 한다. ISP는 우리가 사용하고 있는 공유기나 컴퓨터에 공인 IP를 할당한다. 공인 IP(Public IP)는 전체 인터넷 망에서 고유하게 식별 가능한 주소이다. 어떠한 컴퓨터, 모바일 환경에서든 인터넷이 연결된 환경에서는 IP가 동일한 곳을 가르킨다. 그러나 공인 IP가 전체 인터넷 망에서 사용되고 있기 때문에 IPv4 체계에서는 자원이 부족하다. 그래서 유효 자원수가 모자라서 IPv6가 등장했다.
우리가 사용하고 있는 컴퓨터는 공인 IP를 사용하고 있을까? 사실은 그렇지 않다. 일반적으로 인터넷이 연결된 컴퓨터는 공인 IP 대신 사설 IP를 할당받는다. 공인 IP를 할당받은 공유기에서 컴퓨터, 모바일 등 다양한 기기들에게 새로운 네트워크의 IP를 할당받는다. 그렇게 하면 공인 IP를 굳이 모든 장비가 받지 않아도 인터넷 환경에 접근할 수 있기 때문에 효율적으로 IPv4의 주소자원을 관리할 수 있게 된다. 즉, 하나의 공인 IP에서 수많은 사설 IP 할당이 가능하다.
사설 IP(Private IP)는 가정의 LAN과 같은 네트워크에서 할당되는 주소이다. 컴퓨터에서 조회하면 나오는 IP이다. 사설 IP가 인터넷 환경이 아니라 LAN과 같은 소규모 네트워크 환경에서 유효한 주소이기 때문에 외부와 통신할 때만 이 공유기에 할당된 공인 IP를 활용하기 때문에 내가 사용하고 있는 IP 주소를 명령어로 조회해보면 라우터에서 부여한 사설 IP가 조회된다. 즉, 내가 연결한 공유기 안에서만 유효하며 인터넷 환경에서 가르키는 IP 주소가 아니다.
내 컴퓨터가 외부에 빛춰지는 공인 IP는 네이버에 내 IP라고 검색하면 IP 주소를 조회할 수 있다. 실제로 내 PC에서 다른 외부 서버를 접근할 때, 제한되는 방화벽 등의 조건들을 해제할 때에는 반드시 공인 IP를 기준으로 등록해야 방화벽이 해제 또는 설정된다.
127.0.0.1(Localhost)
컴퓨터의 관점에서 자기자신을 가르키기 위해 약속된 IP 주소
특정 컴퓨터, 즉 내가 사용하는 내 컴퓨터에서만 유효한 이름이다. 이 네트워크 내역을 조회해보면 lo라는 이름으로 IP 127.0.0.1이 조회되는 것을 확인할 수 있다. lo는 Loopback Network Interface에서 비롯된 네트워크 명칭으로, 컴퓨터 관점에서 자기자신인 로컬호스트를 의미한다.
Port
하나의 컴퓨터에는 다양한 서비스가 실행 중이다.
컴퓨터를 특정할 수 있는 IP 주소만으로는 실행되고 있는 다양한 서비스 중에 어떤 곳에 데이터를 보내고 요청 해야하는지 알 수 없다. Port는 하나의 컴퓨터에서 실행되고 있는 다양한 어플리케이션 서비스를 구분하는 역할을 한다. 대표적으로 할당된 포트 번호 예시로는 HTTP(80), HTTPS(443), SMTP(25), FTP(21) 등이 있다. 웹서비스를 개발 할 때 다른 서버와 통신을 해야할 때가 있다. 접근하려는 목적지 IP와 Port를 정확하게 설정해야한다.
DNS
일반적으로 상용 서비스의 공인 IP는 보안 등의 이유로 공개되지 않는다. 우리가 사용하는 것은 문자열로 되어있는 주소이다. 그렇다면 알파벳으로 이루어진 URL로 어떻게 웹서버의 위치를 정확히 파악할 수 있는 것일까?
DNS(Domain Name Server)는 URL을 해석하여 IP 주소로 반환하는 역할을 하는 서버이다. 사용자가 주소창에 URL을 입력하면 먼저 DNS 서버로 가서 매칭되는 IP 주소가 있는지 찾는다. 이 DNS는 전세계에 분포 되어있으며 첫 번째로 탐색한 DNS 서버에 웹핑 정보가 없으면 다른 DNS 서버를 돌아다니며 주소를 찾게 된다. DNS 서버에서 URL과 맵핑된 IP 주소를 찾게 되면 이 IP 주소를 브라우저로 전달한다. 최종적으로 브라우저는 DNS로부터 전달받은 IP를 통해 홈페이지에 접속하게 된다. 즉, URL이나 IP 주소 모두 어떤 서버, 클라이언트(컴퓨터)의 위치를 특정하는 역할을 한다. 우리가 통상 사용하는 URL을 사용할 때, IP 주소로 반환해주는 역할을 하는 DNS 서버가 있다.DNS 서버는 전세계적으로 국가, 기업, 클라우드 사업자 등이 운영한다. URL에 대한 IP 주소를 반환하는 성능을 향상시키기 위해 여러가지 알고리즘이 활용되거나 하드웨어적인 개선을 하기도 한다. DNS 서버에 장애가 발생하면 막대한 피해로 이어진다.
'Back-End > Java' 카테고리의 다른 글
Spring Boot - CRUD (0) | 2023.05.29 |
---|---|
Spring Boot (0) | 2023.05.26 |
쿠키와 세션 (0) | 2023.05.23 |
HTTP 통신과 URL (0) | 2023.05.23 |
Web - 클라이언트와 서버 (0) | 2023.05.22 |