관리 메뉴

새로운 시작, GuyV's lIfe sTyle.

Part 5. 인터넷 서비스에 대해 좀 더.. 그리고 IP와 Port. 본문

ⓟrogramming/웹프로그래밍 제대로 배우기

Part 5. 인터넷 서비스에 대해 좀 더.. 그리고 IP와 Port.

가이브 2020. 2. 2. 13:38

앞 글에서, 인터넷의 모든 서비스는 규약(프로토콜)이 있고, 이를 따라간다고 하였으며, 프로토콜을 이해해야 제대로 프로그래밍이 가능하다고 했었습니다. 

가정에서 컴퓨터 또는 휴대폰으로 인터넷을 이용하고 있을 것입니다. 공유기도 설치를 해놓으셨을 거구요.  

이로서 네트워크를 구성이 된 것입니다.

공유기에 무선이든 유선이든 연결된 장치들은 인터넷에 연결된 것 처럼 구성이 되어있는데, 이를 LAN(Locan Area Network) 환경이라고 부릅니다. "랜선"이라고 부르는 그 LAN이 맞구요. ISP라고 부르는 KT, SK브로드밴드, 헬로모바일 등의 회사에서 각 가정의 네트워크를 전 세계 네트워크망인 Internet 에 숟가락을 얹어줌으로 해서 네이버, 페이스북에도 접속이 가능하게 되는 것입니다.

인터넷을 사용하는 사람을 클라이언트(Client)라고 하고, 사용할 수 있게 서비스를 제공하는 것을 서버(Server)라고 합니다. 당장에 집에서도 네트워크 인터넷 규약을 준수하여 도메인 주소(naver.com, daum.net)를 사용할 수 있게 만들고, 휴대폰으로 네이버를 치면 거실 컴퓨터로 접속이 가능합니다. 접속할 수 있는 사람이 없겠지만요.

조금 더 설명하자면, 지금 사용중인 컴퓨터 본체에 연결된 랜선을 뽑으면, 이 역시 마찬가지로 혼자 네이버가 되거나 다음이 되는 등 인터넷 싱글 플레이 버전(?)을 즐길 수 있습니다. 실제 프로그래밍 개발시에도 서버를 자체적으로 구축해서 접속하여 테스트를 하죠.

만약 인터넷에 연결되어 있고, 공인 IP를 사용 중이라면 누구든지 내 서버에 IP로 접속을 할 수 있게 됩니다.

네트워크 분야도 아주 방대합니다. 프로그래밍과는 다른 영역인데, 그래도 프로그래머라면 네트워크 프로그래밍에 필요한 기반 지식입니다. 웹프로그래머들도 당연히 기본적인 네트워크 환경에 있으므로 당연히 어느 정도는 알아야 하지 않을까요? 

 

인터넷 서비스를 제공하는 각종 서버에 접속을 하려면 인터넷에 연결된 모든 장비의 고유 주소인 IP(Internet Protocol)를 알아야 합니다. IP는 숫자와 점으로 이루어져 있는데요. 윈도우 시작버튼 -> "cmd" 로 콘솔창을 열고, ipconfig 를 실행해봅시다.

 

IPv4 주소를 인터넷에 연결되었든 아니든 컴퓨터에 연결이 가능한 설치된 장비가 있다면 IP가 하나 받게됩니다. 내가 만약 타인에게 내 IP를 알려줄 일이 있을 때 저걸 알려주면 됩니다. 다만, 공유기에 연결되어있다면 공인IP가 아닌 우리집의 공유기가 임시로 컴퓨터에 할당해준 사설IP일 가능성이 매우 높습니다. (이럴 경우에는 네트워크 설정이 필요합니다.)

인터넷 주소라고 불리는 naver.com, facebook.com 같은 도메인주소라 불리는 것은, 원래 IP를 가지고 있는데, 이를 사람이 쉽게 기억할 수 있도록 표준을 만든 것이라고 생각하면 됩니다. "주소는 IP로 변경된다"라고 생각하면 되구요. 주소를 관리하는 서버가 있습니다. 내가 인터넷에서 guyvhomepage.com 의 이름으로 서비스를 하고 싶을 때, 등록을 해주면 자동으로 전 세계의 주소를 관리하는 서버간에 상호 전파를 합니다. (전세계에 반영되는 시간은 대략 하루 정도 걸린다고 하네요.)

어쨌든, IP에는 연결을 받을 수 있는, 숫자로 이루어진 포트(Port) 번호가 존재합니다. 직역하면 "항구"라는 뜻인데요, 인터넷을 서비스하기 위해서는 클라이언트가 접속을 할 수 있는 환경이 아주 기본적이겠죠?

