잉아당 2022. 9. 18. 18:06
728x90

- HTTP(HyperText Transfer Protocol)

거의 모든 것을 HTTP를 사용

1.1 버전을 주로 사용함

TCP : 1.1, 2

UDP : 3

 

<특징>

- 클라이언트 서버구조

Request, Response 구조

클라이언트는 서버에 요청을 보내고 응답을 대기 

서버가 요청에 대한 결과를 만들어서 응답

 

- 무상태 프로토콜(Stateless)

서버가 클라이언트의 상태를 보존 X

그전에 어떤 요청을 보냈는지 기억하지 않음

 

장점 : 서버 확장성 높음(Scale out) => 수평적으로 서버증설(여러대 서버를 둠)

단점 : 클라이언트가 추가 데이터 전송

sateless 예시

반대의 개념으로 상태유지(Stateful)가 있음

그 전의 요청을 기억하고 있는 것을 말함

응답서버가 바뀌면 안됨(항상 같은 서버 유지)

상태 유지는 최소한만 사용

stateful 예시

- 비연결성

<연결성과의 차이>

연결성의 경우 클라이언트가 놀고 있어도 서버 자원을 소모해야하는 단점을 가지고 있음

비연결성의 경우 연결 요청때만 연결되기 때문에 최소한의 자원 유지가 가능

 

<장점>

HTTP는 기본적으로 연결을 유지 하지 않음

최소한 자원을 사용

 

<단점>

TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가

웹사이트의 경우 다양한 JS, CSS 등 수많은 자원 다운

 

지속 연결로 해당 단점을 극복

=> 필요한 자원을 모두 받을 때 까지 지속적으로 연결

 

최대한 스테이트리스로 개발

ex) 처음에 정적 페이지를 두고 해당 페이지에서 어떠한 액션을 취하게 해서 대용량 트래픽 처리를 주로 함

 

- HTTP메시지

HTTP 메시지 구조

 

HTTP 요청메시지

<시작 라인>

#HTTP메서드

GET,POST,PUT ...

서버가 수행해야 할 동작 지정

GET : 리소스 조회

POST: 요청 내역 처리

 

#요청대상

절대경로 : "/"로 시작하는 경로

쿼리 : "?"로 시작

 

#HTTP Version

 

<Header>

전송에 필요한 모든 부가정보가 들어감

필요시 임의의 헤더 추가 가능

 

 

HTTP 응답메시지

<시작라인>

#HTTP Version

 

#HTTP 상태코드

요청 성공 혹은 실패를 나타냄 

ex)

200 : 성공

400 : 클라이언트 요청 오류

500 : 서버 내부 오류

 

#이유문구

사람이 이해할 수 있는 설명 글

 

<Header>

전송에 필요한 모든 부가정보가 들어감

필요시 임의의 헤더 추가 가능

 

<message body>

실제 전송할 데이터 

모든 데이터 전송 가능

 

 

출처 : https://www.inflearn.com/course/http-웹-네트워크