정보처리기사

[정보처리기사] HTTP 통신 (HyperText Transfer Protocol)이란?

dongkeonkim 2023. 4. 19. 16:28
반응형

HTTP 통신은 웹 브라우저와 웹 서버 간에 통신을 가능하게 하는 프로토콜입니다. 웹 브라우저가 웹 서버에게 정보를 요청하면, 웹 서버는 요청받은 정보를 HTTP를 통해 응답합니다.

 

HTTP 요청은 클라이언트(웹 브라우저, 앱 등)가 서버에게 보내는 요청 메시지입니다.

이 요청 메시지는 HTTP 메서드, URI, HTTP 버전, 요청 헤더, 요청 본문 등으로 구성됩니다.

 

다음은 요청 메시지의 예시입니다.

 

GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

 

 

하나하나 설명해 드리겠습니다.

 

GET / HTTP/1.1
GET 요청을 / 경로로 HTTP/1.1 프로토콜 버전의 요청이라는 것을 명시합니다.

Host: example.com
example.com 라는 DNS 주소로 요청한다는 것을 명시합니다.

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36

Mozilla/5.0:

모질라/5.0 계열의 호환성을 가지며

 

(Windows NT 10.0; Win64; x64):

윈도우 10 운영체제의 64비트 아키텍처를 사용하는 클라이언트이며

 

AppleWebKit/537.36 (KHTML, like Gecko):

웹 브라우저는 Apple의 오픈소스 웹 브라우저 엔진인 WebKit이며 Gecko 엔진과 비슷한 동작을 수행하며

 

Chrome/90.0.4430.85 Safari/537.36:

실제 사용하는 웹 브라우저의 정보는 Chrome/90.0.4430.85 버전이고 WebKit 엔진을 기반으로 하는 Safari/537.36 사파리 브라우저의 정보를 추가적으로 제공한다는 것을 명시합니다.


Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
클라이언트가 수락할 수 있는 콘텐츠 유형을 명시합니다.

;q=의 소수점은 높을 수록 더욱 높은 우선순위를 가지고 있다는 것입니다.

Accept-Encoding: gzip, deflate, br
클라이언트가 수락할 수 있는 콘텐츠 인코딩을 명시합니다.

Connection: keep-alive
클라이언트와 서버 간의 연결 유지 방식을 keep-alive(지속적)으로 유지한다는 것을 명시합니다.

 

 

POST 요청도 비슷합니다.

 

POST /login HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
Content-Type: application/json
Content-Length: 52

{
    "username": "user123",
    "password": "password123"
}

 

Content-Type 은 json이고 길이는 52 라는 내용을 명시했습니다. 그리고 본문에 json 형태가 들어가는 형식입니다.

 

 

이러한 메시지로 요청을 하게 되면 서버에게서 다음과 같은 응답 코드를 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 1,
    "name": "John",
    "email": "john@example.com",
    "age": 30,
    "gender": "male"
}

 

 

응답 결과를 보시면 HTTP/1.1 200 OK 라는 내용이 있습니다. 이는 서버에서 반환되는 응답 상태를 나타내는 숫자입니다.

다음과 같은 것들이 있습니다.


200 OK: 클라이언트의 요청이 성공적으로 처리되었으며, 요청에 대한 적절한 응답이 반환됨.
201 Created: 클라이언트의 요청에 따라 새로운 리소스가 생성되었음.
204 No Content: 클라이언트의 요청이 성공적으로 처리되었으며, 반환할 콘텐츠가 없음.
400 Bad Request: 클라이언트의 요청이 부적절하거나 잘못된 구문으로 구성되어 있음.
401 Unauthorized: 클라이언트가 인증되지 않았으며, 요청한 리소스에 대한 권한이 없음.
403 Forbidden: 클라이언트가 인증되었으나, 요청한 리소스에 대한 액세스 권한이 없음.
404 Not Found: 요청한 리소스가 서버에 없음.
500 Internal Server Error: 서버 내부 오류가 발생하여 요청을 처리할 수 없음.
502 Bad Gateway: 서버가 게이트웨이 또는 프록시 역할을 하는 다른 서버에서 잘못된 응답을 받았음.
503 Service Unavailable: 서버가 현재 요청을 처리할 수 없음(일시적 서비스 중지 등).

 

지금 보여드린 내용은 일부분에 불과하지만 주로 볼 수 있는 코드들입니다.

더 궁금하시다면 아래 링크를 확인하세요.

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

반응형