개발도 시작하기로 했으므로, 겸사겸사 공부하면서 드림핵 문제를 풀어보려고 한다. 코딩앙마 님과 노마드 코더 님의 자바스크립트 강의를 듣고 복습한 내용도 올라올 예정이다.(갑자기 할 게 많아져서 슬퍼짐...😂)
드림핵 문제는 아직 풀 단계가 아닌 듯 하다....파이썬 코드 분석도 제대로 못하고 있어서...
웹: 인터넷을 기반으로 구현된 서비스 중 HTTP를 이용하여 정보를 공유하는 서비스
웹 서버: 정보를 제공하는 주체
웹 클라이언트: 정보를 받는 이용자
프론트엔드: 이용자의 요청을 받는 부분
백엔드: 받은 요청을 처리하는 부분
html: 웹 문서의 뼈와 살을 담당한다. 태그와 속성을 통한 구조화된 문서 작성을 지원함.
css: 웹 문서의 생김새를 지정. 웹 리소스들의 시각화 방법을 기재한 스타일 시트
JS(자바 스크립트): 웹 문서의 동작을 정의함. 이용자의 브라우저에서 실행되는데, 클라이언트가 실행하는 코드라고 하여 client side script라고 불리기도 함.
표준 통신 프로토콜: TCP/IP(네트워크 통신의 기초), HTTP(웹 애플리케이션이 사용)
HTTP: 데이터 교환을 요청(Request)과 응답(Response) 형식으로 정의한 프로토콜
HTTP 메시지: HTTP 서버와 클라이언트가 교환하는 데이터. 헤드와 바디로 구성되며, 각 줄은 CRLF로 구분됨.
헤드: 메시지에 대한 정보. 헤드의 끝에는 CRLF가 한 줄 있음. 데이터의 전달 보다는 이용자와 서버가 상호작용하기 위한 정보를 담고 있음.
바디: 클라이언트가 서버에게, 또는 서버가 클라이언트에게 전달할 데이터
HTTP 요청: 서버에게 특정한 동작을 요구하는 메세지
HTTP 요청의 시작 줄은 메소드(Method), 요청 URI(Request-URI), 그리고 HTTP 버전으로 구성
각각은 띄어쓰기로 구분된다.
메소드: URI가 가리키는 리소스를 대상으로, 서버가 수행하길 바라는 동작을 나타냄
요청 URI(Request-URI): 메소드의 대상이 되는 리소스를 지정
HTTP 응답(Response): 요청을 처리한 결과 및 이유, 그리고 클라이언트에 전송할 웹 리소스를 포함하는 메시지
상태 코드(Status Code): 요청을 처리한 결과
처리 사유(Reason Phrase): 상태 코드가 발생한 이유
네트워크 포트: 네트워크에서 서버와 클라이언트가 정보를 교환하는 추상화된 장소
서비스 포트: 네트워크 포트 중에서 특정 서비스가 점유하고 있는 포트(ex> http가 80번 포트를 점유하고 있는 경우, http의 서비스 포트는 80번 포트가 된다)
http의 응답과 요청 -> 평문으로 이루어져 있음
이러면 만약에 누군가가 http 메시지를 가로챌 경우, 중요한 정보가 그대로 노출된다. 이러한 문제를 해결하기 위해, tls 프로토콜을 도입하여 https가 만들어짐.
tls 프로토콜: 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화하는 프로토콜, 공격자가 중간에 메시지를 탈취하더라도 이를 해석하는 것은 불가능하며, 결과적으로 HTTP 통신을 도청과 변조로부터 보호함.
http
중요 정보를 아주 직관적으로 보여줌. 누가 봐도 해킹당하기 쉽게 생김.
https
??
못알아봄. 공격자가 중간에 메시지를 탈취하더라도 해석이 불가능하기 때문에 정보가 누출될 위험이 줄어듦.
tls는 나중에 암호학 공부할때 제대로 설명해 보도록 하겠다.😎
간단한 퀴즈를 풀어보자. 일단 틀린 것만 올리도록 하겠다.
당연히 html 형식으로 전달하는 줄 알았는데 틀렸다고 한다....
이용자의 요청은 html 형식이 아닌 http 형식으로 전달된다.
http의 기본 포트번호: 80
https의 기본 포트번호: 443