일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바
- 이진트리
- gitbash
- 자바기초
- 그래프
- nodeJS
- GIT
- bootstrap
- mongoose
- 포렌식
- 뷰
- 자바문제풀이
- 웹개발
- node.js
- 이진탐색트리
- Express
- 워게임추천
- node
- 포렌식워게임
- 웹해킹기초
- NavBar
- MongoDB
- 웹해킹
- CTF
- 웹기초
- materialize
- 워게임
- 써니나타스
- 자료구조
- wargame.kr
- Today
- Total
보안 전공생의 공부
주소창에 URL검색 시 발생하는 일련의 과정들 본문
클라이언트가 주소창에 www.naver.com을 입력하면 어떤 과정을 통해 네이버 홈페이지가 화면에 뜨게 되는 걸까 ?
1. www.naver.com의 IP주소 찾기
1) 로컬 DNS 캐시 검색
웹 브라우저는 로컬 DNS 캐시를 통해 www.naver.com에 해당하는 도메인네임을 찾고, 이에 매칭되는 IP주소를 반환한다.
2) DNS 서버에 요청
만약 DNS 캐시에 www.naver.com에 해당하는 도메인네임이 없다면, DNS서버에 해당 주소에 매칭되는 IP주소를 요청하여 반환받는다.
* DNS : 도메인네임과 IP주소를 매칭한 전화번호부 역할의 서버
DNS 캐시 : 전화번호부의 로컬 사본.
최근 방문한 기록을 토대로 도메인네임과 해당 IP주소를 캐싱함.
매번 DNS 서버에 요청하는 것보다 프로세스 속도를 높일 수 있음
2. 획득한 IP주소로 네이버 서버에 접속
웹 브라우저는 IP주소를 통해 인터넷상에서 네이버 서버(웹서버)의 위치를 찾아낸다.
(컴퓨터네트워크 수업때 들은 내용을 토대로 ,, 여러 라우터를 거쳐서, mac주소를 이용해서 등등)
그리고 TCP를 기반으로 하는 HTTP를 이용하여 웹브라우저와 웹서버가 통신(request, response)을 하게 된다.
웹 브라우저가 네이버 서버에 http://www.naver.com을 요청하면,
네이버 서버는 이에 해당하는 웹페이지를 응답한다.
클라이언트는 화면에 네이버 홈페이지를 출력한다(웹서버의 응답을 출력한 것).
이떄 DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터의 조작이 필요한 경우 WAS가 활용된다.
* 웹페이지는 정적 컨텐츠+동적컨텐츠를 함께 노출한다.
* 웹서버(web server) : 정적 컨텐츠(ex 변화하는 내용이없는 html 문서, css, imgae 등)를 처리함.
대표적은 웹 서버 : Nginx
WAS(Web Application Server) : 동적 컨텐츠를 처리함.(때문에 DB와 연결되어 필요한 데이터를 받음)
대표적인 WAS : Tomcat
WAS는 정적 컨텐츠도 처리할 수 있기 때문에 웹서버의 역할도 수행 가능하다.
하지만 정적 컨텐츠도 처리하게 되면 동적 컨텐츠의 처리가 지연되게 된다.
따라서 정적 컨텐츠는 웹서버가, 동적 컨텐츠는 WAS가 처리한다.
WAS는 여러 servlet을 담을 수 있는 servlet container라고 할 수 있다.
* servlet : 자바에서 만든 CGI
CGI(Common Gateway Interface) : 정보를 주고 받는 방법이나 규약이다.
사용자의 요청에 따른 각각의 처리를 servlet들이 수행하는데,
WAS는 받은 요청에 따라 적용되는 servlet을 routing해준다고 할 수 있다.
WAS에 servlet을 등록하는 것은 번거롭고 제한적이기 때문에
그냥 Spring MVC 하나를 등록하여 (하나의 servlet이라고 칠 수 있다)
그 안에서 요청에 대한 응답을 줄 수 있는 handler(서버의 application)들을 만든다.
handler(서버의 application)는 클라이언트(브라우저의 html)의 요청(http request)에 따라 응답(html 문서)를 만들어 돌려준다.
◆참조한 글, 더 자세한 설명에 적힌 글
https://aws.amazon.com/ko/route53/what-is-dns/
https://sehun-kim.github.io/sehun/spring-short-story/
https://velog.io/@khsi12345/client-and-server-communication
https://velog.io/@koseungbin/Web-Server-Web-Application-Server
https://helloworld-88.tistory.com/71
'WEB' 카테고리의 다른 글
SSR vs CSR (0) | 2021.08.17 |
---|