본문 바로가기
통신 및 네트워크 공부

프로토콜 - HTTP 에 대한 간단 정리

by khds 2022. 5. 7.

HTTP는 'HyperText Transfer Protocol'의 약자로 분산 하이퍼미디어 환경에서 빠르고 간편하게 데이터를 전송하는 프로토콜이다. 웹 개발을 하다 보면 클라이언트와 서버, 외부 API 등 통신을 하게 될 텐데 이는 모두 HTTP를 이용하여 데이터를 주고받는다고 할 수 있다.  HTTP는 80번 포트를 사용하도록 정의된다.

 

우리가 아는 일반적인 URL은 다음과 같다. http://www.korea.co.kr 에서 첫 번째 부분을 보면 http 하고 나와있다. 이는 사용하는 서비스 유형을 나타내는 것으로 HTTP를 사용하는 것을 알 수 있다. 만약 FTP 서버에 접근하려면 ftp://www.korea.co.kr, 텔넷 서버를 사용하려면 telnet://www.korea.co.kr 형식으로 표현한다.

HTTP 명령에 해당하는 HTTP 메서드를 이용하여 클라이언트가 서버에 요청하고, 서버는 클라이언트로 문서 정보를 회신한다. HTTP 메서드는 GET과 POST 등이 있다. 

 

클라이언트가 서버로 보내는 요청 메시지는 아래의 그림과 같이 요청라인 , 헤더, 공백 한 줄과 바디로 구성되어있다. 

 

출처: https://withbundo.blogspot.com/2017/07/http-10-http.html?m=1

 

요청 라인(Request Line)은 요청문이라고도 하고 요청 메서드, URL, HTTP 버전 세 부분으로 구성된다. 요청 메서드는 클라이언트가 서버에 실행을 요구하는 명령을 기술한다. 주요 명령은 아래와 같다. 

 

명령어 설명
GET 클라이언트가 서버에 URL이 가리키는 웹 문서의 내용을 전송하도록 요구한다. 문서 내용은 서버가 회신하는 응답 메시지의 바디에 포함된다. 
HEAD 문서 내용보다는 특정 문서의 정보를 원할 때 사용한다.
POST 클라이언트가 서버에 정보를 전송할 수 있도록 해준다. 보통 게시판, 방명록처럼 사용자가 입력한 정보를 서버에 전달하는 용도로 사용한다.
PUT 클라이언트가 서버에 문서를 전달하려고 사용한다. 문서 내용은 바디에 포함한다. 

 

 

아래는 클라이언트 요청 메시지의 예시이다.

 

GET /index.php HTTP/1.1  ---- 요청문
HOST: uu.ac.kr   ------------ 헤더
                  ----------- 공백 한 줄

 

 

위의 예시는 GET 을 요청 메서드로 사용하고 URL은 /undex.php, HTTP 버전은 HTTP/1.1이다. 헤더 정보의 Host: uu.ac.kr의 uu.ac.kr은 클라이언트가 요청하는 자원이 있는 서버의 주소이다. 즉, 위의 요청 메시지는 HTTP 서버 uu.ac.kr의 최상위 디렉터리 밑에 있는 index.php 파일의 전송을 요청하는 것이다. 

 

 

그렇다면 서버에서 클라이언트로 회신할 때의 응답 메시지는 어떻게 되있을까?

응답 메시지는 아래의 그림과 같이 상태 라인(상태문), 헤더, 공백 한 줄과 바디로 구성되어 있다.

 

출처: https://withbundo.blogspot.com/2017/07/http-10-http.html?m=1

 

상태 라인(Status Line)의 내용은 HTTP 버전, 상태 코드, 상태 이름 세 부분으로 구성된다. HTTP 버전은 요청 메시지와 의미가 같고, 상태 코드(status code)와 상태 이름은 일반 인터넷 응용 프로그램과 구조가 같다. 

아래는 HTTP에 정의된 주요 상태 코드이다. 

 

코드 이름 의미
200 OK 요청이 성공적으로 수행되었다.
202 Accepted 클라이언트의 요청을 수신하였으나, 즉각 실행되지 않고 있다. 
201 Created 요청이 성공적으로 처리되었으며, 자원이 생성되었다.
400 Bad Request 요청 메시지의 내용에 문법 오류가 존재한다. 
401 Unauthorized 요청을 실행하는 데 필요한 적절한 권한이 존재하지 않는다.
403 Forbidden 서비스 요청이 거부되었다.
404 Not Found 원하는 문서를 찾을 수 없다.
500 Internal Server Error 서버 내부에 불가피한 오류가 발생하였다.
501 Not Implemented 요청 사항을 수행할 수 없다.

 

 

아래는 응답 메시지의 예시이다.

 

출처: 쉽게 배우는 데이터 통신과 네트워크 - 박기현

 

 

상태 코드가 200이고 상태 이름이 OK인 걸로 보면 클라이언트의 요청이 성공적으로 수행되었음을 알 수 있다. 

 

 

출처

쉽게 배우는 데이터 통신과 네트워크 - 박기현 

https://www.google.com/search?q=http+%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8+%EC%9A%94%EC%B2%AD+%EB%A9%94%EC%8B%9C%EC%A7%80&client=ms-android-samsung-rvo1&source=android-browser&prmd=inv&sxsrf=ALiCzsaTlTNrTAbKO8Y7JH5ZSrN7D45O0A:1651929125672&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj6-ujFu833AhWBx4sBHQp2AxUQ_AUoAXoECAIQAQ&biw=726&bih=312&dpr=3 

 

http 클라이언트 요청 메시지 - Google 검색

분도랑: [HTTP 프로토콜 강좌]#10 HTTP... withbundo.blogspot.com

www.google.com

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

 

201 Created - HTTP | MDN

HTTP 201 Created는 요청이 성공적으로 처리되었으며, 자원이 생성되었음을 나타내는 성공 상태 응답 코드입니다.

developer.mozilla.org