https://github.com/SantonyChoi/what-happens-when-KR 글을 따라써보며 머리속으로 정리해보는 연습장입니다.
WM_KETDONW
메시지가 앱으로 전달되어요KeyDow
NSEvent가 앱으로 전달되어요이번 절에서 키보드의 물리적인 동작과 운영체에의 인터럽트에 대해 다룸
하지만 여기서 모드 동작을 설명하지 않음
우선 "g"키를 누르면 해당 이벤트가 브라우저에 전달
모든 자동완성 기능이 활성화됨
당신이 사용하는 브라우저의 알고리즘과 당신이 개인/익명 모드를 사용하는지에 따라 다양한 제안이 URL 창 아래에 드랍박스로 나타남
대부분의 알고리즘은 결과를 검색기록이나 즐겨찾기에 기반해 정렬
당신인 "google.com"을 입력할 것이기 때문에 상관없지만,
수 많은 코드가 당신이 입려을 다 마치기 전에 동작하며, 매 키를 누를 때마다 제안이 선별됩니다.
아마 당신인 다 치기도 전에 "google.com"을 제안할 것
몰랐던점
- g키를 누르자마다 이벤트가 브라우저에 전달되고, 자동완성기능이 활성화된다.
- 대부분의 알고리즘은 결과를 검색기록이나 즐겨찾기에 기반에 정렬한다.
- 매 키를 누를 때 마다 제안이 "선별"된다.
명확히 설명드리기 위해, 키보드의 엔터키가 끝까지 눌러졌다고 해봅니다.
여기서 엔터키가 할당된 전기회로가
(직접적으로든 정전식으로든)닫힙니다.갑분 전기회로..
이것이 적은 양의 전류를 키보드에서부터 각 키 스위치 상태를 확인하는 논리 회로 소자에 흐르도록 하고, 빠르고 간헐적인 스위치 차단으로 인한 전기적 잡음을 디바운싱하며,
신호를 키코드 정수 이경우에는 13으로 변환해줍니다.
키보드 컨트롤러는 곧, 키코드를 인코딩해 컴퓨터로 전달합니다.
이것이 지금은 대부분 유니버셜시리얼 버스(USB)혹은 블루투스 연결을 통해 이루어지며, 과거에는 PS/2 혹은 ADB 연결에서 통용되던 방법입니다.
브라우저 캐시(chrome://net-internals/#dns) -> gethostbyname(hosts파일) -> DNS서버(로컬라우터, 인터넷 공급자의 캐시 DNS 서버)
그런데 만약, DNS서버가 같은 서브넷에 존재?
-> 네트워크 라이브러리는 기본 게이트웨이 IP에 대해ARP 프로세스
실행
APR(주소 결정 프로토콜, Address Resolution Protocol)
브로드캐스트를 보내기 위해서는 네트워크 스택 라이브러리가 검색할 목적지 IP의 주소를 알아야합니다.
또 ARP 브로드캐스트를 보내는 데 사용하는 인터페이스의 MAC 주소 역시 알아야합니다.
ARP 브로드캐스트
(를 하고싶음)네트워크 스택 라이브러리
'가'검색할 목적기 IP주소
'를'
알아야함AND
- ARP 브로드캐스트를 보내는데 사용하는
인터페이스의 MAC주소
'도'
알아야함
가장 먼저, ARP캐시가 목저기 IP의 ARP 항목을 가지고 있는지 점검합니다.
만약 캐시에 있다면, 라이브러리 함수는 다음의 형태로 결과를 리턴합니다.
: 목적지 IP = MAC
항목기 ARP캐시에 없다면,
ARP Request::
Sender MAC: interface:mac:address:here
Sender IP: interface.ip.goes.here
Target MAC: FF:FF:FF:FF:FF:FF (Broadcast)
Target IP: target.ip.goes.here
컴퓨터와 라우터 사이에 어떤 하드웨어가 있는지에 따라
직접 연결시:
허브:
스위치: