HTTP

서린·2024년 2월 16일

혼자개발

목록 보기
46/82

웹을 지탱하는 기술 - 멘토르

HTTP의 중요성

HTTP (Hypertext Transfer Protocol): 하이퍼텍스트 전송용 프로토콜

프로토콜:  서로 다른 기기나 시스템 간에 통신할 때 서로 이해할 수 있는 방법을 제공

실제로는 하이퍼텍스트(HTML, XML)뿐만 아니라 음성, 이미지, 동영상, Javascript, PDF, 각종 오피트 도큐먼트 파일 등 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수 있다.
HTTP는 TCP/IP를 베이스로한 프로토콜이다.
REST의 중요한 특징인 Uniform 인트페이스, 스테이트리스 서버, 캐시 등을 구현하고 있는 web의 기반이 되는 프로토콜

TCP/IP란?

TCP(Transmission Control Protocol):
IP(Internet Protocol): 데이터의 기본적인 통신단위를 패킷이라고 부른다
인터넷의 네트워크 프로토콜은 계층 구조를 가지고있다.
각 계층별로 추상화 해서 구현하면 하위계층의 구체적인 사항에 좌우되지 않고 상위계층을 구현할 수 있다.

  • 계층형 프로토콜
    • 네트워크 인터페이스 계층: 가장 하위계층으로 물리적인 케이블이나 네트워크 어댑터에 해당
    • 인터넷 계층: IP가 해당, 네트워크에서 데이터를 실제로 주고받는 부분, 지정한 IP주소와 패킷 단위로 데이터를 주고받으면서 통신
    • 트랜스포트 계층: UCP, TCP가 해당, IP가 하지 않았던 데이터의 무결성을 보증하는 역할, 목적지의 상대에 대해 커넥션을 연결해 데이터 누락을 체크하고 데이터의 도달을 보증한다. TCP로 접속된 커넥션에서 전송하는 데이터가 어느 애플리케이션으로 전달될지 결정하는것이 포트번호.
    • 애플리케이션 계층: 메일, DNS, HTTP를 실현하는 계층

클라이언트와 서버

웹은 아키텍처 스타일로 클라이언트/서버를 채용하고 있다 = 클라이언트(웹브라우저)가 정보를 제공하는 서버에 접속해 각종 요청을 보내고 응답을 받는 구조다
RFC 2616에는 클라이언트를 user agent라고도 한다

요청과 응답

HTTP는 요청/응답형 프로토콜이라고 한다
서버에서의 처리가 시간이 많이 걸리는 경우라도 요청을 보낸 클라이언트는 응답이 돌아올때까지 대기하는데, HTTP가 동기형 프로토콜이기 때문이다

클라이언트에서 요청/응답 시 일어나는일
1. 요청 메세지 구축
2. 요청 메세지 송신
3. 응답 돌아올 때까지 대기
4. 응답 메세지 수신
5. 응답 메세지 해석
6. 클라이언트의 목적을 달성하기 위해 필요한 처리

서버에서 요청받은 후 일어나는 일
1. 요청 메세지 수신
2. 요청 메세지 해석
3. 적절한 애플리케이션 프로그램으로 처리를 위임
4. 애플리케이션 프로그램으로부터 결과 가져옴
5. 응답 메세지 구축
6. 응답 메세지 송신

HTTP의 스테이트리스성(Stateless)

HTTP는 스테이트리스한 프로토콜로 설계되어있다
스테이트리스란, '서버가 클라이언트의 애플리케이션 상태(세션 상태)를 보존하지 않는다'라는 제약이다
즉 스테이트풀한 것은 간결함(이 전의 내용을 서버가 기억함), 스테이트리스한 것은 장황함(이 전의 내용을 서버가 기억하지 못해서 모두 말해야함)의 특징이 있다

대표적인 스테이트풀한 프로토콜은 FTP.
클라이언트가 FTP 서버에 로그인해서 로그아웃할 때까지 애플리케이션 상태를 서버가 관리한다 그래서 클라이언트는 디렉터리의 이동 등에서 상대경로를 지정할 수 있다

스테이트풀의 결점?
클라이언트 수가 증가함에 따라 서버가 애플리케이션 상태를 기억하는것이 어려워진다.

스테이트리스의 이점?
클라이언트가 요청 메세지에 필요한 정보를 모두 포함시키기 때문에 서버가 애플리케이션 상태를 기억할 필요가 없어 서버 시스템이 단순해진다. 서버는 새로 오는 요청을 처리하는데 집중하면 된다.

스테이트리스의 결점?
스테이트리스는 모든 정보를 재전송할 필요가 있어서 데이터 양에 따라 네트워크 대역을 낭비할 수 있고 인증처리 등을 할때마다 데이터베이스 액세스가 필요한 경우에는 반복하면 퍼포먼스가 떨어진다
또 네트워크 트러블이 발생했을 때 그 요청이 처리되었는지 알 수 없다

심플한 프로토콜의 강점

HTTP의 가장 큰 특징은 심플함이다
이 심플함이 강력한 무기인데 이 덕분에 웹 서비스와 웹 API가 같은 프로토콜로 실현될 수 있는 것이다

0개의 댓글