서버 프로세스(웹 서버)는 TCP 연결을 위해 사용하는 웰컴 소켓을 가진다.
클라이언트에서 서버로 목적지 IP, 목적지 포트(80)로 TCP 연결 요청을 보내면 트랜스포트 계층에서 연결 작업(3방향 핸드셰이크)을 처리한 뒤
정상적으로 연결이 되면 [출발지 IP/출발지 포트/목적지 IP/목적지 포트]를 식별자로 하는 별도 쓰레드에서 동작하는 연결 소켓을 생성한다.
이제부터 클라이언트가 서버로 보내는 메시지는 저 4개 식별자에 해당하는 연결 소켓으로 역다중화 된다.
이거 제대로 이해한거 맞음?
소켓 하나당 별도 스레드 하나 할당하면 컴퓨터 터지겠다
하향식 177페이지 에서는 새로운 연결 소켓과 함께 새로운 스레드를 생성한다고 나와있었는데 톰캣이 실제로 어떻게 동작하는지 검색해보니까 내가 말한 방식은 BIO 커넥터의 동작 방식인데 정확히는 소켓에 쓰레드가 할당되는게 아니라 싱글스레드로 동작하는 커넥터에서 소켓을 할당하고 소켓으로 들어온 처리를 스레드풀에서 스레드 하나를 할당해 요청을 처리하는 방식이네
싱글스레드에서 소켓이 어떻게 여러개 존재할 수 있는지는 내 생각인데 각 소켓의 파일 디스크립터가 하나의 스레드에서 여러개 존재할 수 있는것 같은데 더 조사 해보고 파일시스템이랑 톰캣 공부를 추가적으로 해야할듯
톰캣은 기본적으로 thread per request이기 때문에 소켓 내용보단 톰캣의 기술적 특징이라고 생각하면 댐. 지금 내용이랑 관련 없음 두번째 댓글은 소켓은 스레드에 종속되지 않은 대상이라는 것에서부터 이해해야할듯 올리브영 기술블로그 C10K 검색하면 그거 읽어보면 궁금증은 어느정도 해결될 듯? 더 궁금하면 select, poll, epoll 방식 공부하면 댐. 여기 부분 공부하면 큰 도움 될 거임
오 감사
https://gall.dcinside.com/mgallery/board/view/?id=backend&no=655&s_type=search_subject_memo&s_keyword=TCP&page=1
작년에
주딱이 쓴 글이 있었네