왜 웹 서비스에 포트 80 만 사용합니까?


54

하나 이상의 TCP / IP 포트를 http 전용으로 사용하는 것이 왜 합리적이지 않습니까? 당연히 순진하지만 서버 성능이 어떻게 든 향상 될 수 있다고 생각하는 것이 직관적이지 않습니까?


17
당신은 절대적으로 맞습니다. 웹 서버 기본 포트를 80에서 90,91,92 및 93으로 변경했습니다. 서버의로드가 크게 떨어졌습니다.
David Houde

17
... 아무도 더 이상 서버를 찾을 수있는 클라이언트가 없기 때문에?
Marcos Gonzalez

5
80은 http에 사용되는 포트입니다. "something.com"이라고 말하면 (또는 "something.com") 브라우저는 "something.com:80"에 대한 요청이되도록 브라우저를 완성합니다. (기본적으로 알려진 http 포트이므로 포트 80에서). 443의 https와 동일합니다. 변경하기로 결정한 경우 URL에 "myserver.com:1280"; 그렇지 않으면 브라우저가 포트 80에서 시도하여 찾지 못합니다. Wikipedia에서
Olivier Dulac

6
유감스럽게도 마르코스는 미안하다. 나는 그것에 능숙하지 않았습니다.
David Houde

3
@DavidHoude, 이모티콘을 새로 고침 할 시간입니다. :-)의 cs.cmu.edu/~sef/sefSmiley.htm
generalnetworkerror

답변:


70

포트 80은 잘 알려진 포트이므로 일반적으로 HTTP 서버를 찾는 위치로 잘 알려져 있습니다. HTTP / 1.1 RFC에 문서화되어 있습니다 .

기본값을 사용하면 URI를 사용하여 웹 브라우저에 기본값을 입력 할 필요가 없으므로 정확하게 유용합니다. 비표준 포트에서 HTTP 서버 (또는 사실상 모든 서비스)를 실행하는 경우 클라이언트가 선택한 임의의 16 비트 숫자를 기억하고 입력해야합니다.

이러한 친숙 함 외에도 성능상의 이점은 없습니다. 포트는 (dst ip:port, src ip:port)TCP 연결을 고유하게 식별하는 4- 튜플의 일부일뿐입니다 . 두 개의 연결이를 공유 dst ip:port한다고해서 시스템 리소스를 공유한다는 의미는 아닙니다. 서로 다른 스레드 또는 다른 프로세스에 상주 할 수 있습니다.

당신은 모두 논리적으로 다른 서비스가있는 경우 이제 일이 HTTP를 사용하는을, 어떤이없는 문제를 다른 포트에 그들을 실행하는가. URI를 조금 더 추하게 만듭니다.


7
그게 다야! 포트 80은 리소스가 아닙니다! 그것은 단지 튜플의 일부입니다! 너무 명확하게 넣어 주셔서 감사합니다.
Marcos Gonzalez

2
또한 다른 서비스의 경우에도 실제 HTTP 연결은 일반적으로 시스템 전체 드라이버가 포트 80에서 초기 프로토콜 분석을 수행 한 다음 올바른 서비스로 전달하여 다른 프로세스에서 완전히 다른 서비스를 제공 할 수 있습니다. 같은 포트를 공유하십시오.
Monstieur 2016 년

1
쓸모의 Userful 답변
데커드

26

서버는 하나 이상의 포트에서 연결을 처리하여 리소스를 낭비하지 않습니다. 연결을 처리하기 위해 서버 리소스가 할당되며 포트 번호는 특정 프로그램을 특정 연결에 연결하는 방법입니다.

예를 들어, HTTP 서버는 포트 80으로 들어오는 연결을 수신한다는 것을 알고 있습니다. 그리고 서버는 포트 80에서 요청을받을 때마다 http 서버로 처리한다는 것을 알고 있습니다. 그 후 http 서버는 통신을 처리 한 다음 리소스를 소비합니다.


8
이 답변에 포트 80은 요청을 보내는 사용자가 소비하지 않는다고 덧붙입니다. 그렇기 때문에 포트 80 (또는 사용자가보고있는 수신 프로토콜에 대해 잘 알려진 포트) 만 사용하면 확장성에 병목 현상이 발생하지 않습니다.
Craig Sirkin 2016 년

1
정확히 내가 이해하지 못한 것입니다. www.example.com:80에 동시에 연결하는 10 만 명의 사용자도 포트 80을 사용하지 않습니다. 설명해 주셔서 감사합니다. 아래의 @Useless '정보도 매우 밝습니다.
Marcos Gonzalez

