programing

애플리케이션이 브라우저와 충돌하지 않고 포트 80 / HTTP를 사용하려면 어떻게해야합니까?

kingscode 2021. 1. 18. 08:12
반응형

애플리케이션이 브라우저와 충돌하지 않고 포트 80 / HTTP를 사용하려면 어떻게해야합니까?


내가 올바르게 이해하면 다른 포트를 사용하면 방화벽 문제가 발생할 수 있으므로 응용 프로그램은 때때로 HTTP를 사용하여 메시지를 보냅니다. 그러나 웹 브라우저와 같은 다른 응용 프로그램과 충돌하지 않고 어떻게 작동합니까? 실제로 한 번에 실행되는 여러 브라우저가 어떻게 충돌하지 않습니까? 모두 포트를 모니터링하고 알림을 받습니까? 이런 식으로 포트를 공유 할 수 있습니까?

나는 이것이 멍청한 질문이라고 생각하지만 이전에 생각한 것이 아니며 다른 경우에는 두 개의 앱이 동일한 포트를 사용하도록 구성되었을 때 문제를 본 적이 있습니다.


A : 2 개 포트가 있습니다 소스 포트 (브라우저)와 대상 포트 (서버). 브라우저는 OS에 사용 가능한 소스 포트 ( 33123 수신 )를 요청한 다음 대상 포트 (일반적으로 80 / HTTP , 443 / HTTPS )에 소켓 연결을 설정합니다 .

웹 서버가 응답을 받으면 소스 포트가 80이고 대상 포트가 33123 인 응답을 보냅니다.

따라서 stackoverflow.com에 동시에 액세스하는 2 개의 브라우저가있는 경우 다음과 같은 결과가 나타납니다.

Firefox (localhost:33123) <-----------> stackoverflow.com (69.59.196.211:80)
Chrome  (localhost:33124) <-----------> stackoverflow.com (69.59.196.211:80)

나가는 HTTP 요청은 포트 80에서 발생하지 않습니다. 응용 프로그램이 소켓을 요청할 때 일반적으로 소켓을 무작위로받습니다. 이것은 소스 포트입니다.

포트 80은 HTTP 콘텐츠를 제공하기위한 것입니다 (클라이언트가 아닌 서버에서). 이것은 목적지 포트입니다.

각 브라우저는 서로 다른 소스를 사용하여 요청을 생성합니다. 이렇게하면 패킷이 올바른 애플리케이션으로 되돌아갑니다.


연결을 식별하는 것은 (IP 프로토콜, 로컬 IP 주소, 로컬 포트, 원격 IP 주소, 원격 포트)의 5 개 튜플입니다. 여러 브라우저 (또는 실제로 여러 페이지를 동시에로드하는 단일 브라우저)는 각각 대상 포트 80을 사용하지만 로컬 포트 ​​(O / S에 의해 할당 됨)는 각 경우에 다릅니다. 따라서 충돌이 없습니다.


클라이언트는 일반적으로 1024에서 65535 사이의 포트를 선택합니다.이를 처리하는 방법은 운영 체제에 따라 다릅니다. Windows 클라이언트는 새로운 연결마다 값을 증가시키고 Unix 클라이언트는 임의의 포트 번호를 선택합니다.

일부 서비스는 NTP (123 UDP)와 같은 정적 클라이언트 포트에 의존합니다.


브라우저는 일반적으로 다른 컴퓨터 에있는 웹 서버 에서 콘텐츠를보기 위해 사용하는 클라이언트 응용 프로그램 입니다. 웹 서버는 클라이언트의 브라우저가 아니라 포트 80에서 수신하는 서버입니다.


"포트 80에서 수신"과 "포트 80에 연결"을 구분할 때주의해야합니다.

"애플리케이션은 때때로 HTTP를 사용하여 메시지를 전송합니다. 다른 포트를 사용하면 방화벽 문제가 발생할 수 있기 때문입니다."라는 말은 실제로 "애플리케이션이 때때로 포트 80으로 메시지를 전송한다"는 의미입니다.

서버는 포트 80에서 수신 대기하고 있으며 해당 포트에서 여러 연결을 허용 할 수 있습니다.


여기서 말하는 포트 80 은 서버 원격 포트이며 로컬 브라우저는 설정된 각 연결에 대해 높은 포트를 엽니 다.

각 연결에는 양쪽 끝에 포트 번호가 있으며 하나는 로컬 포트, 다른 하나는 원격 포트라고합니다.

방화벽은 사용자 컴퓨터에서 연결이 설정되었음을 알고 있기 때문에 브라우저의 상위 포트로 트래픽을 허용합니다.

참조 URL : https://stackoverflow.com/questions/2957757/how-can-an-application-use-port-80-http-without-conflicting-with-browsers

반응형