myway00 / Implement-Tomcat-By-Myself

스프링 부트 내부의 톰캣이 어떤 동작을 하는지 호기심을 갖고 톰캣을 간단히 구현한 레포지토리입니다.
0 stars 0 forks source link

Tomcat - java.net.Socket 탐구하기 #4

Open myway00 opened 1 year ago

myway00 commented 1 year ago

image

톰캣의 소켓 ?

소켓이란 프로세스간의 통신에 사용되는 양쪽 끝단을 의미한다.

image 출처

myway00 commented 1 year ago

Socket 의 흐름

image

서버

myway00 commented 1 year ago

총 정리

클라이언트 소켓(Client Socket)

  1. 처음 소켓(Socket)을 [1]생성(create)한 다음,
  2. 서버 측에 [2]연결(connect)을 요청
  3. 서버 소켓에서 연결이 받아들여지면 데이터를 [3]송수신(send/recv)
  4. 모든 처리가 완료되면 소켓(Socket)을 [4]닫습니다(close).

서버 소켓(Server Socket)

  1. 첫 번째 단계는 소켓(Socket)을 [1]생성(create)
  2. 두 번째 작업은, 서버가 사용할 IP 주소와 포트 번호를 생성한 소켓에 [2]결합(bind)
  3. 그런 다음 클라이언트로부터 연결 요청이 수신되는지 [3]주시(listen)
  4. 요청이 수신되면 요청을 [4]받아들여(accept) 데이터 통신을 위한 소켓 생성
  5. 일단 새로운 소켓을 통해 연결이 수립(ESTABLISHED)되면,
  6. 클라이언트와 마찬가지로 데이터를 [5]송수신(send/recv)할 수 있습니다.
  7. 마지막으로 데이터 송수신이 완료되면, 소켓(Socket)을 [6]닫습니다(close).
myway00 commented 1 year ago

Server Socket vs Socket

  • Server Socket : 클라이언트의 연결 요청을 수신
  • Socket : accept() 후 클라이언트와 서버의 소켓 통신 수행 (실질적인 데이터 송수신)