1 . HTTP란?
- HTTP는 Hyper Text Transfer Protocal의 약자로 웹 서버와 웹 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신 방식으로, TCP/IP프로토콜 위에서 작동한다. 이말은 즉슨 웹 서버, 클라이언트 모두 TCP/IP 작동의 필수요소인 IP주소가 필요하다는것을 의미한다.
- HTTP는 이름부터 Hyper Text Transfer Protocal인 만큼 Hypertext만 전송 가능한거 아닌가 라는 생각이 들수 있는데, HTML, XML과 같이 하이퍼텍스트 뿐만 아니라, 이미지 자바스크립트 pdf등등 pc내에서 다룰수 있는 데이터모두를 전송할 수 있다.
2 . HTTP 메세지
- HTTP 메세지는 크게 두가지가 존재한다
- Client -> Server (Request)
- Server -> Client(Response)
- HTTP 메세지의 이 2가지 모두 공통적인 구조는 다음과 같다.
HTTP 메세지는 기본적으로 다음과 같은 형태를 가지고 있다. 위의 요청라인을 여기선 스타트 라인이라고 명칭하겠다. 스타트라인의 명칭은 상황에 따라서 다르다. Client -> Server 인 경우에는 요청라인(Request Line)이라고 명칭하며, Server -> Client 인 경우에는 상태라인(Status Line)이라고 부른다. 헤더와 바디 사이의 공백은 헤더와 바디를 구분해 주기 위해서 존재하며, 헤더와 바디는 생략할 수 있다.
위의 사진을 보자. Client Request의 스타트 라인을 보면 요청방식(Get), 요청 URL(index.html), 프로토콜 버전(HTTP/1.0) 순서로 구성이 된다. 반대로 Server Response의 스타트 라인을 보면 프로토콜 버전(HTTP/1.0), 상태코드(200), 상태 텍스트(OK) 로 구성이 된다. 상태코드 200, 상태텍스트 OK가 나왔다는 것은 요청이 잘 처리되었음을 의미한다.
3 . HTTP 처리방식
클라이언트가 서버에게 원하는 처리방식을 알려주기 위해서는 HTTP 메소드를 통해서 판별이 된다. 메소드들은 다음과 같이 8가지가 있으며, 기본적인 데이터 조작인 CRUD(Create, Read, Update, Delete)는 어떤 메소드들과 연결되는지 살펴보자(이 8가지의 메소드들중 가장 많이 쓰는것은 GET,POST,PUT,DELETE 이다.)
메소드명 | 의미 | CRUD매핑 |
GET | 리소스 취득 | Read(데이터 조회) |
POST | 리소스 생성, 리소스 데이터 추가 | Create(데이터 생성) |
PUT | 리소스 변경 | Update(데이터 변경) |
DELETE | 리소스 삭제 | Delete(데이터 삭제) |
HEAD | 리소스 헤더( = 메타데이터) 취득 | |
OPTIONS | 리소스 서포팅 메소드 취득 | |
TRACE | 루프백 시험에 사용 | |
CONNECT | 프록시 동작의 터널 접속 변경 |
GET : GET 방식은 지정한 URL의 정보를 가져오는 메소드이다. 서버로부터 이미지, 비디오, 웹페이지의 정보를 가져오기 위해 GET을 사용하게 된다.
POST : POST는 리소스를 생성하기 위해 쓰이는 메소드이다. 블로그에 글을 작성하는것 또한 POST 메소드가 사용된다.
PUT : PUT은 리소스를 변경하는데 사용한다. 예를 들면 기존에 올렸던 블로그의 글을 수정하는것을 예시로 들 수 있다.
DELETE : DELETE는 리소스를 삭제하는 메소드이다.
4 . HTTP 상태코드
아까 위의 예시에서 200 OK 는 request가 정상적으로 잘 처리된것이라는 의미가 있다고 설명하였다. HTTP의 상태코드는 100,200,300,400,500번대의 상태코드들이 있다.
메소드명 | 의미 |
1xx | Informational |
2xx | Success |
3xx | Redirection |
4xx | Client Error |
5xx | Server Error |
자세한건 아래 표를 참조하자
'Back-End > Theory' 카테고리의 다른 글
웹 애플리케이션 서버 (0) | 2022.01.22 |
---|---|
GET요청과 POST요청의 차이점 (0) | 2020.01.13 |
URL 설계 (0) | 2020.01.13 |