상세 컨텐츠

본문 제목

HTTP란?

IT 지식

by 알유잡지 편집장 2020. 4. 19. 17:27

본문

728x90

 인터넷에서 자주 등장하고, 우리가 사용하는 통신 방법 중 가장 접근성이 뛰어난 기술이지만, 누군가 HTTP에 대해 물어보면 막상 대답하기가 어렵다. HTTP를 검색해 보면 대부분의 사람들이 인터넷에서 데이터를 주고받을 수 있는 프로토콜이라고 나와있지만 사실 일반적으로 받아들이기 쉽게 얘기하기 위해서 풀이한 내용일 것이다. 추가하자면 HTTP의 하이퍼텍스트의 기능은 문서에서 문서로 이동할 수 있는 기능을 가진 문서라고 보면된다. 자세한 내용은 밑에 정리해 두었다.

1. HTTP란?

 HyperText Transfer Protocol 약자이며, 하이퍼텍스트 문서를 교환하기 위하여 사용된 통신 규약이다. 

  • 하이퍼텍스트(HyperText) : 일반 텍스트와 달리 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서를 말한다. 일반 텍스트 문서는 정보를 순차적으로 인식하도록 나열되어 있지만, 하이퍼텍스트 문서는 사용자가 원하는 대로 쉽게 이동할 수 있도록 하이퍼링크(hyperlink)가 걸려 있다. 대표적인 하이퍼텍스트에는 HTML 문서가 있다. - 코인위키 -

  • Transfer : 이동하다.

  • Protocol : 통신규약

 

2. HTTP 통신

 Client에서 Server로 요청을하면, Server에서 응답을 Client에 보내는데, 여기서 말하는 Client는 사용자를 의미하기보다는 Server에 요청을 보내는 주체가 더 가깝다. 쉽게 생각하면 Browser라고 생각하면 쉽게 와 닿을 수 있다. 

Client와 Server의 통신

 

실제로 티스토리에 접속하면 어떤 데이터들을 주고 받는지 아래에서 확인할 수 있다.

티스토리 접속시 Request 와 Response

Request Header

  • GET / HTTP/1.1 : HTTP전송 방법과 프로토콜 버전

  • Host: 요청하는 서버 주소

  • User-Agent: OS/브라우저 정보

  • Accept: 클라이언트 이해 가능한 컨텐츠 타입

  • Accept-Language: 클라이언트 인식 언어

  • Accept-Encoding: 클라이언트 인코딩 방법

  • Connection: 전송 완료후 접속 유지 정보 (keep-alive)

  • Upgrade-Insecure-Requests:신호를 보낼때 데이터 암호화 여부

  • Content-Type: 클라이언트에게 반환되어야하는 컨텐츠 유형

  • Content-Length: 본문크기

Body

본문은 요청의 마지막 부분에 들어간다. 하지만 모든 요청에 본문이 들어가지는 않는다.
GET, HEAD, DELETE 처럼 리소스를 가져오는 요청은 보통 본문이 필요가 없기 때문에 Body가 없다.
반면, POST, PUT, PATCH은 업데이트를 위해 서버에 데이터를 전송하므로 Body가 존재한다.

Response Header

  • HTTP/1.1 200 ok : 프로토콜 버전과 응답상태
  • Access-Control-Allow-Origin: 서버에 타 사이트의 접근을 제한하는 방침
  • Connection: 전송 완료후 접속 유지 정보 (keep-alive)
  • Content-Encoding: 미디어 타입을 압축한 방법
  • Date: 헤더가 만들어진 시간
  • ETag: 버전의 리소스를 식별하는 식별자
  • Keep-Alive: 연결에대한 타임아웃과 요청 최대 개수 정보
  • Last-Modified: 웹 시간을 가지고 있다 수정되었을때만 데이터 변경 ( 캐시연관 )
  • Server: 웹서버로 사용되는 프로그램 이름
  • Set-Cookie: 쿠키 정보
  • Transfer-Encoding: 인코딩 형식 지정
  • X-Frame-Options: frame/iframe/object 허용 여부

Body

모든 응답에 본문이 들어가지는 않는다.
201, 204과 같은 상태 코드를 가진 응답에는 보통 본문이 없다.

 

 

