Web

[웹 프로그래밍] 1. HTTP란?

cheon seung hyeon 2023. 3. 21. 00:00

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가지로 나눠집니다.

출처 : https://ohcodingdiary.tistory.com/5

요청 라인 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 텍스트를 포함합니다.