💡 서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜, HTTP
HTTP는 HyperText Transfer Protocol의 약자예요. 이름만 들으면 뭔지 잘 모르겠지만, 어딘가 낯이 익지 않나요?
제 블로그 주소인 https://velog.io/@dayo____me 앞에도 https가 붙어있죠? 이렇게 우리 사용하는 웹 사이트 모든 곳에는 http가 사용되고 있습니다.
물론 https와 http는 차이점이 있지만, 그건 다음 포스팅에 조금 더 다뤄보기로 할게요.
예를 들어 우리가 컴퓨터와 전화를 한다고 가정해봅시다. 원활한 대화를 위해서 지켜야 할 사항이 몇 가지 있습니다.
첫 번째로, 우리는 서로 알아들을 수 있는 말을 사용해야 해요.
예를 들어, 컴퓨터가 우리에게 전화해서 냅다 모르는 외국어로 말을 건다면 당황스럽겠죠? 적어도 무슨 언어인지 얘기해줘야 번역기라도 돌려볼 수 있을 거에요. 우리도 컴퓨터가 당황스럽지 않게, '나 지금부터 한국어로 얘기할거야!' 라고 먼저 말해줘야 하는거죠.
두 번째로, 한쪽이 말할 때 다른 쪽은 들을 수 있어야 해요. 둘 다 말하거나 조용히 있으면 대화가 이어질 수 없겠죠? 또, 전화 연결이 끊어지면 더 이상 대화를 이어갈 수 없을 겁니다.
이처럼 웹 브라우저와 웹 서버가 우리 앞으로 통신할 때 이렇게 하자~ 하고 정해놓은 규약이 바로 HTTP 입니다.
클라이언트(웹 브라우저)에서 통신을 시작할 때 '나 지금부터 HTTP로 보낼거야! 이런 이런거 보내줘' 라고 말하면, 서버에서는 전에 정해놓은 약속대로 '아 ㅇㅋㅇㅋ 알아들었어 그럼 나 이런이런 응답줄게' 라고 대답하도록요!
여러분이 인터넷을 통해 WWW(World Wide Web) 서비스를 이용한다면, HTTP를 지키면서 사용해야 합니다.
그럼, HTTP로 요청을 보낼 때 클라이언트는 어떤 형식을 지키는지 더 자세히 살펴봅시다.
GET /images/logo.gif HTTP/1.1
Host: www.just-developer.tistory.com
Accept-Language: en
field1=value1&field2=value2
메서드명 | 설명 |
---|---|
GET | 정보를 요청하기 위해서 사용(SELECT) |
POST | 정보를 밀어넣기 위해서 사용(INSERT) |
PUT | 정보를 업데이트하기 위해서 사용(UPDATE) |
DELETE | 정보를 삭제하기 위해서 사용(DELETE) |
HEAD | (HTTP)헤더 정보만 요청 해당 자원이 존재하는지, 혹은 서버에 문제가 없는지를 확인하기 위해서 사용 |
OPTIONS | 웹서버가 지원하는 메서드의 종류를 요청 |
TRACE | 클라이언트의 요청을 그대로 반환 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용 |
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
Hello World, this is a very simple HTML document.
</body>
</html>
응답 코드는 종류가 굉장히 많지만, 우리가 상대적으로 자주 접할 수 있는 코드들만 모아보았습니다.
코드 | 메시지 | 설명 |
---|---|---|
200 | OK | 오류 없이 전송 성공 |
400 | Bad Request | 요청 실패 |
404 | Not Found | 문서를 찾을 수 없음 |
500 | Internal Server Error | 서버 내부 오류 |
502 | Bad gateway | 게이트웨이 상태 나쁨 |
우리가 웹 사이트에 접속하고, 사이트에 있는 특정 버튼이나 링크를 누르면 브라우저 상단의 주소창에 있는 문자가 변하는 걸 볼 수 있습니다. 이걸 URL이라고 하는데요, 이는 인터넷 상의 자원의 위치를 의미합니다.
URL의 형식을 그림으로 표현하면 위와 같습니다. (출처: https://en.wikipedia.org/wiki/URL)
1. scheme(protocol)
https://velog.io/write?id=851c0a73-ab93-47f7-ac7f-3431151917ed
저는 지금 https 프로토콜을 사용해서 접근하고 있고, velog.io 라는 도메인에서 /write 라는 경로에서 id가 851c0a73-ab93-47f7-ac7f-3431151917ed인 페이지를 불러오고 있네요.
보통 위 그림과 같은 경로를 모두 사용하는 경우는 드뭅니다.
저는 protocol://host/path 혹은 protocol://host/path/query 구조로 된 URL를 더 자주 접할 수 있던 것 같습니다.
https://ko.wikipedia.org/wiki/HTTP
좋은 글 감사합니다!