[정보 및 잡담] 네트워크란 (인터넷(Internet), 아이피(IP), 포트(Port))


Development note/Etc.  2015. 6. 5. 21:56

안녕하세요. 명월입니다.


우리가 프로그램 개발하는 데 있어 IO 다음으로 중요하다고 생각되는 부분이 통신 부분입니다.


통신이란 단순히 생각하면 컴퓨터와 컴퓨터 간의 정보교환을 의미합니다. 그 뜻은 컴퓨터 간에 선을 연결하여 내가 원하는 정보, 혹은 상대가 원하는 정보를 전달하고 수신하는 것을 뜻하는 것입니다.


그중에서 통신 방법에 관해 여러 가지가 있지만, 우리가 잘 알고 있는 인터넷에 대해 예로 들겠습니다. 최초 통신은 컴퓨터와 컴퓨터 한 대씩 연결하여 통신한 것으로 생각하면, 인터넷은 한 대가 아닌 여러 대, 더 넓게는 전 세계의 컴퓨터를 연결한 것입니다.
우리가 브라우저를 접속하여 주소창에 URL을 넣고 접속하면 어디 선가의 컴퓨터에서 그 URL에 대한 정보에 대한 회신을 내 컴퓨터로 반송하는 것입니다. 그러면 우리가 URL을 치면 어떤 방식으로 우리에게 올까요?


URL 주소는 도메인정보가 포함되어 있습니다. 예를 들면 http://nowonbun.tistory.com의 URL로 접속한다고 가정할 때 tistory.com의 도메인과 nowonbun의 호스트 명이 합쳐져서 nowonbun.tistory.com의 서버에 접속해서 우리가 원하는 정보를 취득해 오는 것입니다.


그렇다면 반대로 우리가 보내달라고 요청은 했다고 하면, nowonbun.tistory.com의 서버는 접속 컴퓨터가 어디 있는지 알고 정보를 보내주는 것일까요? 개인이 사용하는 PC는 도메인이라는 것이 없는데 말이죠.


원래 세계의 모든 컴퓨터는 인터넷상에서 식별되는 주소가 있습니다. 그것을 우리는 IP주소라고 합니다. 그것은 내가 인터넷 할 때의 내 식별코드입니다. 쉽게 예를 들면 각 컴퓨터에 전화번호가 있다고 생각하면 됩니다. 모든 컴퓨터는 IP라는 전화번호를 가지고 전화 걸면 상대방은 내 전화번호로 정보를 전달하는 형태로 통신하는 것입니다.
역으로 생각을 다시 하면 우리가 nowonbun.tistory.com의 서버에 전화 걸어서 정보를 수신하는 의미입니다.



위키 백과 - IP 주소



여기서 조금 의문이 드는 점은 내 IP주소는 255.255.255.255의 형태로 이루어져 있는데 nowonbun.tistory.com은 255.255.255.255의 형태가 아닌 문자 형태로 되어있네요.
분명 nowonbun.tistory.com의 서버도 IP주소로 이루어져 있습니다. 그러나 사용자가 컴퓨터를 접속할 때마다 IP주소를 일일이 외우고 다닌다고 하면 엄청나게 힘들겠지요. 그래서 사람이 외우기 쉬운 문자로 치환하여서 사용하는데 이것을 도메인이라고 합니다.


여기까지가 인터넷(Internet)과 IP에 대한 간략한 설명이었습니다. 사실 이 인터넷(Internet)과 IP 설명만 해도 온종일 설명할 수 있을 정도로 내용이 방대합니다. 그러나 우리는 프로그램 작성의 목적이므로 기본적인 개념만 알고 있어도 충분합니다. (물론 고급 네트워크 프로그래밍으로 가면 DNS, 라우터 등을 알아야 합니다)


다시 처음으로 돌아와서 네트워크 통신은 컴퓨터와 컴퓨터 단위로 한다는 것을 알았습니다.
그런데 이 서버라는 컴퓨터는 한가지의 통신서비스를 하는 경우는 드뭅니다. 예를 들면, 웹 서비스를 하면서 파일 전송 서비스(FTP) 등등 여러 가지 통신 서비스를 사용하는 경우가 많습니다.


그러면 컴퓨터가 정보를 수신할 때 이 데이터가 어떤 프로그램에서 사용되는 데이터인지 알 수 없습니다. 무작위로 들어오는 데이터에 해더를 두어 분기하면 데이터를 구분할 수 있지만, 프로그램적인 형태가 아닌 데이터 패킷 단위로 생각할 때는 알 수가 없습니다.


그런 프로그램마다 통신 출구를 설정하고 데이터를 분기할 수 있는 개념으로 포트가 있습니다. 즉, 통신할 때 몇 번 포트의 데이터, 몇 번 포트의 데이터 이런 식으로 설정하면 데이터를 수신할 때 프로그램에 데이터를 분기할 수 있습니다.


이러한 포트 번호는 표준으로 정해진 것은 아니지만, 암묵적인 룰이 하나 존재합니다.
예를 들면 FTP는 21, HTTP는 80등의 기본적인 포트가 암묵적으로 약속했습니다. 그렇다고 꼭 그 포트만 쓰는 것이 아니고 다른 포트도 사용할 수 있습니다.


위키 백과 - 포트 번호