모든 것이 HTTP
HTTP 메세지에 모든 것을 전송한다.
HTML, JSON 등 거의 모든 형태의 데이터를 전송 가능하다
우리가 주로 사용하는 것은 HTTP/1.1 버전이다.
현재 HTTP2, 3이 나왔다.
HTTP/1.1, HTTP/2는 TCP를 사용하고, HTTP3은 UDP를 사용한다.
HTTP 특징
- 클라이언트 서버 구조
- 무상태 프로토콜, 비연결성
- HTTP 메시지
- 단순함, 확장가능
클라이언트 서버 구조
Request, Response 구조
클라이언트는 서버에 요청을 보내고, 응답을 대기
서버가 요청에 대한 결과를 만들어서 응답
-> 서로 독립적으로 움직인다는 장점이 있다.
Stateful, Stateless 차이
상태유지
상태유지는 위와 같이 점원(서버)가 클라이언트의 정보를 기억한다.
-> 중간에 점원이 바뀌면 안된다.
무상태
위와 같이 점원(서버)가 클라이언트의 정보를 기억하지 못한다. 따라서 클라이언트가 모든 정보를 그때그때 전달한다.
-> 중간에 다른 점원으로 바뀌어도 된다.
무상태는 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다는 장점이 있다.
만약 상태유지라면 한 서버가 망가지면 다른 서버로 대체할 수 없다.
하지만 무상태면 이와 같이 같은 기능을 하는 서버군을 둘 수 있다는 장점이 있다.
선착순 이벤트, 학과 수업 등록 등 한번에 많은 사람의 요청이 오면 서버를 더욱 많이 유지해야한다.
이때 stateless로 만들어야 서버를 자유롭게 늘릴 수 있다.
실무한계
모든 것을 무상태로 설계할 수 없다.
로그인의 경우 로그인 했다는 상태를 서버에 유지해야한다.
일반젇그로는 브라우저 쿠키와 서버 세션 등을 사용해서 상태를 유지한다.
-> 상태 유지는 최소한만 사용해아한다.
비연결성
연결을 유지하는 모델은 위와 같이 클라이언트와 요청과 응답을 주고받을 때 연결을 유지한다
하지만 연결을 유지하지 않는 모델은 요청과 응답이 한번 끝나면 연결을 종료한다
HTTP는 기본적으로 연결을 유지하지 않는다.
1시간동안 수천명이 서비스를 사용해도 실제 서버에 동시에 처리하는 요청은 수십개 이하이디.
(예를 들어 검색을 한 후 한참 검색한 결과를 본다 -> 요청을 항상 하는게 아니다.)
한계점도 존재한다.
할때마다 3 way handshake 시간이 추가된다.
또한 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 이미지 등 수많은 자원들이 함께 다운로드된다.
이 때 이처럼 하나하나 연결하고 종료하기를 반복하면 시간이 오래걸리고 비효율적이다.
하지만 위와 같이 지속연결을 쓴다면 시간이 훨씬 줄어든다는 것을 알 수 있다.
HTTP 메세지
HTTP 요청 메시지는 이렇다.
요청 메세지도 바디 본문을 가질 수 있다.
이건 응답메시지이다.
이렇게 HTTP 메시지는 시작라인, 헤더, 공백라인, 바디로 나뉜다.
요청메시지
요청 메세지의 시작 라인은 이렇다.
HTTP 메서드 요청대상 HTTP Version
HTTP 메서드는 GET, PUT 등 서버가 수행해야 할 동작을 지정한다.
요청 대상은 절대경로(/로 시작)를 사용한다.
응답메시지
응답 메세지의 시작라인에는 HTTP 버전, HTTP 상태코드, 이유문구가 있다.
이 부분이 HTTP 헤더인데, 이는 HTTP 전송에 필요한 모든 부가정보이다.
필드명:정보
이런식으로 구성되고, 필요하면 더 추가할 수 있다.
body는 실제 전송할 데이터이다. HTML, 이미지, 영상 등등 byte로 표현할 수 있는 모든 데이터를 전송 가능하다
HTTP는 단순하다. 그래서 성공했다!
출처
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 강의 | 김영한 - 인프런
김영한 | , [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 로드맵을 먼저 확인해주세요. (바
www.inflearn.com
'CSE > 네트워크' 카테고리의 다른 글
[네트워크] HTTP 상태코드 (1) | 2025.03.28 |
---|---|
[네트워크] HTTP 메서드 활용 (2) | 2025.03.28 |
[네트워크] HTTP 메서드 (3) | 2025.03.27 |
[네트워크] URI와 웹 브라우저 요청 흐름 (4) | 2025.03.18 |
[네트워크] 인터넷 네트워크 (2) | 2025.03.18 |