문제

내가 이해 한 바에 따르면, 각 HTTP 요청은 자체 TCP 연결을 사용합니다 (내가 틀린 경우 수정하십시오). 따라서 동일한 서버에 대한 두 가지 현재 연결이 있다고 가정 해 봅시다. 예를 들어, 클라이언트 측 JavaScript 코드는 XMLHTTPREQUEST 객체를 사용하여 두 개의 AJAX 게시물을 트리거하는 첫 번째 AJAX 게시물을 트리거합니다. 따라서 우리는 동일한 서버에 대한 두 가지 연결에 대해 이야기하고 있으며, 각각의 별도의 콜백 함수로 라우팅하기 위해 응답을 기다리고 있습니다.

TCP 패킷에는 소스와 대상 IP 및 포트가 포함되어 있지만이 연결에는 동일한 SRC 및 DEST IP 주소와 포트 80이 포함되지 않습니까? 패킷을 어떻게 차별화되고 적절하게 라우팅 할 수 있습니까? 각 연결마다 다른 패킷 시퀀스 번호와 관련이 있습니까?

도움이 되었습니까?

해결책

브라우저가 HTTP 서버에 새로운 연결을 생성하면 다른 소스 포트를 사용합니다.

예를 들어, 브라우저가 서버에 두 개의 연결을 생성하고 IP 주소가 60.12.34.56이라고 가정합니다. 첫 번째 연결은 소스 포트 60123에서 발생하고 두 번째 연결은 60127에서 시작될 수 있습니다. 이는 서버로 전송 된 각 패킷의 TCP 헤더에 포함됩니다. 서버가 각 연결에 응답하면 적절한 포트 (예 : 60123 또는 60127)를 사용하여 패킷이 올바른 지점으로 돌아갑니다.

이것에 대해 배우는 가장 좋은 방법 중 하나는 다운로드하는 것입니다. Wireshark 자신의 네트워크에서 트래픽을 관찰하십시오. 그것은 당신에게 이것을 훨씬 더 보여줄 것입니다.

또한 이는 네트워크 주소 변환 (NAT)이 라우터에서 어떻게 작동하는지에 대한 통찰력을 제공합니다. 많은 컴퓨터가 동일한 IP 주소를 공유 할 수 있으며 라우터는 다른 포트를 사용하라는 요청을 다시 작성하여 두 컴퓨터가 AOL 인스턴트 메신저와 같은 장소에 동시에 연결할 수 있도록합니다.

다른 팁

그들은 소스 포트로 구분됩니다.

별도의 TCP 연결을 생성하지 않는 각 HTTP 요청에 대한 주된 이유는 똑똑한, 우연히.

패킷 네트워크 통신의 소켓은 서버 IP, 서버 포트, 클라이언트 IP, 클라이언트 포트의 4 가지 요소의 조합으로 간주됩니다. 두 번째는 일반적으로 프로토콜에 고정되어 있습니다. 예를 들어 HTTP는 일반적으로 포트 80에서 듣지만 클라이언트 포트는 일반적으로 1024-65535 범위의 임의 숫자입니다. 운영 체제는 알려진 서버 프로토콜에 해당 포트를 사용할 수 있기 때문입니다 (예 : FTP의 경우 21, SSH의 경우 22 등). 동일한 네트워크 장치는 동일한 클라이언트 포트를 사용하여 다른 서버에도 두 개의 다른 연결을 열 수 없으며 두 개의 다른 클라이언트가 동일한 포트를 사용하는 경우 서버는 IP 주소로 구별 할 수 있습니다. 포트가 시스템에서 연결을 듣거나 연결을 설정하기 위해 사용되는 경우 다른 어떤 것에도 사용할 수 없습니다. 그렇기 때문에 운영 체제가 네트워크 카드로 수신 한 올바른 프로세스로 패킷을 파견 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top