일부 웹 서버 소프트웨어에는 인스턴스 및 / 또는 프로세스 당 제한이 있습니다. 때때로 여러 인스턴스를 실행하는 것이 좋지만 동일한 시스템에서이를 수행하려면 첫 번째 (TCP80 / 443) 연결을 첫 번째 인스턴스로 전달하는 다른 청취 포트가 필요합니다.
Remi Letourneau 2016 년

22

포트를 실제 무언가로 생각하는 것 같습니다. 16 비트 부호없는 숫자 (0-65535)는 IP 패킷의 헤더에있는 레이블입니다. 응용 프로그램 수준의 다중화에 도움이됩니다. 들어오는 패킷이 네트워크 카드에 도착하면 OS가 알림을받습니다. 들어오는 패킷이 향한 포트를 확인한 다음 패킷을 올바른 응용 프로그램에만 전달합니다. 포트 80에서 수신 대기하도록 웹 서버 (nginx)를 실행중인 경우 nginx 만 포트 80으로 패킷을 보냅니다.

클라이언트 (IP : 100.200.100.200)가 서버 (55.55.55.55)에 HTTP 요청을하면 서버 (55.55.55.55:80)의 대상 포트 80으로 요청을하지만 소스 포트는 임의로 웹 브라우저 용 OS (45490과 같은 것) 웹 서버의 HTTP 응답은 (55.55.55.55:80)에서 왔지만 대상 (사용자의 IP) (100.200.100.200:45490)으로 전송됩니다. 컴퓨터의 OS는 포트 45490 (55.55.55.55:80에서)으로 들어오는 패킷이 요청을 한 웹 브라우저에 제공되어야한다는 것을 알고 있습니다. 클라이언트에서 웹 사이트에 대한 각각의 고유 한 연결은 고유 한 임의 포트를 가져 오므로 동일한 웹 사이트에 여러 웹 브라우저를 연결하고 한 브라우저에서 페이지를 다시로드 할 때 다른 창에는 영향을 미치지 않습니다.

각 IP 패킷에는 헤더에서 사용할 수있는 소스 및 대상 IP 주소와 포트가 모두 있습니다. OS와 응용 프로그램 (웹 브라우저 또는 웹 서버)은 둘 다를 사용하여 패킷을 처리하는 방법에 대한 적절한 조치를 알아낼 수 있습니다.


2
내가 할 수 있다면 +2 투표.
generalnetworkerror

13

포트 80 및 443은 HTTP / HTTPS의 "기본"포트입니다.

이는 웹 브라우저를 사용할 때 포트 ( http://www.example.com:80 , https://www.example.com:443 ) 를 지정할 필요가 없음을 의미 합니다.

웹 서버가 다른 포트에서 수신 대기하도록하려면 사용자가 포트를 URL에 수동으로 추가하거나 특정 포트에 대한 링크로 인코딩해야합니다.

또한 대부분의 프록시 및 방화벽은 특별히 구성하지 않는 한 해당 포트에 대한 연결을 허용하지 않습니다 (구성이 없으면 나가는 프록시가 기본 포트가 아닌 포트를 수신하지 않으므로 요청이 웹 서버에 전달되지 않지만 방화벽은 단순히 비 TCP80 / 443 연결 시도 차단)

이 모든 것이 TCP / IP 레벨에서 수행 할 수있는 작업을 제한합니다

성능을 향상시키는 한 가지 방법은로드 밸런싱 장치 / 서비스가 TCP80 / 443을 수신 대기하도록하여 요청을 다른 포트 및 / 또는 ip (로컬 밸런싱) 또는 다른 원격 사이트 (글로벌 밸런싱)의 서버로 리디렉션하는 것입니다. 그러나 이것은 완전히 또 다른 주제입니다


"로드 밸런싱"개념을 소개해 주셔서 감사합니다.
Marcos Gonzalez

1
로드 밸런싱 개념에 대한 "의사 (pseudo)"실습 및 아이디어가 필요한 경우 F5는 university.f5.com에서 무료 온라인 교육을 제공합니다. 등록은 무료이며 LTM (Local Traffic Manager-로컬 밸런서)에 액세스 할 수 있습니다. ) 훈련, 모양을보고 일부로드 밸런싱 개념 (예 : 실제 IP, 가상 IP, 풀, 상태 확인 등)을 배울 수있는 교육
Remi Letourneau

