주소창에 www.google.com을 치면 일어나는 일
Browser에서 Google.com을 검색하면 무슨 일이 발생하나요?
사용자가 브라우저에 도메인 네임(www.google.com)을 입력한다.
사용자가 입력한 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색하고, DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다.
chrome://net-internals/#dns
)/etc/hosts
)/etc/resolv.conf
)
페이지 URL 정보와 전달받은 IP 주소는 HTTP(HTTPS) 프로토콜을 사용하여 HTTP 요청 메시지를 생성하고, 이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송된다.
HTTP : TCP 3 Way-Handshake
HTTPS : TCP 3 Way-Handshake + TLS
0~28ms : TCP socket 생성 - TLS는 TCP 통신으로만 전송 되기 때문에 일단 TCP socket이 생성 돼야 한다.
56ms : TCP 연결을 통해 클라이언트는 실행 중인 TLS protocol의 버전, 사용가능한 암호 세트, 사용할 수 있는 TLS 옵션 목록 등을 평문으로 보낸다.
84ms : 서버는 통신할 때 사용 할 TLS의 버전을 선택하고, 클라이언트가 제공한 목록에서 암호 조합을 결정하고 인증서를 첨부해서 클라이언트에 보낸다. 선택적으로 서버는 다른 TLS 확장에 대한 클라이언트 인증서 및 매개 변수에 대해 요청을 보낼 수도 있다.
112ms : 양측이 공통된 버전과 암호를 협살 할 수 있고, 클라이언트가 서버에서 제공한 인증서에 만족하면, 클라이언트는 RSA 또는 Diffie-hellman 키 교환을 시작한다. 이 교환은 이어지는 세션에서 사용할 대칭키를 설정한다.
140ms : 서버는 클라이언트가 전송한 키 교환 매개변수를 처리하고 MAC address을 확인하여 메시지 무결성을 검사하고 암호화 된 Finished message를 클라이언트에 전송한다.
168ms : 클라이언트를 협상 된 대칭키를 사용해 message 암호를 해독하고 MAC address를 확인해서 모두 정상이면 터널이 설정되고 통신을 시작한다.
이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환되어 웹 페이지 URL 정보에 해당하는 데이터를 검색한다.
Client Request
keep-alive
: response 후 바로 연결 종료하는 것이 아니라 여러 리소스를 한 번에 받기 위해 TCP/IP 소켓을 일정시간 열어둠.
검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성하고 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다.
Server Response
도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환되어 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 된다.