개발일지/JSP

HTTP 프로토콜

연습용365 2021. 11. 23. 12:42

 HTTP 프로토콜 


- 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜

 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동함

- HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계 돼 있음

- 문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러 종류를 보낼 수 있다.

- 하이퍼텍스트(Hypertext) 기반 데이터를 전송하겠다(Transfer) = 링크 기반으로 데이터에 접속

 

작동방식

- HTTP는 서버/클라이언트 모델을 따름

- 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)

 

 

 클라이언트 

- 서버에 요청하는 클라이언트 소프트웨어(IE, Chrome 등의 브라우저)가 설치된 컴퓨터를 이용

- 클라이언트는 URI을 이용해 서버에 접속하고 데이터를 요청함

 

 서버 

- 클라이언트의 요청을 받아 해석하고, 응답하는 소프트웨어가 설치된 컴퓨터(Apache, nginx, IS, lighttpd) 등이 서버 소프트웨어임

- 웹서버는 보통 표준 포트인 80번 포트로 서비스함

 

 

ex)

- 크롬을 통해서 local:8088을 눌렀을 때 크롬은 클라이언트가 되고 8088 port를 통해서 들어오는 WAS는 서버가 됨

- 웹서버는 보통 표준 포트인 80번 포트로 서비스를 하고 있음

- 포트 번호를 바꾼 경우는 다른 서버가 이미 깔려 있을 때 충돌을 일으키지 않기 위해서 바꿔주는 것이다. 예를들면 내가 오라클을 8080서버로 사용하고 있으니까 충돌이 일어나지 않게 하려면 8088로 바꿔주는 것!

- 웹서버에서 서버프로그램을 호출하면 WAS가 가운데서 호출을 받아 웹서버에 넘겨준다.

 

 

 메서드 

메서드는 요청의 종류를 서버에게 알려주기 위해 사용

GET - 정보 요청 (SELECT)

POST - 정보를 밀어넣기 위해 사용 (INSERT)

PUT - 정보 업데이트 (UPDATE)

DELETE - 삭제 (DELETE)

 

 

HEAD : (HTTP)헤더 정보만 요청. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용

OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청

TRACE : 클라이언트 요청을 그대로 반환

ex) echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용

 

각 용도에 맞는 메서드가 준비 돼 있어도 GET/POST 만으로도 모든 종류의 요청을 표현할 수 있다!

 

요청 데이터 포맷

1. 요청 메서드 : GET, PUT, POST, PUSH, OPTIONS

2. 요청 URI : 요청하는 자원의 

3. HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전

 


 

응답헤더 포맷

프로토콜과 응답코드 : (HTTP/1.1 200 OK)

날짜 : ( Date: Sun, 12 Aug 2018 11:30:00 GMT )

서버 프로그램 및 스크립트 정보 : (Apache/2.24 Unix PHP/5.2.0)

응답헤더에는 다양한 정보를 추가할 수 있다.

컨텐츠의 마지막 수정일

캐쉬 제어 방식. 컨텐츠의 길이. Keep Alive 기능 설정

 

 

 응답코드 

- 2xx 성공 : 서버가 요청을 성공적으로 처리

 

- 4xx 요청오류 : 클라이언트 요청에 오류

코드번호 설명 비고
400 잘못된 요청 주로 헤더 포맷이 HTTP 규약에 맞지 않을 경우
403 금지 서버가 요청을 거부하고 있음
404 찾을 수 없음 요청한 자원이 서버에 존재하지 않음

 

★ 5xx 오류 : 서버쪽 오류

DB에서 셀렉을 해야하는데 해당 정보가 없어서(예외처리x) 오류가 발생한다.