본문 바로가기

Java

TechStudty -03 HTTP 프로토콜이란?

1. HTTP 프로토콜이란?

- www(world wide web)상에서 데이터를 주고 받기 위한 프로토콜이다.
- 서버/클라이언트 모델을 따른다.
- 애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동한다.
- 어떤 종류의 데이터든지 전송할 수 있도록 설계되어있다. (html 문서, 이미지, 동영상 , 오디오, 텍스트 문서 등등)

2. 작동방식?

- 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)한다.
- 클라이언트 : 서버에 요청하는 클라이언트 소프트웨어가 설치된 컴퓨터
- 서버 : 클라이언트의 요청을 받아서 요청을 해석하고 응답을 하는 소프트웨어가 설치된 컴퓨터 (Apache, nginx, IIS, lighttpd 등)
- 보통 표준 포트인 80번 포트로 서비스한다. 

3. Connectless & Stateless?

- HTTP는 Connectless 방식으로 동작한다. 서버에 연결하고 요청해서 응답을 받으면 끊어버린다. 기본적으로 자원하나에 대해서 하나의 연결을 만든다. 
- 장점은 불특정 다수를 대상으로 하는 서비스에 적합한 방식이라는 점이다. 이유는 수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에 더 많은 유저의 요청을 받아들일 수 있다.
- 단점은 한 번 연결을 하면 끊어버리기 때문에 그 전 클라이언트의 상태를 알 수 없다는 점이다.(stateless) Connectless로 부터 파생되는 문제라고 볼 수 있다. 이런 문제를 해결하기 위해 HTTP는 cookie를 사용하고 있다. 

4. Method?

- 요청의 정보를 서버에게 알려주기 위해서 사용된다.
- 종류 
- GET : 정보를 요청하기 위해서 사용한다.(SELECT)
- POST : 정보를 밀어넣기 위해서 사용한다.(INSERT)
- PUT : 정보를 업데이트하기 위해서 사용한다.(UPDATE)
- DELETE : 정보를 삭제하기 위해서 사용한다.(DELETE)
- HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
- OPTIONS : 웹 서버가 지원하는 메서드의 종류를 요청한다.
- TRACE : 클라이언트의 요청을 그대로 반환한다. 
- 보통 웹서비스들은 GET 과 POST만을 이용해서 개발한다. 각 용도에 맞는 메서드가 준비돼 있음에도 이렇게 사용하는 이유는 GET과 POST만으로도 모든 종류의 요청을 표현할 수 있고, 개발하기 편하기 때문이고 또 웹 브라우저로 DELETE, HEAD등을 보내는 form이 없기 때문이다.

이렇게 명시적으로 메서드를 사용하지 않아도 웹 서비스 개발에 큰 문제는 없지만, 가능하면 CRUD[2] 를 명시하는게 좋지 않을까 ?그렇다. Restful API 서버의 경우에는 GET, POST, DELETE, PUT을 명시적으로 구분한다. 자원의 위치 뿐만 아니라 자원에 할 일 까지 명확히 명시할 수 있기 때문에, Open API 서버를 만들기 위해서 널리 사용한다. 아래는 사용 예다.
한 눈에 쏙 들어온다.


4. 요약

- 인터넷 상에서 데이터를 주고 받기 위한 프로토콜이다. 서버/ 클라이언트 모델을 따른다. 어떤 종류의 데이터든지 전송할 수 있다. 

5. 출처 

https://www.joinc.co.kr/w/Site/Network_Programing/AdvancedComm/HTTP



'Java' 카테고리의 다른 글

StringBuffer, StringBuilder 비교  (0) 2019.05.29
스프링 입문을 위한 자바 객체 지향의 원리와 이해 -1장  (0) 2019.05.28
TechStudy - 01.OOP란 ?  (0) 2019.03.06
제네릭  (0) 2019.02.10
Class.forName()의 동작 원리  (0) 2019.01.23