• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

TCP 3-way Handshake 에서 2번째 단계인 서버측에서 바인딩시 왜 새로운 포트를 만들어서 통신 할려고 할까요?

22.01.30 01:26 작성 조회수 124

0

TCP 3-way Handshake 에서 2번째 단계인 서버측에서 바인딩시 왜 새로운 포트를 만들어서 통신 할려고 할까요?
 
영상에서 보면 9000번 서버측 고정 포트로 새로운 포트 안열고 이 9000번 포트로 통신 하면 되는게 아닌가요? 왜 임의의 포트 번호인 9001번 포트를 열어줘서 통신 하게 만드는지....
 
첫번째 단계인 client도 그렇지만
 
왜 새로운 포트를 만들어서 구지? 통신 할려고 하는지 이해가 안갑니다.
 
어떻게 보면 100명 client 가 동시에 server측에 통신 한다고 하면
 
즉 100개의 새로운 포트를 server 측에 2단계에서 만들어지는 건데요.
 
어떻게 보면 자원 소모가 되는게 아닌가요?

답변 1

답변을 작성해보세요.

0

1:1통신이라면 서버에서 하나의 소켓만으로도 통신이 가능하지만 여러명하고 통신을 할려면서버에서 1개의 소켓으로 통신을 한다면 대기시간이 엄청 길어질 수 있거나 불가능 합니다.

만약 나 혼자 여러 명하고 일처리를 한다고 하면 한사람의 요청을 받아서 처리하고 있을때 다른 사람들은 기다리고 있다고 생각하시면 되겠죠. 이걸 개선 한다면 나는 요청을 받기만하고(서버소켓을 만들어서:요청을 받는 소켓) 다른 사람에게 (소켓을 만들어서:통신용소켓)처리를 맡기는 것이 훨씬 더 일처리가 쉬워지는 원리라고 생각하시면 될듯합니다.

여기서 일을 처리하는 사람들을 스레드(경량프로세서)라고 부릅니다. 다시말하면 아르바이트 생들 이라고 이해하셔도 좋을듯합니다. 아르바이트생을(스레드를) 사용하면 대기 시간이 없이 바로 요청에 대해 응답을 해줄 수가 있습니다. 서버는 접속용 소켓 한개, 통신용 소켓 여러개를 만들어서 각 소켓마다 스레드가 요청처리를 하고 소켓을 닫아주면 자원 소모도 그렇게 많지 않습니다. 물론 수 많은 클라이언트가 몰린다면 요청을 분산해서 처리는 해야겠죠?

이해가 되셨을까요?