좋은 충고!
Marcos Gonzalez

9

추가 포트를 추가해도 대역폭이나 그와 같은 추가 요소가 추가되지 않습니다. 포트는 파이프보다 레이블에 가깝습니다 . 파이프가 가득 차서 속도가 느려지지 않고 필요한만큼 "확장"할 수 있습니다.

서버가 너무 많은 요청을 수신하면 서버 속도는 느려지지만 다른 포트 번호를 추가하여 해결할 수있는 문제는 아닙니다.


s / label then / label than /-편집 하겠지만 한 문자 만 허용되는 편집이 아닌 것 같습니다.
Paul Gear

7

임의의 포트를 사용한 경우 사용자는 사이트로 이동할 때마다 올바른 포트 번호를 추가해야합니다. 즉, www.example.com:80; www.example.com:81; www.example.com:82 등

더 많은 포트를 사용하는 성능은 향상되지 않습니다. 각 연결에 대한 소스 포트 임시 포트 및 어쨌든 다른


7

각 TCP / IP 연결에는 sourceIP : sourcePort 및 destinationIP : destinationPort가 있습니다.

연결을 시작할 때 항상 80을 대상 포트로 사용합니다 (서버는 여러 포트가 아닌 HTTP의 포트 80에서만 수신해야하므로 의미가 있습니다). 요점은 sourcePort가 각 연결에 대해 동적이라는 것입니다.

예:

사용자 1 : 1.1.1.1:29999 ~ 2.2.2.2:80

사용자 2 : 1.1.1.2 : 45333에서 2.2.2.2:80


2

다른 물리적 연결이나 더 높은 네트워크 대역폭 또는 서버 처리 성능을 위해 다른 포트를 착각하지 마십시오. 서버가받는 것은 주소의 일부로 포트 번호를 갖는 TCP 또는 UDP 패킷입니다. 그들은 여전히 ​​동일한 전선을 통해오고 동일한 네트워크 인터페이스 하드웨어 및 드라이버 등을 거치게됩니다.

서버에 두 개의 패킷을 보내려는 경우 서버가이 두 개의 패킷을 처리하는 데 소비하는 리소스 측면에서 두 포트 중 하나에 다른 포트 번호 또는 동일한 포트 번호가 있는지 여부는 중요하지 않습니다. 동일에 가깝다.

따라서 이는 성능을 향상시키는 방법이 아닙니다.

이것에 대한 유일한 예외는 동시에 실행되는 두 개의 다른 악마 (또는 동일한 사본 두 개)를 두 개의 다른 포트 번호에 연결하고 이러한 악마 각각이로드에 따라 매우 크게 확장되지 않는 경우입니다. 일반적으로 그렇지 않습니다.


1

Remi가 언급했듯이 포트 80 및 443은 HTTP / HTTPS의 "기본"포트입니다.

대부분의 네트워크 및 방화벽은이 포트를 통과하는 트래픽을 차단하지 않습니다. 따라서 방화벽이 서비스를 차단하는 것에 대해 걱정할 필요가 없기 때문에이 포트를 사용하는 것이 더 쉽습니다. 그렇지 않으면 방화벽 규칙을 재구성하고 규정 준수 / 보안의 승인을 받아야합니다.


1
아멘, 비표준 포트를 사용하는 웹 사이트는 모든 보안 관리자의 골칫거리입니다. 귀하의 작업에 대한 한 명의 사용자는 이상한 포트 = 프록시 변경, FW 변경, 보안 검토 등을 갖춘 하나의 웹 사이트를 사용해야합니다.
wintermute000

0

여기에있는 다른 사람들이 말했듯이 집에서 호스팅하지 않는 한 기본적으로 포트 80 이외의 다른 포트에서 웹 서버를 호스팅하는 것은 의미가 없습니다. 많은 ISP가 아웃 바운드 TCP / UDP 포트 80 및 443 ( IANA 는 각각 HTTPHTTPS 로 정의 )을 제한하며,이 경우 해당 포트를 사용하면 사이트 로딩 속도 등이 저하됩니다. 그러나 IANA 는 3 개의 HTTP-ALT 포트를 할당 했습니다. TCP와 UDP 모두. 이 포트는 591, 8008 및 8080입니다.이 포트를 사용하는 것도 가능하지만 서버 관리자의 수명을 연장시킬 수 있습니다.

포트 번호 소스 : https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.