10/31
이번 발표는 8주차 였으며 HTTP에 대해 발표를 하였다.
풀잎스쿨이란 ?
Flipped school
Flipped learning 방식으로 함께 공부하며 성장하는 스터디 모임이에요. (기수제 I 8주 또는 11주)
이번 발표는 김영한님의 HTTP 강의 내용을 참고하여 스터디를 진행하였다.
발표자료를 참고해보자
이번 발표의 목차는 아래와 같다
인터넷 네트워크
URI(Uniform Resource Identifier
HTTP
모든것이 HTTP
무상태 프로토콜
비연결성(Connectionless)
HTTP 메세지
인터넷이 근본적으로 왜 필요한지에 대해 생각해볼 수 있었음
왜 통신이라는 것을 해야하는지, 데이터를 전송하기 위해 어떤 규칙들을 가지고 있는지 생각해보았음
TCP 에서 이 3 way handshake(가상 연결) 이 꽤나 큰 이슈인 것을 알게되었다.
시간적인 부분이 가장 큰데 이 이유 때문에 각 상황에 맞게 UDP를 활용하여 개발하여 사용하는 것을 알 수 있었다.
uri 란 리소스를 식별하기 위한 것 입니다.
uri 의 url을 주로 사용하는데
위와 같이 전체 문법은 프로토콜, 호스트명, 포트번호, 패스, 쿼리 파라미터로 이루어져있다.
검색창에 위와 같이 입력을 한다면 어떤일이 발생할까요 ?
웹 브라우저가 DNS서버를 조회를 하여 해당 IP와 Port정보를 찾아냄- HTTP 요청 메세지를 생성한다.
다시 정리
만약 구글에 hello를 검색하면 어떤일이 일어날까 ?
- 웹 브라우저가 해당 DNS 서버를 조회하여 해당 DNS에 매칭되는 IP 와 PORT 정보를 찾아낸다.
- HTTP 요청 메세지를 생성한다
- 해당 HTTP 요청 메세지에는 GET 메소드(get, post등), 패스, http 버전, host(google)정보가 들어있다
- socket 라이브러리를 통해 메세지를 TCP/IP, LAN 드라이버로 전달한다 (이 과정에서 TCP/IP 패킷이 생성된다)
- 패킷으로 잘 포장한 데이터들을 웹 브라우저가 구글서버로 인터넷 망을 통해 보내게 된다.
- 인터넷 망으로 온 패킷은 수많은 인터넷 노드들을 통해서 구글 서버로 전달된다.
- 이후 패킷이 구글서버로 잘 도착하게 되면 포장지인 TCP/IP 패킷들을 다 벗겨내고 http 메세지를 가지고 원하는 데이터들을 찾아낸다.
- 해당 데이터들을 http 응답 메세지 생성을 하고 다시 TCP/IP 패킷으로 잘 포장하여 클라이언트로 다시 보내게 된다.
- 해당 패킷으로 포장된 데이터들이 웹 브라우저에 도착하게 되면 브라우저는 패킷들을 다시 벗겨내고 메세지를 랜더링하여 화면에 표시한다.
- 이때 표시되는 화면이 google검색창에 hello를 검색하였을때의 화면이다.
무상태와 비 연결성의 개념이 쉽게 와닿지 않았다.
무상태로 클라이언트와 서버가 소통을 해야하는데 로그인 문제를 어떻게 해결해야할까 ?
이러한 질문을 받았을때는 당황하였다. 후에 알아보니 토큰, 캐시를 통해 해결한다는 점을 알고 그에 대해서도 추가 발표를 하였다.
무상태(점원, 손님으로 예시) Stateless
중간에 다른 점원으로 바뀌어도 소통할 수 있다.
갑자기 고객이 증가해도 점원을 대거 투입할 수 있다.
갑자기 클라이언트 요청이 증갛도 서버를 대거 투입할 수 있다.
무상태는 응답 서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설 가능
비연결성
비 연결성은 클라이언트가 요청 당시에만 서버측에서 응답을 하면 연결을 유지하지 않아 서버 자원을 효율적으로 사용할 수 있음
예를들어 구글이나 네이버의 경우 수천 명이 동시에 검색을 하고 있는게, 아니라 결과값이 나오면 한참 읽다가 다시 검색을 하기 때문에, 수천명이 사용해도 실제 초당 동시 처리하는 요청의 숫자는 매우 적다. 이럴 때, 비연결성으로 자원 절약을 할 수 있다.