이 자료는 "엔터프라이즈 개발 소개" 시리즈의 일부입니다. 이전 기사:
안녕! 오늘 우리는 HTTP와 HTTPS 프로토콜에 대해 배울 것입니다. 하지만 먼저 한 가지 점을 분명히 하겠습니다. 우리는 OSI 모델의 애플리케이션 수준에서 네트워크를 통해 데이터를 전송하기 위한 프로토콜에 대해 이야기하고 있습니다. 이전 기사 중 하나에서 OSI 모델을 알게 된 것을 기억할 수 있습니다. 기억이 나지 않는다면 여기 있습니다 .

데이터 통신 프로토콜이란 무엇입니까?
이것은 서로 다른 서비스의 개발자가 다른 사람들이 이해할 수 있는 형식으로 정보를 보낼 수 있도록 하는 합의된 규칙 집합이라고 합니다. 예를 들어 개발자가 브라우저에서 처리할 수 있는 표준 HTTP 프로토콜을 사용하여 정보를 전송하기 때문에 Google 크롬을 사용하여 Facebook과 Twitter에서 정보를 가져올 수 있습니다. 균일한 규칙은 서버 부분을 개발하는 사람들에게 매우 편리합니다. 정보를 변환하고 적절한 프로토콜을 사용하여 보낼 수 있는 많은 라이브러리가 있습니다. HTTP는 처음에 HTML 페이지를 전송하기 위한 프로토콜로 인식되었습니다. 그것이 오랫동안 사용되었던 방식이지만, 지금은 프로그래머들이 문자열과 미디어 파일을 모두 보내는 데 자주 사용합니다. 일반적으로 이 프로토콜은 보편적으로 수용되고 다재다능하며 사용하기 정말 쉽습니다. 이제 우리는 그것을 사용하는 방법을 조사할 것입니다.HTTP의 구조
HTTP 프로토콜은 텍스트로만 구성되어 있다는 점을 즉시 주목해야 합니다. 가장 흥미로운 것은 이 텍스트의 구조입니다. 각 메시지는 세 부분으로 구성됩니다.- 시작 라인 — 일부 관리 데이터를 정의합니다.
- 헤더 - 메시지 매개변수를 설명합니다.
- 본문 — 메시지의 내용입니다. 본문은 빈 줄로 헤더와 구분되어야 합니다.
간단한 HTTP 요청은 다음과 같습니다.
GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
시작 라인은 다음을 나타냅니다.
- GET — 요청 방법
- / — 요청 경로
- HTTP/1.1 — 프로토콜 버전
- 호스트 — 요청이 전달되는 호스트
- User-Agent — 요청을 보내는 클라이언트
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
여기서 codegym.cc 는 호스트이고 /send 는 요청의 경로이며 ? 쿼리 매개변수가 뒤따른다는 것을 나타내는 구분 기호입니다. 마지막에는 키-값 쌍("key=value")이 앰퍼샌드로 구분되어 나열됩니다. POST — 이 방법은 서버에 정보를 게시합니다. POST 요청은 "key=value" 쌍, JSON, HTML 코드 또는 파일과 같은 매개변수와 같은 다양한 종류의 정보를 보낼 수 있습니다. 모든 정보는 메시지 본문으로 전송됩니다. 예를 들어:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc
{
"Id": 12345,
"User": "John"
}
요청은 codegym.cc/user/create/json으로 전송되며 프로토콜 버전은 HTTP/1.1입니다. "수락"은 클라이언트가 받을 것으로 예상하는 응답 형식을 나타냅니다. "Content-Type"은 요청에서 보낸 메시지 본문의 형식을 나타냅니다. "Content-Length"는 본문의 문자 수입니다. HTTP 요청에는 다양한 헤더가 포함될 수 있습니다. 자세한 내용은 프로토콜 사양을 살펴보십시오 .
HTTP 응답
요청을 받은 후 서버는 이를 처리하고 클라이언트에 응답을 보냅니다.
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
응답의 시작 줄에는 프로토콜 버전(HTTP/1.1), 상태 코드(200) 및 상태 설명(OK)이 포함됩니다. 헤더에는 내용의 유형과 길이가 포함됩니다. 응답 본문에는 브라우저가 HTML 페이지로 렌더링하는 HTML 코드가 포함되어 있습니다.
응답 상태 코드
메시지 본문과 헤더에 관한 모든 것이 명확하지만 상태 코드에 대해 몇 마디 말해야 합니다. 응답 상태 코드는 항상 3자리입니다. 코드의 첫 번째 숫자는 응답 범주를 나타냅니다.- 1xx — 정보용. 요청이 접수되었습니다. 서버는 계속할 준비가 되었습니다.
- 2xx — 성공. 요청이 접수, 이해 및 처리되었습니다.
- 3xx — 리디렉션. 요청을 처리하려면 추가 작업을 수행해야 합니다.
- 4xx - 클라이언트 오류. 요청에 오류가 있거나 프로토콜을 준수하지 않습니다.
- 5xx - 서버 오류. 요청이 올바르게 작성되었지만 서버에서 처리할 수 없습니다.
- 200 OK - 요청이 수신되어 성공적으로 처리되었습니다.
- 201 생성됨 - 요청이 수신되고 성공적으로 처리되어 새 리소스 또는 인스턴스가 생성되었습니다.
- 301 Moved Permanently — 요청된 리소스가 영구적으로 이동되었습니다. 이에 대한 후속 요청은 새 주소를 사용해야 합니다.
- 307 임시 리디렉션 — 리소스가 일시적으로 이동되었습니다. 지금은 자동 전달을 사용하여 액세스할 수 있습니다.
- 403 금지됨 — 요청이 이해되었지만 인증이 필요합니다.
- 404 찾을 수 없음 — 서버가 이 주소에서 리소스를 찾지 못했습니다.
- 501 Not Implemented — 서버가 요청에 응답하는 데 필요한 기능을 지원하지 않습니다.
- 505 HTTP 버전이 지원되지 않음 - 서버가 지정된 버전의 HTTP 프로토콜을 지원하지 않습니다.
GO TO FULL VERSION