브라우저에 url 입력하면 무슨일이 발생할까....?

총 7단계가 있다 ! ! !

step1 url을 해석합니다

scheme://<user>:<password>@<host>:<post>/<url-path>

step2 DNS를 조회합니다

  • Domain Name System
    • DNS는 도메인과 IP주소를 서로 변환해준다.
    • DNS로 요청을 보내기 전에 브라우저 캐시와 hosts 파일을 참조한다.
    • DNS는 보통 통신사(ISP)에서 제공하는것을 사용한다.
    • DNS를 운영하는 서버를 보통 Name Server라고 부른다.
    • 도메인은 present.do에 해당하고 나머지 서브도메인은 do는 전부 host라 부른다.

step3 해당 IP가 존재하는 서버로 이동합니다.

  • 네트워크 장비 라우터를 통해 이동한다.
  • 동적 라우팅을 통해 이동한다.

step4 ARP를 이용하여 MAC 주소 변환을 합니다.

  • Address Resolution Protocol
  • 논리주소인 IP주소를 물리 주소인 MAC 주소로 변환하는 프로토콜
  • 실제 통신을 위해 변하지 않는 고유한 MAC 주소가 필요하다.
  • 네트워크 내에 ARP를 Broadcasting하면 해당 IP주소를 가지고 있는 기기가 MAC 주소를 반환한다.

step4.1 IP주소와 MAC 주소

  • IP는 논리적인 주소
  • MAC은 물리적인 주소
  • 기계의 실제 위치를 알기 위해서 MAC주소가 필요하다.

그러면 Why? 왜 논리적 주소와 물리적 주소로 나눈걸까?

ex) 서울 종로구 사직로 161
서울 종로구 세종로 1-91 이것은 논리적 주소
북위 37 34'43" 동경 126 58'38"(37.578611, 126.977222)는 물리적인 주소
택배와 같은 경우 먼저 논리적인 주소를 보면서 좁혀나간다.

step5 TCP 통신을 통해 Socket을 열어야합니다.

  • 네트워크를 통해 해당 기기로 패킷을 전달한다.(실제 socket을 열어서 허락 받아야 데이터를 전달할수있다)
  • 3 way handshake로 연결을 요청한다.
  • 요청이 수락되면 기기는 패킷을 받아 처리한다.(데이터를 서버에 전달하게 된다)

step6 서버는 응답을 반환합니다.

  • HTTP프로토콜로 들어온 패킷을 읽고 처리한다. (데이터를 받은 서버는 데이터를 읽고 요청에 따라 처리한다)
  • 요청에 따른 적절한 응답 값을 반환하다.

step7 브라우저는 렌더링합니다.

  • 브라우저는 받은 HTML을 읽어 DOM Tree를 구축한다.
  • 만들어진 Dom Tree를 기반으로 화면을 그린다.
  • 스크립트가 있다면 스크립트를 실행한다.

실제로 더 알아야할 것들

  • OSI 7계층
  • Routing Table
  • Subnet mask
  • TCP Socket Stream

위에는 꼭 시간 날 때 정리를 합시다 ! !


컴퓨터가 시간을 표현하는 방법

  • 하드웨어의 시스템 클럭을 이용한다.
  • 특정 시각을 기준으로 시스템 클럭의 틱을 세는 것으로 구현된다.
  • 이를 시스템 시간이라 부른다.
  • 시스템 시간을 값으로 표현한 것을 타임스탬프라고 부른다.
  • 타임스탬프는 운영체제마다 기준 시간과 단위가 다를 수 있다.
  • 유닉스 계열 운영체제에서 시간을 표시하는 방법을 Unix Time이라 부른다.

함수형 프로그래밍

객체지향 - 객체간 통신하며 프로그램이 동작한다.

함수형 - 데이터를 함수를 통해 새로운 데이터로 만드는 데이터 파이프라인의 형태로 동작한다.

함수형의 장점

  • 함수 단위로 나뉘어 재사용성이 높다.
  • 불변성을 지향하기에 예측이 쉽고 사이드 이펙트 문제를 방지한다.

함수형의 단점

  • 상태가 없기에 변수 조작이 안된다.
  • 함수를 잘게 쪼개야하기에 더 복잡할 수 있다.
  • 많은 숙련도를 요구한다.

명령형 프로그래밍 - 문제를 어떻게 해결하는지 컴퓨터에게 명령

선언형 프로그래밍 - 무엇을 해결해야 할지에 더 집중

결론 > JS는 멀티 패러다임이 가능하므로 객체지향 및 함수형을 혼용해서 쓰자!


객체지향과 프로토타입

객체는 현실에 있는 것을 추상화한 것이다.

그렇다면 추상이란 무엇일까? -> 사물이 지니고 있는 여러 측면 중 특정한 부분만 추출하는 것.

객체 지향이란 객체 위주로 설계하고 프로그래밍 하는 패러다임을 뜻한다. 각각의 객체가 메세지를 주고 받는다.

프로토타입이란 무엇인가 ?

자바스크립트를 공부하는 과정에서 흔히 들어보게 되는 용어 중 하나로 자바스크립트는 프로토타입 기반의 언어이다.
이를 기반으로 확장과 재사용성을 높여준다.
사전적의미로는 Protoype은 원형이다. 이러한 사전적의미와 같은 개념으로 자바스크립트에서도 사용한다.
즉, 생성된 객체는 자기자신의 프로토타입을 갖는다. 즉, 자기자신이 만들어지게된 원형을 안다.

밑에는 프로토타입에 대해 더 깊이있게 정리해놓았다.
https://pkb9239.github.io/javascript/prototype/

profile
꺾여도 하는 마음

0개의 댓글