브라우저에 googlecom 요청을 보내면 발생하는 일련의 과정 (A to Z)

브라우저에 googlecom 요청을 보내면 발생하는 일련의 과정 (A to Z)

맨 먼저 데스크탑을 켜게 되면 자기 자신의 IP를 모른다. 그렇기 때문에 자기 자신의 IP를 파악해야 합니다. 이 과정을 DHCP라고 합니다. DHCP를 한 번 해보자. 1. DHCP discover 부착되어 있는 호스트들에게 IP를 달라고 요청을 합니다. 2. DHCP offer 호스트들 중 DHCP 서버인 호스트는 이 요청을 보고 DHCP offer를 보내게 됩니다. 3. DHCP request 내 컴퓨터는 offer를 보고 수락해 DHCP request를 보내게 됩니다.

4. DHCP ACK DHCP 서버가 마지막으로 DHCP request에 대한 DHCP ACK를 보내주면 내 컴퓨터는 그 IP를 사용할 수 있게 됩니다.


OS X에서 KeyDown NSEvent가 애플리케이션으로 전달
OS X에서 KeyDown NSEvent가 애플리케이션으로 전달


OS X에서 KeyDown NSEvent가 애플리케이션으로 전달

인터럽트 신호는 IO Kit kext 타자기 드라이버에 인터럽트 이벤트를 발생시킵니다. 이 드라이버는 해당신호를 OS X의 WindowServer 프로세스로 전달되는 키코드로 변환합니다. 그 결과,WindowServer는 적절한 상태e.g. active, listening 등의 애플리케이션에 이벤트 큐에 있는 Mach의 포트로 이벤트를 전달합니다. 이제 machipcdispatch 함수를 호출할 수 있는 적절한 권한을 가진 스레드는 쪽지를 읽을 수 있습니다.

해당 과정은 NSApplication 이벤트 루프에 의해 NSEventType 의 KeyDownNSEvent를 통해 처리됩니다.

패킷이 유실되는 경우
패킷이 유실되는 경우

패킷이 유실되는 경우

때때로, 네트워크 혼잡이나 하드웨어 연결정 불안정성 등으로 인해 TLS 패킷은 목표지점에 도착하기 전에 유실되기도 합니다. 이럴 경우를 위해 전송자는 어떠한 방식으로 대처해야할지 계획을 정해둡니다. 이런 계획을 위한 알고리즘은 이라고 불립니다. 이는 전송자마다. 달라질 있을 수 있었으나 최신 OS를 사용하는 경우 을 사용하고 이전의 OS는 를 사용하는 것이 일반적입니다. 클라이언트는 를 MSS를 기반으로 설정합니다. 각 패킷의 ACK마다, window를 에 도달할 때까지 2배씩 증가시킵니다.

몇몇 구현체의 경우, 해당 한계는 동적일 수 있습니다. slow-start threshold에 도달한 이후에는 패킷의 ACK마다. 조금씩 늘려나갑니다. 패킷이 유실되기 시작하면 window는 다른 패킷이 ACK 될 때까지 지수적으로 감소시킵니다.

HSTS 확인
HSTS 확인

HSTS 확인

브라우저는 캐싱된 HSTS HTTP Strict Transport Security 를 확인합니다. HSTS는 HTTPS 연결만 자유롭게하는 주소의 목록을 나타냅니다.

해당 도메인이 HSTS에 있는 경우, 브라우저는 요청을 HTTP 대신 HTTPS로 보내게 됩니다. 그렇지 않은 경우, 최초의 요청은 HTTP 프로토콜로 요청이 전송됩니다. (웹사이트가 HSTS 목록에 없더라도 여전히 HSTS 정책을 사용할 수 있습니다.

유저가 보내는 최초의 HTTP 요청은 HTTPS를 통해 보낼 경우에만 응답을 보내도록 하는 것처럼 할 수 있습니다. 하지만 최초의 요청만 HTTPS로 받게 처리하는 것은 유저를 에 취약하게 만들 수 있으므로 대부분의 현대 웹 브라우저에서는 HSTS를 캐싱하고 있습니다.

HTTP 서버의 요청 처리

HTTPD HTTP 데몬 서버가 서버 사이드의 요청응답을 처리합니다. 보편적인 HTTPD 서버로는 리눅스에서 사용되는 Apache, nginx와 윈도우에서 사용되는 IIS가 있습니다. HTTPD HTTP 데몬를 통해 요청을 받습니다. 서버는 요청을 다음 파라미터를 기준으로 분리합니다

HTTP 요청 메소드 GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE. 주소창에 URL을 직접 입력하였다면 GET 요청일 것입니다.

렌더링 후처리와 사용자에 의해 유도된 동작

렌더링이 끝나고나서, 브라우저는 JS 코드를 이용하여 Google Doodle animation과 같은 타이밍 메커니즘을 실행하기도 하고 유저와의 상호작용검색창을 통해 쿼리를 부탁하고 단어에 대한 제안을 받는 등하는 결과를 결과를 내놓는다.

Flash나 자바와 같은 플러그인이 실행되기도 하지만 현재 기준으로 구글 홈페이지에서는 실행되지 않습니다. 스크립트는 추가적인 네트워크 작업이나 페이지를 수정하고 레이아웃을 변화하는 등의 또 다시 요청을 처음부터 실행하게 하는 결과로 이어질 수 있어요.

웹사이트에 접속하기 위해 생기는 복잡성에 대하여 아는 것은 깜짝 놀랄만한 일입니다. 이 기사를 통해 브라우저에서 입력하고 Enter 키를 누를 때 발생하는 일에 대하여 조금이라도 통찰력을 얻었기를 바랍니다. 읽어주셔서 감사합니다.

자주 묻는 질문

OS X에서 KeyDown NSEvent가 애플리케이션으로

인터럽트 신호는 IO Kit kext 타자기 드라이버에 인터럽트 이벤트를 발생시킵니다. 좀 더 자세한 사항은 본문을 참고해 주세요.

패킷이 유실되는 경우

때때로 네트워크 혼잡이나 하드웨어 연결정 불안정성 등으로 인해 TLS 패킷은 목표지점에 도착하기 전에 유실되기도 합니다. 궁금한 내용은 본문을 참고하시기 바랍니다.

HSTS 확인

브라우저는 캐싱된 HSTS HTTP Strict Transport Security 를 확인합니다. 자세한 내용은 본문을 참고하시기 바랍니다.

Leave a Comment