개발/개발관련

[개발관련] 프로세스와 포트에 대한 이해

mabb 2023. 6. 29. 23:08
반응형

프로세스는 통신을 위해 포트를 사용한다

0~65535번까지 포트가 정해져 있다. 프로세스는 이 포트들 중 한 포트를 선택하여 외부의 요청을 받고 응답하는 등 통신을 할 수 있다.  대표적인 포트번호는 80, 8080, 443, 8443이 있다. 보통 이 포트들은  외부에서 무언가 요청을 할 수 있도록 열어둔다. 프로세스는 열려 있는 포트를 사용하여 외부 또는 다른 프로세스와 통신을 할 수 있다. 

서버에서 동작중인 프로세스가 외부와 통신하려면

 

PID가 9002번인 nginx worker 프로세스가 오픈되어 있는 443번 포트를 '사용'하여 LISTEN하고 있다.

통신을 위해 필요한 것은 통신규약, 주소, 포트번호

인터넷 브라우저의 주소창에 입력하는 문자열에는 통신을 위해 필요한 정보들이 담겨 있다.
[통신규약(프로토콜)]
[수신 측의 주소]
[수신 측의 프로세스가 사용하고 있는 포트번호]
[요청사항]

특정 프로토콜은 기본적으로 몇 번 포트로 가야 한다.라고 약속해 둔 것이 있는데
http프로토콜은  80번 포트, https프로토콜은 443번 포트로 보낸다고 기본적인 약속이 되어 있다.
약속되어 있기 때문에 주소창 입력 시에 사용자는 포트번호를 생략할 수 있다.
https:// www.naver.com    
라는 주소의 의미는, https 프로토콜을 사용하여 www.naver.com  도메인에 매핑된 IP(서버 주소)의 443번 포트에 "/" 요청을 보내는 것이라고 볼 수 있다.  포트번호와 요청은 생략이 되어 있다. 만약 443번 포트가 아닌 8443번 포트로 요청을 하고자 하면 https://www.naver.com:8443이라고 포트번호를 명시해야 한다. 하지만 naver.com 서버의 8443번 포트가 열려있지 않아 다음과 같은 화면을 볼 수 있게 된다.

https://www.naver.com:8443 이라고 요청하였을 때

 

tcping 커맨드로 naver.com의 443, 8443 port가 열려있는지 확인해본 모습

 

브라우저 주소창에 입력하는것의 의미

주소는 보통 문자로 입력하는데 도메인에 해당하는 문자열은 DNS서버 (Domain Name Server)를 통해 매핑되는 IP주소로 변환이 된다. 도메인부인 naver.com 문자열이 233.130.200.107이라는 IP주소라는 것을 알려주는 것이 DNS서버의 역할이다. 사용자가 입력한 도메인문자열은 DNS서버를 통해  IP주소로 변환된 후 라우팅된다. 전 세계에 수많은 DNS서버가 있는데 이들끼리는 어떤 문자열이 어떤 IP주소다라는 정보를 전파한다. 아직 그 정보를 전파받지 못한 DNS서버를 기본적으로 사용하는 네트워크에서는 신규 등록한 도메인으로 접속을 못하는 현상이 발생할 수 있다.
  IP주소는 컴퓨터(서버)의 주소를 의미한다. 인터넷 망 속에서 IP주소로 컴퓨터(서버)를 찾고(라우팅), 열려있는 포트를 사용하는 컴퓨터 내의 프로세스에게 요청사항을 전달할 수 있다. HTTP는 서버의 80번 포트로, HTTPS는 서버의 443 포트로 요청을 보내는 것으로 기본 약속이 되어 있다. 따라서 http:// www.naver.com:80이라고 전부 타이핑하지 않고 www.naver.com  까지만 입력하여도 된다.
 

nginx 컨피그 구성 중 알게 된 것들

프로세스가 이미 사용중인 포트를 사용하려고 하면 포트 충돌이 일어나게 된다. 
리눅스 서버 내 방화벽인 firewalld는 데몬 프로그램이다. firewalld는 443으로 요청이 왔을 때 이를 8443으로 포트 포워딩해 주는 설정이 되어 있었다. nginx 컨피그 중 listen 포트를 443으로 설정해 주었는데, 서버 내의 방화벽에서는 443 요청을 8443 포트로 전달하므로 해당 listen 443 포트로 설정한 nginx프로세스는 요청을 받을 수 없었다.
 한편, nginx 및 tomcat 을 동작시킬 때 실행 유저 권한에 따라 서비스가 정상동작하지 않는 문제가 발생하였다. 관련 로그 및 캐시 파일을 삭제하고 nginx와 tomcat을 리스타트하는 것으로 해결하였으나 206, 404 등 에러가 발생하였었다.

nginx 및 톰캣을 한 서버에서 사용할 때의 상황 도식화
tomcat/conf/server.xml 톰캣이 8080포트를 사용하겠다고 설정하는 부분이다.
nginx/conf.d/default.conf,  nginx가 443 포트를 사용하여 Listen하겠다고 설정하는 부분이다.

 

반응형