서버가 소통하는 방법을 사람이 소통하는 방법과 비유해보자
- 일단 상대방이 누군지 알아야 한다.
- 그리고 난 뒤 상대방이 대화하는 것을 허락해야 한다.
- 상대방이 허락을 했다면 상대방과 같은 언어를 사용해야 한다.
이는 각각 다음과 같이 나타낼 수 있다.
- 일단 상대방이 누군지 알아야 한다. -> IP 주소
- 그리고 난 뒤 상대방이 대화하는 것을 허락해야 한다. -> 방화벽 포트
- 상대방이 허락을 했다면 상대방과 같은 언어를 사용해야 한다. -> 프로토콜
하나씩 살펴보자
IP주소란?
- Internet Protocol address로 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다.
우리는 다른 네트워크와 소통하기 위해서 소통할 네트워크의 IP주소를 알아야 한다.
위에서는 이를 "상대방이 누군지 알아야 한다"라는 것으로 비유했다.
IP주소에는 IPv4와 IPv6가 있다. 일반적으로 많이 사용하는 IPv4는 32비트인데, 모든 단말에 주소를 부여하기에 32비트는 모자라게 되자 IPv6라는 새로운 버전이 생겨났다. IPv6는 128비트의 주소 길이를 가진다.
IP주소에는 사설 IP주소와 공인 IP주소가 있다.
공유기에 여러 대의 컴퓨터가 연결되어있는 것을 생각해보자
같은 공유기(같은 네트워크)에 연결된 호스트는 같은 공인 IP주소를 가진다
외부에서 공인 IP주소가 요청이 들어오게 되면
공인 IP주소는 공유기에서 DHCP(Dynamic Host Configuration Protocol)를 통해 여러 개의 사설 IP주소로 변환되고
각각의 호스트는 이 사설 IP주소를 할당받게 된다.
반대로 사설 IP주소에서 요청이 나갈 때 NAT(네트워크 주소 변환)를 통해 사설 IP에서 공인 IP로 변환되어 나가게 된다.
이 과정을 통해 공인 IP주소 하나로 여러 대의 호스트에서 인터넷을 사용할 수 있게 된다.
실제로 외부에서 내 컴퓨터의 IP주소를 확인했을 때와 내 컴퓨터에서 내 IP주소를 확인했을 때 다른 값이 나타남을 볼 수 있다. 외부에서는 내 컴퓨터의 공인 IP주소를 나타내고 내 컴퓨터에서는 내 사설 IP주소를 나타내기 때문이다.
cmd 창의 ipconfig 출력 값과 네이버에 "내 ip주소"를 검색했을 때 다른 값이 나옴을 알 수 있다.
포트란?
- 포트(port)는 운영 체제 통신의 종단점이다.
- 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
- 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다.
포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다.
일종의 입구라고 생각할 수 있다.
내부 네트워크에서 포트라는 입구를 열어주는 것을 "인바운드 규칙을 설정한다"라고 한다.
포트번호는 프로토콜과 1대 1 대응된다.
예를 들어 Http 요청 ->80번 포트, MySQL -> 3306 포트, Https -> 443번 포트 등이 있다.
포트 포워딩이란?
- IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 네트워크 주소 변환(NAT)의 응용이다.
- 포트 포워딩은 원격 컴퓨터(이를테면 인터넷 상의 컴퓨터)가 근거리 통신망(LAN) 내에 위치한 특정 컴퓨터나 서비스에 연결할 수 있게 한다.
예를 들어 외부에서 MySQL 서버를 요청했다고 하자. 이 요청은 공유기를 통해 네트워크망으로 들어오게 된다.
그리고 여러 대의 호스트 중에서 3306 포트를 개방한 호스트를 찾아가게 된다.
외부에서 Http 요청이 들어오게 된다면 80번 포트를 개방한 호스트와 연결이 된다.
포트 포워딩을 하는 이유는?
외부에서는 내부의 사설 IP주소를 알지 못한다. 즉, 외부에서는 공인 IP주소만을 알고 있는 것이다.
이 때문에 외부에서 요청이 들어왔을 때 어떤 호스트와 연결을 할지 결정해야 된다.
이때 포트 포워딩을 설정하면 이 문제를 해결할 수 있다.
포트가 닫혀있는 호스트는 연결을 할 수 없게 되고 포트가 열려있는 호스트와 연결하게 된다.
위에서는 이를 "상대방이 대화하는 것을 허락해야 한다"라는 것으로 비유했다.
프로토콜이란?
- 프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다.
- 프로토콜에는 다양한 것들이 존재한다. Http, Https, FTP, SSH 등이 있다.
위에서는 이를 "상대방과 같은 언어를 사용해야 한다"라고 비유했다.
'서버 & 네트워크' 카테고리의 다른 글
테스트 서버를 사용하는 이유 (0) | 2021.09.11 |
---|---|
DNS란? (0) | 2021.09.11 |
쿠키와 세션 (0) | 2021.09.10 |
WAS와 웹 서버의 차이 (0) | 2021.09.08 |
리눅스 환경에서 AMP소스설치(3) PHP 7.4.21 (0) | 2021.09.07 |
댓글