최종 정리하면, 모든 인터넷 서비스에서는 필요한 것이 이름(IP)과 무엇인지, 포트(Port)번호가 무엇인지를 알아야 한다는 것입니다.

확인을 위해 네이버(naver.com)에 접속을 하는 과정으로 살펴봅시다.

내 PC가 인터넷에 연결되어 있고, 네이버 웹(Web) 서비스를 이용하고 싶으면 네이버의 IP와 서비스를 제공하기 위해서 서버측에서 제공하는 Port 번호를 알아야 된다고 했죠. 접속을 하기 위해 (크롬,익스플로러를 통칭하는) 웹브라우저를 열고, 주소창에 "naver.com"을 입력하는데요. naver.com이 IP를 말하는 것이고, Port는 지정하지 않아도 웹브라우저가 자동으로 웹의 기본 포트를 지정하게 됩니다. 웹의 기본 포트는 "80"번입니다. 

 

엣지 웹브라우저로 네이버(naver.com)을 주소창에 넣으니 이렇게 접속을 하게 됩니다.

 

주소를 보면 https://www.naver.com 이라고 나옵니다. 저는 "naver.com"만 쳤는데요, 자동으로 웹브라우저에서 서버에 접속한 최종 주소를 보여주게 되는 것입니다. 

https: 프로토콜을 이용하고, (s가 붙으면 secure 라고 해서, 보안이 적용된 서버입니다)

//www.naver.com 주소입니다.

기본 Port 번호인 80은 생략 가능합니다. 붙여도 되죠. (s가 붙은 서버는 443번이 기본 Port 번호입니다)

 

이렇듯, IP와 Port는 필수로 알아야 되고, 웹을 사용하기 위한 프로토콜인 HTTP는 80번 포트(HTTPS는 443번)가 기본이라고 했습니다. 이는 80번으로 꼭 사용하라는 필수 사항이 아니고 어떤 번호든지 서비스를 제공하는 서버에서 자유롭게 변경할 수 있습니다. (당연히 기본이 아닌 다른 번호를 설정 했더라면 포트 번호를 알려줘야겠죠?) 그리고 이전에 언급했던 인터넷 서비스들은 서비스를 제공하기 위해 기본 Port 번호를 각자 하나씩 가지고 있습니다.

외울 필요는 없구요. 그냥 그때그때 필요할 때 찾아보시면 됩니다. 다시 말하지만, 중요한 것은 "인터넷 서비스에 접속하려면 접속하려는 서버의 IP와 서버가 제공중인(열려있는)  Port 번호를 알아야 한다"라는 것입니다. 

하나 더, 모든 컴퓨터는 자기 자신을 127.0.0.1이라는 가상의 IP를 가집니다. naver.com 처럼 "도메인 이름" 으로도 존재하는데, 바로 "localhost" 입니다. 메모를 하나 해놓으시는게 좋습니다. 어차피 외워지겠지만, 초반엔 좀 헷갈릴 수 있으니까요.

 

마지막으로, 이 글에서 말하려고자 하는 것은, 컴퓨터 자기 자신이 서버를 열고, 접속을 했을때, 분명 컴퓨터는 한대지만서로 다른 존재라는 겁니다. 즉, 컴퓨터 두대로 한대를 서버, 한대를 클라이언트라고 칭하고, IP, Port 를 지정하여 접속을 하는 것과, 한대로 하는 것과는 다를게 없다는 것입니다. 그러기에 (우리가 해볼 웹을 포함한) 네트워크 프로그래밍을 하더라도 서버 따로, 클라이언트 따로 장비를 둘 필요가 없는 것입니다. 

 

구구절절 뭔가 설명을 많이 했는데요, 뭔가 복잡하고 특별해 보이지만 간단합니다. 

 

1. 내 컴퓨터가 곧 서버이자 클라이언트인 싱글 플레이어다.

2. 우리집 공유기는 자체적으로 가상의 인터넷인 것 처럼 만들어준다.

3. 네트워크에서는 서로를 구분하기 위해 고유한 IP를 가지고 있고, 서비스를 제공하기 위해 Port 를 열어놓고 접속해주기를 기다리고 있다. 

4. 나 자신은 127.0.0.1 또는 이름으로 localhost 로 쓸 수 있다.

5. 서버와 클라이언트는 시킨대로 하는 컴퓨터이므로, 각자 해야 할 일만 할 뿐이다. 

 

오늘은 여기까지만 정리하겠습니다.

 

반응형
Comments