메가테라는 매 주 금요일 오후 6시에 주말동안 들어야 할 아샬님의 강의를 오픈합니다.
주말 내도록 강의를 충분히 듣고, 필기&질문 목록을 만들고 난 뒤에
이어지는 월~금요일동안 주어진 과제를 수행하는 플립드 러닝(flipped learning) 방법으로 공부합니다.
흑.. 5주차 강의 요약을 아직도 안했다.
과제를 못한게 아니라 안한게지...
마음에 계속 남아있긴 했는데... ㅠㅠ. 도저히 엄두가 안난다.
그래도 지난 숙제를 못했다고 하여 이번 숙제까지 밀릴수는 없기에!! 차근 차근 6주차 강의를 요약해본다.
메가테라 6주차 강의는 HTTP, HTML, CSS 총 3강을 구성되어있었다.
매우매우 감사하게도!!! HTML과 CSS는 3주차 강의와 동일했기 때문에 사실상 새로운 주제는 HTTP였는데...
그렇다고 내가 HTML, CSS를 아는 것도 아니더라. 그저 강의를 한 번 더 '시청'했을 뿐 공부해서 머릿속에 새겨놓은 것은 아니기에...
어찌되었건 HTTP, HTML, CSS 세 가지 주제를 강의 요약 글에서 모두 다루기에는 덩어리들이 크다보니 HTTP에 한정하여 요약해보고자 한다.
인터넷을 사용하는 사람이라면 누구나 한 번 이상 보았을 HTTP.
웹 브라우저 주소창에 우리가 흔히 아는 URL 주소를 입력한다고 치자.
예를 들어 구글 주소를 입력한다면 www.google.com 이나 또는 google만 치고 엔터를 누르는 사람도 있을 것이다.
여튼, 무엇을 치더라도 화면이 전환되고 나서 주소창을 한번 클릭한 뒤에 방향키로 좌 우 왔다갔다 해보면 숨어있던 'http' (또는 'https')가 나타나는 것을 볼 수 있다.
강의를 듣기 전까지 나는 http가 단순히 URL구성 요소라고 생각했는데...
HTTP를 한마디로 정의한다면 '약속'이라고 할 수 있다는 점을 새롭게 알게 되었다.
HTTP : Hyper-Text Transfer Protocol
직역하면 '하이퍼텍스트(초본문) 전송 규약'
이름에서도 어느 정도 힌트를 얻을 수 있다.
'규약'. 말 그대로 규칙이고 약속인 것이다.
그럼 무엇에 대한 약속일까?
이 역시 이름에서 힌트를 얻을 수 있는데 바로 '전송'이다.
또다시 질문을 던져본다.
그럼 누가(Who), 무엇을(What) 전송한다는 말인가?
(꼬리질문을 하고 대답을 달면 내가 놓치고 있는 부분이 무엇인지 알 수 있어서 좋다.)
전송하는 주체는 Client와 Server이고, 주로 HTML(Hyper-Text Markup Language) 문서를 주고 받는데 HTTP이 사용된다.
'주로' 라는 단서를 단 것 처럼, 반드시 HTML 문서를 주고받을 때 사용하는 것은 아니라는 점은 참고.
우리는 인터넷을 사용할 때 내가 원하는 페이지에 접속하고, 링크를 클릭했을 때 원하는 화면이 창에 뜨는 것에 익숙하다. 즉 이 과정이 '전송'의 과정이라고 인식하지는 않는다.
하지만 웹을 사용한다는 것은 수많은 '전송'과정의 연속이다. 좀 더 확장해서 이야기한다면 '통신'의 연속이라고 볼 수 있다.
사용자(user)가 쇼핑을 하기 위해 물품 상세 페이지 링크를 클릭하면, 웹 브라우저(client)는 서버(server)에 물품 상세 페이지 화면을 요청(request)하고, 서버(server)는 해당 요청에 대한 응답(response)을 웹 브라우저(client)에 전달한다. 이 응답에 대한 결과가 우리가 보고 있는 쇼핑몰 물품 상세 페이지인 것이다.
위 과정에서만 벌써 (1) 사용자(user), (2) 클라이언트(client), (3) 서버(server) 총 세 주체가 등장한다.
덧붙이고 넘어가는 것은 사용자와 클라이언트를 혼동하지 말 것!
웹을 이용하는 '나 자신'은 사용자(user)이고, 크롬이나 사파리 같은 웹브라우저를 클라이언트(client)라고 칭한다.
이를 도식화 한 것이 아래와 같다.
클라이언트와 서버(서버는 단일로 구성될 수도 있지만 여러개로 분화되어 있을 수도 있음)가 인터넷을 통하여 HTML을 포함한 문서들을 주고 받고 하는 통신과정(requests-responses)에서의 규약을 HTTP라고 정리할 수 있겠다.
MDN 웹 문서에서 확인할 수 있는 HTTP의 기본적인 특징 네 가지를 아래와 같이 정리해본다. 개인적으로는 3번 특징이 잘 이해가 가지 않는 부분이 있고(상태는 없으나 세션은 있다는 특징), 4번 특징은 별도로 공부해야 할 내용들이 있어서 서칭한 내용을 덧붙인다.
마찬가지로 mdn web docs 문서에 있는 HTTP 요청(requests)의 예시이고 앞으로의 과제(ㅎㅎ)를 위하여 header의 위치와 주요 구성 요소들을 눈에 익혀두어야겠다.
#상황. 철수(client)가 영수와 놀기 위해 영수네(server)로 전화를 건다.
철수: 안녕하세요, 혹시 영수 있나요?
영수엄마: 응~ 영수 화장실 갔는데... 근데 누구니?
철수: (철컥. 전화를 끊는다)
영수엄마: (...?)
철수: (다시 전화를 건다) 어, 저 지금 방금 전화했던 사람인데요~
영수엄마: 누구니? 방금 전화를 여러통 받아서... 누군지 모르겠네~
철수: (철컥. 전화를 또 끊는다)
아래에 나오는 모든 예시의 출처는 mdn web docs임을 미리 밝혀둔다.
(1) HTTP 요청의 예
(2) HTTP 응답의 예
응답메시지의 예시를 보면서 각 구성 요소를 잘 기억하도록 하자.
굉장히 많은 정보가 쏟아진 것 같지만, 사실 위에 기술한 내용들은 HTTP의 개요도 채 되지 않을 것이다.
이런 내용들을 가지고 이번 한주간 또 어떤 공부를 하게 될지 궁금...!!
HTTP와 더불어 HTML, CSS의 경우에는 JAVA 처럼 외워야 할 것들이 굉장히 많아보이는데... 지치지 말고 잘 외워나갔으면 좋겠다!!!
6주차도 화이팅!
참고 사이트