내가 알기로 이것은 클라이언트가 연결 요청을 할 때 발생합니다.
- 서버는 특정 포트 번호에 바인딩됩니다. 포트 번호는 항상 청취 프로세스에 바인딩됩니다. 서버 만이 들어오는 연결을 수신하고 있기 때문에 클라이언트 쪽에서 바인딩 할 필요가 없습니다.
- 서버는 해당 포트 번호에서 수신 대기 상태를 유지합니다.
- 클라이언트가
connect()
요청 을 보냅니다 . - 서버는를 사용하여 요청을 수락합니다
accept()
. 즉시 서버가 클라이언트 요청, 추가의 서버에 임의의 포트 번호 커널 할당 받아으로send()
하고receive()
, 서버에 동일한 포트 번호를 청취뿐만 아니라 보내는 데 사용할 수 없기 때문에, 이전 포트가 여전히를 새로운 연결 청취
이 모든 것을 감안할 때 서버는 클라이언트가 수신하는 포트를 어떻게 알 수 있습니까? 클라이언트가 소스 포트와 대상 포트가있는 TCP 세그먼트를 전송한다는 것을 알고 서버는 해당 세그먼트의 소스 포트를 대상 포트로 사용하지만 서버는 해당 포트에 대해 어떤 기능을 호출합니까? 그렇 accept()
습니까?