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
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 웹 캐시(Cache)란? (0) | 2023.04.19 |
---|---|
[정보처리기사] HTTP 쿠키(Cookie)란? (0) | 2023.04.19 |
[정보처리기사] OSI 7계층 (Open Systems Interconnection) (0) | 2023.04.19 |
[정보처리기사] 데이터베이스의 개념적, 논리적, 물리적 설계 (0) | 2023.04.18 |
[정보처리기사] 파티셔닝과 클러스터링의 차이점 (0) | 2023.04.13 |