1) 로컬호스트와 브라우저 캐시에 해당 URL 존재하는 지 확인 → IP주소 요청
2) 없다면, root DNS 서버에 URL의 IP주소 요청
3) 없다면, .com 도메인에 대한 하위 TLD이름 서버에 요청
4) 발견했다면 해당 IP주소를 반환하고, 다음 번에 빠르게 반응하기위해 일정시간 IP주소를 캐싱
Step3. IP가 존재하는 서버로 이동
라우터를 통해 해당 서버가 존재하는 서버의 게이트웨이까지 이동
Step4. ARP를 이용하여 MAC 주소 변환
ARP: Address Resolution Protocol
논리주소인 IP 주소를 물리 주소인 MAC 주소로 변환하는 프로토콜
MAC 주소는 기계의 실제 위치를 의미하는 고유한 주소이므로 실제 통신에 사용된다.
gps좌표와 같다. (37.567, 126.71)
ARP는 논리주소인 IP주소(서울-양천구-신정동) 을 통해 범위를 좁혀나간 후 최종적으로 실제 위치인 MAC 주소(gps좌표) 를 반환한다.
Step5. TCP 통신을 위한 Socket을 여는 단계
대상 서버와 통신을 위한 TCP 소켓 연결
소켓연결은 3-way-handshake 과정을 통해 진행 (추가블로깅 필요)
Step6. 서버가 응답을 반환
HTTP/HTTPS 프로토콜로 들어온 패킷을 읽고 처리
요청에 따른 적절한 응답 값을 반환
Step7. 브라우저 렌더링
HTML 파일을 읽어 DOM Tree 구축
DOM Tree를 화면에 렌더링
스크립트 실행
선택과제
http가 있음에도 불구하고 https가 왜 탄생했는지
암호화 위해
https가 생김으로 인해 기존과정에서 무엇이 추가되는지
TLS 핸드쉐이킹 과정(암호화)
2. 컴퓨터 시간 원리
2-1. 시간이란?
물리량
물리학 관점에서 시각과 시각사이의 간격
위치
시간은 위치에 따라 다르게 표현된다.
ex) 경도0도(UTC)와 동경 135도의 시간
천문 현상
지구자전속도의 불규칙성으로 시간 보정이 필요하다
윤년, 윤달 ..
환경에 따라 다른 시간
문화에 따라 다른 시간 (양력/음력, 태양력, 태음력)
역사적 사건에 따라 시간이 다르기도 함(그레고리력 1592년 10/4 ~ 10/15 미존재)
사회적 제도에 의해 변하기 도 함 (summer Time)
모든 조건을 만족하는 시간을 정하는 것은 어렵다. 따라서 표준화된 시간 필요 ⇒ UTC
2-2. 협정 세계시 UTC
원자 시계와 윤초보정을 통해 표준화한 시각
모든 시간대를 UTC+0을 기준으로 함
2-3. 컴퓨터가 시간을 표현하는 방법
시스템시간을 타임스탬프 형식으로 표현
시스템시간 : 특정시간을 기준으로 시스템 클럭의 틱을 세는 것
타임스탬프 : 시스템시간을 값으로 표현한 것
타임스탬프는 운영체제 마다 기준시간과 단위가 다르다
유닉스 계열에서 시간을 표시하는 방법을 Unix Time 이라고 부름
Unix Time
1970년 1월 1일 0시 0분 0초를 기준 시각으로 함
현재시간을 알아내는 방법
네트워크 타임 프로토콜(NTP)을 통해 시간을 받아온다. (인터넷필수)
시간대를 고려하는 방법
국가, 지역별로 데이터베이스에 기록하여 처리 ⇒ TimeZone 데이터
표준화된 표기법을 통해 표기
UTC 시간 vs TimeZone 시간
UTC
TimeZone
js에서의 시간사용
Date 객체로 간단한 날짜 표현
date-fns, luxon 라이브러리를 통해 시간 계산등에 사용
3. 암호화
3-1. 암호화란
평문을 해독할 수 없는 암호문으로 변환하는 것
단방향(해싱)과 양방향 암호화 존재
단방향 암호화
해시 알고리즘을 통해 평문을 복호화할 수 없는 형태로 암호화하는 방법
사용자 비밀번호 등 알 수 없어야 하는 데이터에 주로 사용
SHA-256 알고리즘 많이 사용
Rainbow Table등을 통해 해커가 원문을 알아낼 수 있다.
탈취당하더라도 원문을 알아낼 수 없도록 조치가 필요
Salt : 평문에 임의의 문자열을 추가하여 암호화 하는 방법
Key stretching : 해시를 여러번 반복하여 원문을 알기 힘들게 만드는 방법
양방향 암호화
평문을 복호화 할 수 있는 형태로 암호화 하는 방법
대칭키와 비대칭키 알고리즘으로 나뉨
AES 대칭키 암호화
같은 키를 이용하여 암호화와 복호화 진행
비대칭키 암호화
많은 사람들에게 사용할 때 보안을 강화하기 위해 등장한 방식
모든 사람이 접근 가능한 공개키와 사용자만 가지고 있는 개인키로 구성
브라우저의 암호화 방식
4. 함수형 프로그래밍
4-1. 함수형 패러다임
프로그램은 순차, 분기, 반복, 참조로 구성된다.
패러다임은 위 4가지 요소를 어떻게 이용할 것인가를 다룬다.
객체지향과 함수형프로그래밍
객체지향: 객체를 통해 데이터와 메소드를 묶고, 객체들의 통신을 중심으로 구조
함수형프로그래밍: 데이터를 함수로 묶고 새로운 데이터를 만들어나가는 방식
4-2. 함수형 프로그래밍의 장단점
a 사이드 이펙트 없다
→ 단점
b 재사용성 높다
→ 단점
c. 코드가 짧고 간결하다
→ 단점
선언형 프로그래밍
함수형프로그래밍 == 선언형 프로그래밍
명령형 프로그래밍 = 절차지향형
Goto, if-else, for-while
함수형 프로그래밍 == 선언형,
Stateless, Recursion, Pipe
멀티패러다임
굳이 나눌 필요가 없다.
5. 객체지향과 프로토타입
5-1. 객체지향이란
1. 객체란
객체지향의 객체는 현실에 있는 것을 “추상화”한 것
추상이란
사물의 여러 측면 중 필요한 부분만을 남겨 표현한 것
2. 객체지향이란?
객체 위주로 설계하고 프로그래밍하는 패러다임
객체지향의 오해
패러다임일 뿐 언어와는 관계가 없다
절차지향보다 객체지향이 무조건 좋은 것이 아니다
복작합 프로그램에 객체지향이 더 적합
5-2. 프로토타입
js에서의 객체
클래스 기반 언어처럼 속성과 행위를 정의할 수 있다.
js 객체 생성방법
객체 리터럴, Object, 생성자함수
프로토타입이 필요한 이유
생성자로 객체 생성 시 같은 속성에 대한 메모리 낭비
효과적인 프로토타입 사용
1.상속흉내내기
2.부모 생성자 빌려 쓰기
3. Object.create()
6. 이벤트루프
6-1.이벤트 루프란
이벤트루프는 js가 아닌 브라우저, node.js 관리하는 기능
js는 싱글쓰레드, 브라우저는 멀티쓰레드
6-2. 이벤트루프의 동작과정
콜스택 → WebAPI (비동기작업) → TaskQueue
선택과제
MicroTask Queue, Animation Queue
7. 모듈
모듈이란
전역스코프의 변수들 사용
스크립트간의 의존도 파악
모듈과 컴포넌트 용어 정리
모듈은 의식적인 것
컴포넌트는 -
Http-server를 통한 실습
모듈의 특징
use strict로 실행
모듈레벨스코프 존재
단 한 번만 평가 된다
지연 실행이 가능하다
8. 유니코드
8.1 유니코드란
전 세계 문자를 다룰 수 있도록 하는 표준 시스템
9. 정규표현식
정규표현식 목적
패턴을 이용하여 문자검색(search), 문자대체(replace), 문자추출(extract)