HTTP
: Hyper Text Transfer Protocol
: 브라우저와 서버가 통신할 수 있도록 만들어주는 여러가지 프로토콜 중 하나
: 인터넷에서 웹 브라우저와 웹 서버 사이에 HTML문서(데이터)를 주고 받는 데 쓰이는 통신 프로토콜
: 일반적으로 전송 계층 프로토콜로 TCP를 사용, 네트워크 계층 프로토콜로 IP를 사용한다.
: TCP/IP에서는 IP 주소를 사용해서 통신할 컴퓨터를 결정, 포트 번호를 사용해서 해당 컴퓨터의 어떤 프로그램과 통신할 지 결정(기본적으로 80번 포트 사용)
1.동작 방식
클라이언트는 요청(Request)을 보내고, 서버는 요청에 대한 응답(Response)를 보냄으로써 통신
connect
: 클라이언트가 원하는 서버와 연결을 맺는다. 이 때 TCP를 이용하여 연결을 맺는다.
: TCP 연결은 요청을 보내거나 받는데 사용하며, 새 연결을 시도하거나 기존 연결을 재사용할 수 있다.
Request
: 클라이언트가 서버에 요청
: 요청에 대한 정보를 HTTP 메세지로 전송한다.
Response
: 서버가 요청에 대한 응답 결과를 클라이언트에게 보낸다.
Close
: 응답이 끝나면 서버와 클라이언트의 연결을 끊는다.(다른 요청을 위해 재사용할 수 있다.)
2.HTTP 특성
* 비연결성(Connectionless)
: 클라이언트와 서버가 한 번 연결을 맺은 후 클라이언트의 요청에 대한 서버가 응답을 마치면 연결을 끊는다.
: 서버는 다수의 클라이언트와 연결을 지속 시 많은 리소스가 발생하게 된다. 따라서 서버가 응답을 마친 후 연결을 끊어 연결 유지에 필요한 리소스를 줄이고 더 많은 연결을 할 수 있게 된다.
: 하지만 서버가 클라이언트를 기억하지 못해 모든 요청에 대해 매번 새로운 연결을 해야 하는 일이 발생한다.
: 이렇게 되면 연결 해제에 대한 오버헤드가 많이 발생하게 되는데, 이를 해결하기 위해 Keep Alive를 사용
: 클라이언트와 서버 사이 상대방의 안부를 묻기 위해 packet을 주기적으로 보낸다. 만약 packet에 대한 반응이 없으면 접속을 끊는다.
: 이 방법 역시 주기적으로 패킷을 보내며 확인해야 하기 때문에 서버가 바쁜 상황에서도 process 수가 늘어나고 keep alive를 유지하기 위한 메모리가 많아져 주의해야한다.
*무상태성(StateLess)
:HTTP의 비연결성 특성으로 인해 서버가 두 요청 간의 어더한 데이터도 유지하지 않는다.
:따라서 서버는 클라이언트를 식별하지 못한다. 그래서 쿠키와 세션을 사용
:하지만 이 방법들은 데이터를 안전하게 저장하지 않아 데이터를 안전하게 보호해야하는 경우에는 토큰을 사용해야 한다.
HTTP메서드
:HTTP에서 요청을 전송할 때, HTTP Method를 포함하여 전송
: 어떠한 기능을 수행할 것인지에 대한 부가적인 설명을 하는 역할
GET | - 특정 리소스를 검색 및 취득 - 요청 시 전송하는 데이터를 URI의 Query Parameters 형태로 포함 |
POST | - 새로운 리소스를 생성 - 서버측의 상태 변화를 유발 - 요청 시 전송하는 데이터를 HTTP Body에 포함 |
PUT | - 리소스의 내용 수정 및 생성 |
DELETE | - 리소스 삭제 |
PATCH | - 리소스를 부분적으로 수정 |
TRACE | - 요청 리소스가 수신되는 경로를 확인 |
OPTION | - 서버측이 제공하는 HTTP Method의 종류에 대해 질의할 때 사용 - 응답의 Allow 헤더에 사용가능한 HTTP Method의 종류가 포함됨 |
HEAD | - 특정 리소스를 GET 메서드로 요청했을 때 반환되는 헤더를 요청할 때 사용 - HTTP 헤더만을 원할 때 사용하므로 응답에 HTTP Body가 없음 |
CONNECT | - 요청한 리소스에 대한 양방향 연결을 시작하기 위해 사용 - 원하는 목저지와의 TCP 연결을 HTTP 프록시 서버에 요청 |
'네트워크' 카테고리의 다른 글
[네트워크]HTTP / HTTPS 차이 (0) | 2023.08.10 |
---|---|
[네트워크]HTTP 상태 코드 (0) | 2023.08.10 |
[네크워크]GET과 POST차이 (0) | 2023.08.10 |
[네트워크]web browser,IP, proxy,port (0) | 2023.03.30 |
[네트워크]HTTP + 보안 1 (1) | 2023.03.29 |