-
2023 - 07 - 16 HTTP 프로토콜Today I Learned/TIL 07 2023. 7. 18. 09:41
웹개발에서 서버와 유저(클라이언트)가 데이터를 주고받게 만드려면, 이는 요청(Request)와 응답(Response)로 이루어진다. 예를들어 고객이 인터넷쇼핑몰에서 상품을 산다면, 고객이 지불한 돈이 요청이고, 인터넷쇼핑몰이 보낸 상품이 응답이다.
HTTP통신의 특징
1. 요청과 응답 (Request - Response)
요청이 없다면 응답도 없다. 응답을 보낼 주소를 못찾기 때문이다. 1개의 request에는, 반드시 1개의 response만 존재한다.
2. 무상태 프로토콜 (Stateless)
HTTP프로토콜은 상태값을 갖고있지 않다. 고객이 주문을 할때, 주문에 대한 정보가 있어야한다. "주문"이라는 행위 자체는 상태가 없으므로 요청이 아니다.
3. 비연결성
고객이 상품을 주문하면, 쇼핑몰은 상품을 배송한다. 그리고 그 연결은 일회성으로 끝난다. 이게 HTTP의 비연결성이다. 쇼핑몰과 사용자은 1대1의 관계고, 다른 어떤것과도 관계가 얽혀있지 않으므로 한번에 하나의 주문처리만 가능해서 매우 빠른 주문처리가 가능하다.
하지만, 일대일의 관계이기 때문에 하나 요청하면 하나 응답하고, 길게 걸린다. 이런 비효율성을 개선하기 위한 것이 지속연결이다. 이를 위해 1.1버전 이후로는 "지속연결"이란 것을 만들었으며, 고객이 쇼핑몰에 "장바구니"를 이용해 여러가지 상품을 한번에 주문하고 동시에 받아 그 효율을 높였다. 즉,사용자의 모든 요청이 끝나기 전까지 서버에서는 사용자와의 연결을 유지한다.4. HTTP 메시지
HTTP는 HTML, TEXT, 이미지, 음성, 영상, 파일, Json, XML 등 모든 종류의 데이터를 주고받을 수 있다.
(1). 시작라인 -
요청(Request)할때: 메소드, url, http버전 (GET /kimbab?q=chamchi$sushi=matitta HTTP/1.1)
응답(Response)할때: HTTP버전, status코드, 코드이유 반환 (HTTP/1.1 200 OK)
(2). HTTP 헤더 - 메시지에 필요한 모든 부가정보 (body의 크기, 내용, 압축, 인증, 클라이언트 정보, 현재시간, url, ip, (내가 넣고싶은 내용도 추가 가능) 등)이 담긴다.
(3). HTTP 바디 - 실제 전송할 데이터 (HTML, TEXT, 이미지, 음성, 영상, 파일, Json, XML ..)Status 코드와 메소드
5. 단순함, 확장 가능성
다른 프로토콜에 비해, 연결이 단순하고 메세지도 단순함. 단순하기때문에 개발과 확장이 쉽고, 유연한 대처가 가능하다.
'Today I Learned > TIL 07' 카테고리의 다른 글
2023 - 07 - 18 타입스크립트 TypeScript의 장점, 자바스크립트의 약점 보완, 객체지향 프로그래밍 OOP (0) 2023.07.25 2023 - 07 - 17 AXIOS (0) 2023.07.20 2023 - 07 - 15 쿼리문 Query - 테이블 생성, 수정, 삭제, 조회 (0) 2023.07.18 2023 - 07 - 14 쿼리문 Query - 데이터 생성, 수정, 삭제, 조회 (0) 2023.07.18 2023 - 07 - 13 쿼리문 Query 컬럼 (column, field) 생성, 추가, 수정, 삭제 (1) 2023.07.13