[웹 프로그래밍] 1. HTTP란?
HTTP란?
개발자 그 중에서도 Front-end 개발자의 경우 http,css,js 와는 떨어질 수 없는 그런 관계입니다. 3가지 모두 Front-end 를 다룬다면 모두 숙지해야 하는 것이고 리액트, vue 같은 프레임워크들 또한 저걸 베이스로 하기 때문입니다.
HTTP : 이미지 등의 요소들을 웹 브라우저에서 어떻게 배치할 건지 지정하는 언어
CSS : 웹 브라우저를 꾸며주는 스타일 시트
JS : 웹 브라우저에서 발생하는 이벤트를 처리해주는 스크립트 프로그래밍 언어
이렇게 정의할 수 있습니다.
중요한 것은 이 3개의 프로그램은 웹 서버에서 기록하지만, 동작은 웹 브라우저에서 한다는 것 입니다.
- 불특정 다수의 웹 브라우저에 일일이 탑재하는 것이 불가능하기에
3가지 프로그램은 웹 서버에 위치하지만 웹 브라우저가 요청하면 웹 브라우저로 보내주는 식으로 동작합니다.
HTTP 프로토콜
HTTP는 웹 서버와 웹 크라이언트 사이에엇 데이터를 주고 받기 위해 사용되는 통신 방식으로 TCP/IP 프로토콜의 형태로 동작합니다. 그렇기 때문에 우리가 웹을 이용하려면 서버와 클라이언트는 각각 TCP/IP 처리에 필수적으로 들어가는 IP 주소를 가져야 합니다.
프로토콜 : 통신을 하는 방식을 정하는 일종의 통신 규약
HTTP는 이름처럼 하이퍼 텍스만 전송 할 수 있는 것 처럼 보이지만 사실 이미지,음성,JS 등 컴퓨터가 다루는 비정형 데이터들 또한 모두 전송 가능합니다.
HTTP 메시지의 구조
HTTP 메시지는 클라이언트가 서버로 요청하는 메시지, 서버가 클라이언트에 응답하는 메시지 이렇게 2가지로 나눠집니다.
요청 라인 OR 상태 라인 : 요청 메시지일 경우 요청 라인, 응답 메시지일 경우 상태 라인
헤더 : key:value 형태로 이루어진 http의 각종 정보
빈 줄 : 스타트 라인에 이어 헤더의 각 행의 끝에는 줄바꿈 문자인 CRLF가 있어 헤더와 빈 줄을 구분합니다.
바디 : 텍스트나 2진수 같은 바이너리 데이터를 포함한 전송할 데이터
스타트 라인에 이어 헤더의 각 행의 끝에는 줄바꿈 문자인 CRLF가 있어 헤더와 빈 줄을 구분합니다
바디가 없는 요청 메시지의 예시
GET /book/checklist HTTP/1.0
Host: www.example.com:1111
첫 줄은 요청 라인으로 요청 방식(method), 요청 URL, 프로토콜 버전으로 구성됩니다.
두 번 째 줄이 헤더로 key:value의 형태로 표현되며 여러 개의 헤더가 존재 할 수도 있습니다.
만약 포트번호를 추가로 표시하려면 URL: 을 붙이고 표시하면 됩니다.
헤더 또한 요청 라인에 붙이는 식으로 생략이 가능합니다.
GET www.example.com:8080 /book/shakespeare HTTP/1.1
응답 메시지의 예시
HTTP/1.1 200 OK
Content-Type: application/xhtml+xml; charset=utf-8
<html>
...
</html>
첫 번째 줄의 상태 라인은 프로토콜 버전, 상태 코드, 상태 텍스트로 구성됩니다.
서버에서 응답 메시지를 보낼 때 처리 결과를 상태 라인에 표시하는데 예시처럼 200 OK는 정상처리 됐음을 의미합니다.
두 번째 줄부터 헤더인데 응답 메시지 1개와 바디를 가지고 있기에 빈 줄로 구문하고 있으며 바디는 보통 HTTP 텍스트를 포함합니다.