[TIL]포트(port)란?

여주링·2021년 1월 17일
0

TIL

목록 보기
4/13
post-thumbnail

위코드 1,2차에서 사용하던 0:8000
과연 실제업무에서도 8000을 사용할까? ❌Nope❌

포트(Port)

TCP나 UDP 에서 어플리케이션이 상호구분을 위해서 사용하는 번호이다. IP 내에서 프로세스 구분을 하기 위해서 사용한다. 16비트로 된 숫자이며 IP주소뒤에 :xxxx로 나타낸다.

예시로 내 컴퓨터의 주소가 123.456.789.000라고 치면, 자료를 받을경우 & 채팅을 하는 경우 포트번호를 나누지 않으면 혼란이 생긴다. 자료는 :1000 채팅은 :1001로 이렇게 구분을 해주는것

👉IP주소는 컴퓨터주소, 포트는 안에서 각 프로세스가 위치한 방번호라고 생각하면될듯

포트 번호의 구분

포트 번호는 크게 세 종류로 구분된다.

  • 0번 ~ 1023번: 잘 알려진 포트 (well-known port)
  • 1024번 ~ 49151번: 등록된 포트 (registered port)
  • 49152번 ~ 65535번: 동적 포트 (dynamic port)

TCP/IP의 상위 프로토콜을 사용하는 응용프로그램에서는 인터넷번호 할당 허가 위원회에 의해 미리 지정된 프토번호들을 가지고있다. 이런 포트번호들은 잘알려진 포트번호로 불린다. 다른 응용프로그램 프로세스들은 접속 할때마다 포트번호가 새로 부여된다.

1. 잘 알려진 포트 (0 ~ 1023) - 국제 도메인 관리기구에 통제

20 : FTP(data)
21 : FTP(제어)
💡 22 : SSH
23 : 텔넷
53 : DNS
💡 80 : 월드 와이드 웹 HTTP
119 : NNTP
💡 443 : TLS/SSL 방식의 HTTP

2. 등록 포트 (1024 ~ 49151) - 국제 도메인 관리기구에 등록

💡 MySQL - 3306
PostgreSQL - 5432

3. 동적 포트 (49152 ~ 65535) - 임시 포트들. 어떤 프로세스들에게 임의로 사용가능

네트워크가 지원되는 게임들 중 TCP/IP 직접연결을 지원하는 게임들이 있는데 해당 포트번호를 열어주는 방법을 이용해 공유기에 물려있는 환경에서 이용할 수 있다. 방법은 아래와 같으며, 호스트(방 만드는사람) 측 기준으로 설명한다.(클라이언트(참가하는 사람)측은 별도로 설정할 것이 없다.)

  1. 같이 하고자 하는 게임이 사용하는 포트번호를 알아둔다. 포트번호를 직접 설정할 수 있다면 설정해둔다.
  2. 공유기 관리 페이지를 열어서 포트 포워딩 항목에 해당 포트와 호스트할 PC의 IP주소를 설정해둔다.
  3. 해당 게임을 실행해서 TCP/IP게임을 호스트한다. 이때 참가하려는 사람에게는 공인IP주소(즉 공유기가 할당받은 IP주소)를 알려주어야 한다.

찾아보게된 이유

자세한건 기업협업 후기에서 말하겠지만, 지금까지 위코드에서는 Django의 기본포트번호인 8000번을 가지고 사용을했다. 그러나 실질적 회사에 와서 보니 사용하는 포트가 22,80,443으로 전혀 다른 방식을 사용하고 있었다. 실무에서는 당연한 내용이지만 이부분을 잘 몰라서 당황했다.

주구장창 터미널에 python manage.py runserver 0:8000을 쳐대다 22,80,443서버를 이용한다니, 개념을 모르니 방법도 모르고 0:8000대신 0:22, 0:80, 0:443을 눌러댔다. 결과는 permission denied

결국 담당자분이 8000을 열어주셨고🙇‍♀️ 이부분에 대한 피드백을 주셨다

80포트, 443포트, 22포트만 열려있는 상태라서 runserver로 8000포트만 열려있으면 접속이 안 되는 상태였고, 80포트(1024보다 작은 포트)는 리눅스에서 시스템 관리자 권한이 필요한 포트라서 runserver로는 바인딩을 할 수 없는거에요.

해당부분은 실무에서는 NgnixGunicorn을 통해 runserver를 대체하고 있기때문에 잘 해결되었다. 그래도 왜 이렇게 하는지 이해는 해야할거 같아서 정리해보았다

profile
🌱Backend Developer👩‍💻

0개의 댓글