
🎙 https://www.google.com 에 접속할 때 일어나는 일을 설명해주세요!
라는 질문을 받았을 때 오? 하는 면접관님의 반응 얻는 방법에 대한 포스팅입니다.
[1] 브라우저( Web Client )는 URL을 받아서 뭘 하는가?

사용자가 브라우저 주소창에 접속하고자 하는 서버의 URL을 입력한다.
웹 브라우저에서 URL의 구조를 분석한다.
( 브라우저 프로세스의 URL을 해독하는 부분부터 브라우저의 동작이 시작됨 )

분석한 구조를 기반으로 HTTP Request를 작성한다.

브라우저는 HTTP Request를 생성했지만, 이를 직접적으로 네트워크에 송출하는 기능을 가지지는 않는다. OS에게 해당 메시지를 google 웹 서버에 보내는 작업을 의뢰한다.
이 때, 네트워크 애플리케이션은
소켓 라이브러리의 기능을 사용해 프로토콜 스택에 데이터 송수신을 요청한다.

public Socket(String host, int port) throws UnknownHostException, IOException {
this(host != null ? new InetSocketAddress(host, port) :
new InetSocketAddress(InetAddress.getByName(null), port),
(SocketAddress) null, true);
}
...
public InetSocketAddress(String hostname, int port) {
checkHost(hostname);
InetAddress addr = null;
String host = null;
try {
addr = InetAddress.getByName(hostname);
} catch(UnknownHostException e) {
host = hostname;
}
holder = new InetSocketAddressHolder(host, addr, checkPort(port));
}
...
public static InetAddress getByName(String host) throws UnknownHostException {
return getAllByName(host)[0];
}
...
https://wonsjung.tistory.com/614
PC ( Windows ) - 공유기/NAT(R) - ISP ( Internet ) - Naver
PC - 공유기 - DNS
URL + URI
- 위치 지정자 vs 식별자
윈도우 운영체제 기준으로,
URL ( 도메인 네임 ) - www.naver.com / naver.com 도메인에 속해있는 이름 www
IP 주소를 알아야 함. => DNS에게 질의를 하게 되어있다.
DNS Hierarchy ( 분산형 DB 구조 )
DDNS ( Dynamic DNS )
1) DNS 서버에 IP 주소 질의
2) 그 이전에, 컴퓨터마다 hosts파일을 뒤져본다.
3) DNS 캐시 결과를 본다. ( expire )
4) 만약, hosts 파일에 없다면 질의를 한다. -> 192.168.0.1 ( 공유기 ) ->
PC에서 서버로 TCP 연결을 한다. ( HTTP 통신을 한다. -> 근데 HTTP 통신은 TCP 연결을 기반으로 한다 )
TCP 연결 Success -> HTTP Request (6)
-> HTTP Response (7) // 신입사원이 할 말 수준.
GSLB ( ? )
-> 구현하는 방법 : CDN 서비스 ( Content Delivery Network Service )
CDN : akamai, kt
CDN을 왜 쓰나요?
GSLB를 구현하는데,
DNS를 통한 구현
System ( DNS ) / Health Check
DNS -> IP 주소를 알려줌.
Akamai CDN
Health Check?
로그인 상태에서 다운.. 부산으로 접속 ( 로그인 세션 유지? )
-> 만약, 그게 되게 하려면 서버를 어떻게 아키텍처를 구성해야하는가?
Fail Over를 어떻게 구현? 부하 분산? 장애 대응 어떻게 할 것?
DR = Disaster Response ( 재대응 )
BE 개발자.. 세션 유지 ( FailOver 났을 때, 어떻게 극복할 것인가? )
DNS를 속이는 공격 ( DNS Spoofing )
GSLB, CDN 을 이야기..
DNS와 DDNS
GSLB ( 부하분산 방법론 )
CDN ( Content Delivery Network )
Akamai
Docker + K8S
( 무중단 배포 해봤어? )
-> 서비스가 중지되지 않고, 버전 업
( 잘 활용시, 장애 대응도 된다 )
DevOps는 무엇인가?
Health Check -> 장애 대응 -> 무중단 배포
유저 모드 - 커널 모드 - 하드웨어
소켓, 패킷
이 질문으로부터 파생될 수 있는 질문들
참고할만한 블로그
https://wonsjung.tistory.com/614