programing

TCP 연결이 열린 후 다른 포트로 이동합니까?

css3 2023. 11. 1. 22:30

TCP 연결이 열린 후 다른 포트로 이동합니까?

TCP 소켓 서버가 포트 28081에서 들어오는 연결을 수신한 다음 연결을 수락하고 데이터 수신을 시작하는 경우.데이터가 들어오는 포트가 아직 28081인가요 아니면 포트가 변경되나요?

예를 들어 아래 의사 코드에서 들어오는 데이터는 어떤 포트로 오는가?아직 28081인가요 아니면 OS에서 새 포트를 할당합니까?

bind
listen (on port 28081)

while 1
  fd = accept
  fork
  if child process incoming data 

TCP 연결은 2개로 고유하게 식별됩니다.(IP address, TCP port)튜플(각 엔드포인트마다 하나씩).따라서 정의에 따라 연결의 포트나 IP 주소를 이동할 수 없고 다른 연결을 열 수 있습니다.

서버가 포트 28081에 바인딩되는 경우 허용된 모든 연결은 서버 측에 이 포트를 갖지만 클라이언트 측에는 포트 번호가 다를 가능성이 높습니다.

예를 들어, 동일한 클라이언트 컴퓨터의 두 프로세스가 동일한 서버에 연결될 경우,IP address그리고.TCP port서버측은 두 연결에 대해 동일할 것입니다.그러나 클라이언트 측에서는 두 개의 서로 다른 포트 번호를 사용하여 양쪽의 운영 체제가 수신된 TCP 패킷을 어떤 프로세스 및 파일 설명자에 할당해야 하는지 고유하게 식별할 수 있습니다.

예, 일부 프로토콜(FTP)이 다른 포트에서 두 번째 연결을 열 수 있지만 해당 포트에 남아 있습니다.포트를 하나만 연결할 수 있는 USB 포트와 같이 물리적 경로나 플러그로 생각하지 마십시오.하지만 요청 중인 서비스에 대한 식별 정보로 생각해야 합니다.

그러나 새 소켓 연결은 해당 연결에 대한 읽기/쓰기를 처리하는 다른 스레드로 전달되는 경우가 많습니다.

서버와 클라이언트 IP 주소 및 포트에 의해 연결이 식별되므로 하나의 포트에 둘 이상의 클라이언트가 연결될 수 있습니다.따라서 한 클라이언트의 연결을 수락한다고 해서 다른 클라이언트의 연결이 차단되는 것은 아닙니다.다른 클라이언트 포트를 사용하여 동일한 클라이언트에서 다른 시간을 연결할 수도 있습니다.

언급URL : https://stackoverflow.com/questions/3638953/do-tcp-connections-get-moved-to-another-port-after-they-are-opened