전체 글
• HTTP 요청 메시지 Start-line에는 HTTP메서드, 요청 대상, HTTP버전을 기입한다. -HTTP 메서드 GET(리소스 조회), POST(요청 내역 처리), PUT(내용 교체), DELETE(삭제) 등이 있으며, 서버가 수행해야 할 동작이다. -요청 대상 absolute-path[?query](절대경로[?쿼리]) -> 절대경로는 "/"로 시작하는 경로이다. -HTTP버전 HTTP/1.1, HTTP/2, HTTP/3 같이 버전을 기입한다. • HTTP 응답 메시지 Start-line에는 HTTP버전, 상태코드, 이유 문구를 기입한다. • HTTP헤더 header-field = field-name ":" OWS field-value OWS (OWS: 띄어쓰기 허용) 헤더에는 HTTP 전송에 필..
• HTTP HTTP는 HyperText Transfer Protocol이다. 모든 것이 HTTP다 라는 말이 있을 정도로 HTTP는 만능이다. HTML, TEXT, IMAGE, JSON, XML (API) 등 거의 모든 형태의 데이터를 전송할 수 있고, 서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다. • HTTP 버전 HTTP/1.1을 가장 많이 사용하고, 가장 중요한 버전이다. TCP는 HTTP/1.1 & HTTP/2 기반이며, UDP는 HTTP/3 기반 프로토콜이다. 현재 HTTP/1.1을 주로 사용하고 점점 HTTP/2와 HTTP/3도 증가하고 있는 추세다. • Client - Server 구조(Request - Response 구조) 클라이언트는 서버에 요청을 보내고, 응답을 대기..
• URI Uniform: 리소스 식별하는 통일된 방식 Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음) Identifier: 다른 항목과 구분하는데 필요한 정보 URI는 Locator, Name 또는 둘 다 추가로 분류될 수 있다. • URL 위의 그림처럼 Scheme, 호스트명, PORT 번호, 패스, 쿼리 파라미터로 구성되어 있다. Scheme은 보통 프로토콜을 사용한다. HTTPS는 HTTP에 보안을 추가한 것이다. 그리고 원래 Host 앞에는 사용자 정보를 포함해서 인증하기 위해 Userinfo를 적어야 되는데 요즘 거의 사용하지 않는다. URL에 Host는 호스트명, 도메인명 또는 IP주소를 쓴다. HTTP는 80, HTTPS는 443 PORT 사용함. Path는 리소스의..
• 인터넷 통신 클라이언트 측에서 메시지를 인터넷 상에 흘려 보내면 노드에서 노드로 전해지는 게 반복되면서 서버에 도착함 • IP(Internet Protocol) 인터넷 통신 규약이며, 이 규약에 맞게 통신을 해야 함. 클라이언트나 서버나 각각 IP주소라는 게 부여가 되는데 이 주소를 가지고 데이터를 주고 받을 수 있다. 이 때 데이터를 주고 받는 통신의 단위는 패킷이다. *패킷: 출발지 IP, 도착지 IP, 전송 데이터, 기타 • IP 프로토콜의 한계 -비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 -비신뢰성: 중간에 패킷이 사라진다거나, 패킷이 순서대로 온다는 보장이 없음 -프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우에는 어떻게 처리를..
현재 실무에서는 이런 방식의 Spring MVC 구조를 이루고 있다. Dispatcher Servlet 이전까지의 FrontController와 같은 역할을 한다고 보면 된다. 클라이언트로부터의 요청을 앞단에서 받고, URI에 Mapping된 Handler를 조회함.(Handler는 쉽게 얘기해서 이전까지의 Controller라고 보면 된다.) Handler Mapping URI를 입력했을 때 실행되는 로직들을 Handler들이 하는데 원래는 Controller라고 불렀지만, 이제는 더 많은 것들을 Adapter 통해서 다룰 수 있기 때문에 Handler로 이름을 변경함. Mapping된 Handler에 맞는 Adapter를 조회해야 됨 Handler Adapter List (조회) Handler를 컨..
목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 1.JVM이란 무엇인가 자바의 바이트코드(.class파일)를 해석하고 실행하는 가상머신이다. # JVM Java 소스 코드는 javac 컴파일러를 거쳐 바이트 코드로 변환이 되는데 이걸 다시 OS가 이해할 수 있는 기계어로 컴파일을 해야된다. 이러한 과정들이 JVM을 통해서 이루어진다. 1. 자바 런타임 환경(JRE)에 들어 있는 클래스로더에 의해 바이트 코드가 JVM으로 적재되고, 2. JVM은 적재된 바이트 코드를 JIT 컴파일 방식으로 실행한다. (이 모든 게 J..
• RequestDispatcher & forward() RequestDispatcher는 클라이언트의 HTTP 요청을 forward()메서드를 이용해서 다른 서블릿이나 JSP로 이동할 수 있는 기능이다. 서버 내부에서 다시 호출이 발생한다. • Redirect와 Forward의 차이점 리다이렉트는 실제 클라이언트에 응답이 나갔다가, 클라이언트가 redirect 경로로 다시 요청한다.(총 2번의 HTTP 요청) 따라서 클라이언트가 인지할 수 있고, URL 경로도 실제로 변경된다. 반면에 포워드는 서버 내부에서 일어나는 호출이기 때문에 클라이언트가 전혀 인지할 수 없다.
