Web - Web internal operation
Web 이란?
- 팀 버너스리(Tim Berners-Lee)에 의해 1989년에 처음 제안되었고, 1990년대 초반에 발전하여 현재의 형태를 갖추었음.
- HTML 언어를 사용하여 작성된 하이퍼텍스트 문서를 “웹 페이지” 라고 함.
- 이러한 웹 페이지들 중 서로 관련된 내용으로 작성된 집합을 “웹 사이트” 라고 함.
- 하이퍼링크를 따라 다른 웹 페이지들로 이동하는걸 “웹 서핑” 이라고 하며, 검색하기 위해 사용하는 프로그램을 “웹 브라우저” 라고 함.
- 인터넷을 통하여 이러한 정보등을 전세계적으로 공유하는 공간을 “웹” 이라고 함.
- HTTP는 인터넷에서 제이터를 주고받기 위한, 웹 브라우저와 웹 서버간의 통신을 위한 프로토콜임. 보안 향상을 위해 HTTPS를 사용하기도 함.
- www.google.com 을 입력하고 Enter 를 누름
- 브라우저가 URL에 적힌 값을 파싱해서 HTTP Request Message를 만들고, OS에 전송 요청을 함.
- 이 때, Domain으로 요청을 보낼 수 없기 때문에 DNS Lookup을 수행함.
- 브라우저 캐시 → hosts 파일 → DNS Cache의 순서로 도메인에 매칭되는 ip를 찾음.
- 다 없으면 DNS 서버에서 도메인 정보를 가져옴.
- 얻은 IP 주소를 기반으로 웹 서버와의 TCP 연결 및 3-way handshake
- 웹 서버에게 HTTP 요청을 전송함. 이 때는 메서드와 함께 헤더, 바디 정보를 포함함. 필요한 경우 HTTPS를 사용하여 암호화 가능.
- 서버에서는 요청받은 내용을 처리하고, 응답을 보냄 ( 상태코드, 헤더, 바디 )
- TCP 연결 종료 및 4-way handshake
- 브라우저는 서버로부터 받은 HTTP 응답을 수신함.
- 수신한 컨텐츠를 렌더링하여 사용자에게 표시함.
Request 와 Response 에는 어떤 정보가 담기나?
- Request
- 메서드 ( Get, Post, Put, Patch, Delete 등 )
- 헤더 ( 컨텐츠 타입, 인증 정보 등 )
- 바디 ( 데이터 : JSON 이나 RequestDTO 객체, 파라메터 등 )
- Response
- 상태 코드 ( 200, 404, 500 등 )
- 헤더 ( 서버정보, 컨텐츠타입, 쿠키 등 )
- 바디 ( 응답 데이터 : ResponseDTO 객체나 JSON 등 )