Port?
HTTP 통신을 하다보면 웹 URL 에서 어렵지 않게 접할 수 있는 :8080
이게 도대체 뭔지 궁금했지만
대충 네트워킹을 위한 연결 통로 중 하나이고 수 많은 통로중 우리가 가장 빈번하게 사용하는 것 이라는 정도로 생각하고 넘어갔는데,
도저히 찝찝해서 넘어갈 수가 없었다. 걍 제대로 공부하고 가자
1. 먼저, Port 란?
포트(port)는 "논리적인 접속장소" 이며 특히 인터넷 프로토콜인 TCP/IP 를 사용할 때에는
클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다.
네트워크 상에서는 통신 시 IP를 토대로 해당 서버가 있는 컴퓨터에 접근하게 되는데,
대표적으로 인터넷 웹서비스, 메일 서비스, DNS 서비스, FTP 서비스 등이 있다.
이때,
대부분의 컴퓨터에는 하나의 컴퓨터에서 여러개의 서버가 실행된다.
이때, 어느 서버에 접속해야 하는지 컴퓨터에게 알려주어야 하는데. 이를 위해 사용되는 것이 포트 번호이다.
2. 포트 번호
포트 번호는 해당 컴퓨터에서 실행되고 있는 서버를 구분 짓기 위한 16비트의 논리적 할당으로 0 ~ 65536번이 존재한다.
이 중 0~ 1023 번 까지는 어떤 통ㄷ신이 어떤 포트를 사용할 것인지 정해져 있는데
이를테면, http 통신은 80번포트, ssh통신은 22번포트 를 사용한다.
이처럼 정해져 있는 0~ 1023번 보트를 well-known port라고 한다.
우리가 사용하는 웹서버는 기본적으로 80 포트와 연결되어 있다 (listening)
다음 링크에서는 더 자세한 port별 번호가 지정되어 있다.
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
3. 한 개의 호스트에서 2개 이상의 서비스를 운영할 때.
만약 웹서버를 하나 더 사용하고 싶은 경우 80번 포트는 이미 기존 웹서버에서 사용중이기 때문에 사용할 수 없다.
이럴때는 well-known-port가 아닌 다른 포트들과 연결해서 사용하여야 하는데,
이때 관습적으로 사용하는 것이 우리가 매번 보던 8080이다.
우리가 일반적으로 사용하는 http://localhost.com 은 사실 뒤에 :80이 생략되어 있다. 당연히 그렇게 하기로 약속되었기 때문에 누구나 알 것이라고 가정하고 생략하는 것.
한개의 호스트에서 두 가지 이상의 서비스를 이용하고 싶을 때는 두가지 방법이 있는데,
- 첫번째로는, domain을 나누어서 운영하는것이다.
예를 들면 www.hostexample.com 과 www.test-hosteample.com 등으로 아예 다른 도메일을 나누어서 관리를 한다.
보통 현업에서 개발서버와 테스트서버, 실서버를 이런식으로 관리한다.
이는 80포트를 이용한 한개의 서비스 이지만, 그 서비스 내에서 도메인에 따라 다르게 동작하도록 한다.
- 두번째로는, 다른 포트로 서비스를 이용하기
이 방법은 성격이 다른 서비스를 운영하기 좋다.
80포트를 사용한는 서버가 아닌, 또 하나의 웹서버를 설치하고 아까 말했듯이 8080 포트를 사용한다.
해서 http 통신 규약에 따라서
http://localhost.com:8080 포트번호를 명시해주면 또 다른 포트로 접속해서 사용할 수 있다.
이는 도메인은 같지만 포트번호를 다르게 설정함으로써 서비스를 이용할 수 있다.
현업에서는 핫픽스로 수정한 내용을 서버에 올리기전에 같은 서버에서 테스트하기 위해서 localhost:8080 환경에서 테스트를 해본다. 이렇게 하면 같은 실서버에 영향을 주지않고 실서버와 같은 환경에서 핫픽스로 테스트가 가능하다.
참고 사이트 http://egloos.zum.com/canddi/v/456721 , https://basemenks.tistory.com/263