3. Request Method 종류 ( 총 8가지 중 대표되는 4가지만 소개 )

  • GET : 요청받은 URI의 정보를 검색하여 응답한다.

  • POST : 요청된 자원을 생성(CREATE)한다. 새로 작성된 리소스인 경우 HTTP헤더 항목 Location : URI주소를 포함하여 응답한다.

  • PUT : POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메시지(데이터)가 함께 전송된다. 원격지 서버에 지정한 콘텐츠를 저장하기 위해 사용되며 홈페이지 변조에 많이 악용되고 있다.

  • DELETE : 원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT과는 반대 개념의 메소드이다.

 

4. HTTP 응답 ( Status Code )

  • 100  : Continue (클라이언트로 부터 일부 요청을 받았으며 나머지 정보를 계속 요청함)

  • 101 : Switching protocols

  • 200 : OK(요청이 성공적으로 수행되었음)

  • 201 : Created (PUT 메소드에 의해 원격지 서버에 파일 생성됨)

  • 202 : Accepted(웹 서버가 명령 수신함)

  • 203 : Non-authoritative information (서버가 클라이언트 요구 중 일부만 전송)

  • 204 : No content, (사용자 요구 처리하였으나 전송할 데이터가 없음)

  • 301 : Moved permanently (요구한 데이터를 변경된 타 URL에 요청함)

  • 302 : Not temporarily

  • 304 : Not modified (컴퓨터 로컬의 캐시 정보를 이용함, 대개 gif 등은 웹 서버에 요청하지 않음)

  • 400 : Bad request (사용자의 잘못된 요청을 처리할 수 없음)

  • 401 : Unauthorized (인증이 필요한 페이지를 요청한 경우)

  • 402 : Payment required(예약됨)

  • 403 : Forbidden (접근 금지, 디렉터리 리스팅 요청 및 관리자 페이지 접근 등을 차단)

  • 404 : Not found, (요청한 페이지 없음)

  • 405 : Method not allowed (혀용되지 않는 http method 사용함)

  • 407 : Proxy authentication required (프락시 인증 요구됨)

  • 408 : Request timeout (요청 시간 초과)

  • 410 : Gone (영구적으로 사용 금지)

  • 412 : Precondition failed (전체 조건 실패)

  • 414 : Request-URI too long (요청 URL 길이가 긴 경우임)

  • 500 : Internal server error (내부 서버 오류)

  • 501 : Not implemented (웹 서버가 처리할 수 없음)

  • 503 : Service unnailable (서비스 제공 불가)

  • 504 : Gateway timeout (게이트웨이 시간 초과)

  • 505 : HTTP version not supported (해당 http 버전 지원되지 않음)


5. 통신과정

HTTP 통신 과정

DNS란? IP 주소와 도메인명을 서로 교환하는 장치를 DNS(Domain Name System)이라 한다.

 

  1. Browser는 HTTP request 메세지를 만든다.

  2. DNS 서버에서 IP주소를 받아와서 해당 IP 주소에 전달한다.

  3. 프로토콜 스택은 메세지를 패킹에 저장한 뒤 LAN 어댑터를 통해 패킷을 LAN 케이블로 송출한다.

  4. LAN 어댑터가 송신한 패킷은 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착하고 인터넷에 들어간다.

  5. 패킷은 인터넷의 입구에 있는 통신회선에 의해 POP까지 운반된다.

  6. 이후 인터넷 핵심부로 들어가게 되고, 수 많은 라우터들 사이로 패킷이 목적지를 향해 들어간다.

  7. 패킷은 인터넷 핵심부를 통과하여 웹 서버측 LAN에 도착한다.

  8. 웹 서버의 방화벽이 도착한 패킷을 검사하고 패킷이 웹 서버까지 가야하는지 여부를 캐시 서버가 판단한다.

  9. 데이터 중 다시 사용할 데이터를 캐시 서버에 저장한다.

  10. 패킷이 물리적인 웹서버에 도착하면 웹서버의 프로토콜 스택은 패킷을 추출한다.

  11. 메세지를 복원해서 어플리케이션에 전달한다.

  12. 메세지를 받은 어플리케이션은 요청 메세지의 결과를 클라이언트로 회신한다.

  13. 응답 메세지가 클라이언트에게 전달된다.

 

 

728x90

'IT 지식' 카테고리의 다른 글

DNS란?  (0) 2020.04.21
API란 무엇일까?  (0) 2020.04.20
SSL(Secure Sockets Layer)이란?  (0) 2020.04.20
기본 게이트 웨이란?  (0) 2020.04.20
TCP/IP란 무엇이며 어떻게 작동하는가?  (0) 2020.04.20

관련글 더보기

댓글 영역