웹을 지탱하는 기술 - 멘토르
HTTP (Hypertext Transfer Protocol): 하이퍼텍스트 전송용 프로토콜
프로토콜: 서로 다른 기기나 시스템 간에 통신할 때 서로 이해할 수 있는 방법을 제공
실제로는 하이퍼텍스트(HTML, XML)뿐만 아니라 음성, 이미지, 동영상, Javascript, PDF, 각종 오피트 도큐먼트 파일 등 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수 있다.
HTTP는 TCP/IP를 베이스로한 프로토콜이다.
REST의 중요한 특징인 Uniform 인트페이스, 스테이트리스 서버, 캐시 등을 구현하고 있는 web의 기반이 되는 프로토콜
TCP(Transmission Control Protocol):
IP(Internet Protocol): 데이터의 기본적인 통신단위를 패킷이라고 부른다
인터넷의 네트워크 프로토콜은 계층 구조를 가지고있다.
각 계층별로 추상화 해서 구현하면 하위계층의 구체적인 사항에 좌우되지 않고 상위계층을 구현할 수 있다.
웹은 아키텍처 스타일로 클라이언트/서버를 채용하고 있다 = 클라이언트(웹브라우저)가 정보를 제공하는 서버에 접속해 각종 요청을 보내고 응답을 받는 구조다
RFC 2616에는 클라이언트를 user agent라고도 한다
HTTP는 요청/응답형 프로토콜이라고 한다
서버에서의 처리가 시간이 많이 걸리는 경우라도 요청을 보낸 클라이언트는 응답이 돌아올때까지 대기하는데, HTTP가 동기형 프로토콜이기 때문이다
클라이언트에서 요청/응답 시 일어나는일
1. 요청 메세지 구축
2. 요청 메세지 송신
3. 응답 돌아올 때까지 대기
4. 응답 메세지 수신
5. 응답 메세지 해석
6. 클라이언트의 목적을 달성하기 위해 필요한 처리
서버에서 요청받은 후 일어나는 일
1. 요청 메세지 수신
2. 요청 메세지 해석
3. 적절한 애플리케이션 프로그램으로 처리를 위임
4. 애플리케이션 프로그램으로부터 결과 가져옴
5. 응답 메세지 구축
6. 응답 메세지 송신
HTTP는 스테이트리스한 프로토콜로 설계되어있다
스테이트리스란, '서버가 클라이언트의 애플리케이션 상태(세션 상태)를 보존하지 않는다'라는 제약이다
즉 스테이트풀한 것은 간결함(이 전의 내용을 서버가 기억함), 스테이트리스한 것은 장황함(이 전의 내용을 서버가 기억하지 못해서 모두 말해야함)의 특징이 있다
대표적인 스테이트풀한 프로토콜은 FTP.
클라이언트가 FTP 서버에 로그인해서 로그아웃할 때까지 애플리케이션 상태를 서버가 관리한다 그래서 클라이언트는 디렉터리의 이동 등에서 상대경로를 지정할 수 있다
스테이트풀의 결점?
클라이언트 수가 증가함에 따라 서버가 애플리케이션 상태를 기억하는것이 어려워진다.
스테이트리스의 이점?
클라이언트가 요청 메세지에 필요한 정보를 모두 포함시키기 때문에 서버가 애플리케이션 상태를 기억할 필요가 없어 서버 시스템이 단순해진다. 서버는 새로 오는 요청을 처리하는데 집중하면 된다.
스테이트리스의 결점?
스테이트리스는 모든 정보를 재전송할 필요가 있어서 데이터 양에 따라 네트워크 대역을 낭비할 수 있고 인증처리 등을 할때마다 데이터베이스 액세스가 필요한 경우에는 반복하면 퍼포먼스가 떨어진다
또 네트워크 트러블이 발생했을 때 그 요청이 처리되었는지 알 수 없다
HTTP의 가장 큰 특징은 심플함이다
이 심플함이 강력한 무기인데 이 덕분에 웹 서비스와 웹 API가 같은 프로토콜로 실현될 수 있는 것이다