티스토리 뷰

우리가 브라우저에서 요청(Request)을 하면 서버까지 어떻게 전달이 될까? IT직군에 종사하시는 분들은 이러한 궁금증은 한 번은 가져봤을 것이다. 언젠가 정리해야지 하며 미루다 오늘 정리해 본다. 전 분야에 전문가가 아니다 보니 놓치거나 잘못된 용어가 있을 수 있으니 그런 부분은 답글로 회신 부탁드린다.

가정 1. 로그인

대부분의 사이트는 로그인 과정을 거친다. 사용자가 브라우저(크롬, IE)를 통해 사이트를 호출하고 사용자 정보를 입력하면 로그인이 되는 과정을 거칠때 데이터가 어떻게 여행하는 지 알아보자.

1. 사용자가 브라우저(크롬, IE)를 이용하여 사이트를 호출하고 자신의 ID/PW를 입력하면 "내 아이디에 맞는 패스워드를 검증하고 맞으면 로그인 해줘!!"라는 요청이 담긴 브라우저 세션이라는 것이 생긴다. 이러한 세션(ID/PW가 있는)은 패킷이라는 통에 담기게 된다.

2. 담기게 된 패킷은  사용자 PC->공유기->전용회선->DNS(Domain Name Service)으로 도달하게 된다. DNS는 이 패킷안에 있는 서버 정보를 찾아 해당 서버가 있는 곳으로 찾아간다. 예를 들면 "http://naver.com"이라고 치면 naver.com과 매칭되어 있는 IP(22x.x.x.x)로 찾아가게끔 도와준다. 

3. DNS를 거쳐 가야 할 주소를 찾은 들어온 패킷은 서버로 바로 들어가지 않는다. 해킹을 방지하고자 여러가지 보안 장비를 거치게 되는데, 네트워크 아키텍처에 따라 다르겠지만, DDOS 방지 장비, SSL가시성 장비, IPS(침입차단 장비), WAF(웹방화벽)를 거쳐 패킷의 정보나 호출이 정당한지 확인하며 암복호화를 하기도 한다. (각 장비에 기능설명은 생략)

4. 보안장비의 검증을 마친 패킷은 드디어 Web서버로 접속이 된다. DNS에서 매칭이 되어 있는 건 이러한 Web서버의 IP이다. Packet은 Web서버 입장에서는 Queue로 받아들인다. 로그인 페이지는 사용자 정보가 있는 DB를 다녀와야 한다. 그래서 Web서버(apache나 WebtoB)는 WAS로 요청을 넘긴다.

5. WAS는 이러한 Web서버의 요청을 thread로 받아들인다. 여기서 WAS서버의 로그인 처리를 하는 페이지를 읽게 되고 트랜잭션 요청을 하게 된다.(SSO가 있으면 SSO서버에 내 로그인 정보가 담겨져 있는 SSO 세션도 기록한다. )

6. DB는 트랜잭션으로 받은 ID가 있는지 확인하고 그 아이디에 해당되는 패스워드를 WAS로 보내준다. 이와중에 DB암호화, DB접근제어등의 DB관련 보안장비를 거친다. 자 이제 반환점이다.  트랜잭션을 통해 패스워드를 받은 WAS는 로직을 통해 요청 패킷에 있던 패스워드와 DB로 부터 받은 패스워드를 비교하여 일치하면 로그인해도 좋다는 사인을 WAS에 보낸다.

7. WAS에서는 OK 신호를 받았으므로 로그인 성공시 반환되는 페이지를 보여준다. 이러한 응답 페이지 주소는 다시 큐로 Web으로 변환된다. 보통 http코드 200을 주면서 Packet에 주섬주섬 정보를 담는다.

8. 응답 페이지에 대해서 보안 장비들은 나름 관대하다..이걸 Outbound 정책이라고 하는데, 암튼 이러한 장비들을 거치면서 응답 packet은 요청이 들어온 네트워크를 역순으로 타고 사용자 PC로 간다.

9. 사용자 PC로 온 패킷은 사용자 브라우저에 응답 페이지 주소와 http코드 등을 풀어놓고 사용자는 응답 페이지를 볼 수 있다.  

 

이 놀라운 과정이 짧게는 3초~10초내 처리되고 있으니 이 얼마나 놀라운 시대에 살고 있는지!! 

728x90
반응형
댓글