반응형
HTTP기본
HTTP
기반 프로토콜
- TCP : HTTP/1.1 , HTTP/2
- UDP : HTTP/3
- 현재 HTTP/1.1주로 사용
HTTP 특징
- 클라이언트 서버 구죠
- 무상태 프로토콜 . 비연결성
- HTTP 메세지
- 단순함, 확장가능
클라이언트 서버 구조
- Request Response 구조
- 클라이언트는 서버에 요청을 보내고 응답대기
- 서버가 요청에 대한 결과를 만들어서 응답
클라이언트/서버를 분리하는게 중요하다.
무상태 프로토콜 (staeless)
stateful , stateless 차이
stateful
- 서버가 이전 상태를 보존한다.
- 서버가 장애가 나면? 클라이언트는 처음부터 다시 시작해야한다.
stateless
- 서버가 이전상태를 보존하지 않는다.
- 서버가(고객이) 필요한 데이터를 그떄그때 넘겨준다.
- 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다.
- 응답서버를 쉽게 바꿀 수 있다.(무한한 서버 증설 가능)- 스케일아웃
- 서버1,2,3중 아무거나 선택해서 요청하면 응답할수있다.
비연결성
- HTTP는 기본이 연결을 유지하지 않는 모델
- 일반적으로 초 단위의 이하의 빠른 속도로 응답
- 서버자원을 효율적으로 사용할 수 있음
- 수천명이 서비스를 사용해도 > 서버에서 동시에 처리하는 요청은 수십개 이하로 작음
한계와 극복
- TCP/IP연결을 새로 맺어야한다. 3way handshake시간 추가
- 웹즈라우저 사이트 요청하면 HTML, JS, css등 수많은 자원이 함께 다운로드
- HTTP지속연결로 문제 해결
- HTTP/2 , /3에서 많은 최적화
HTTP초기
연결 > html 응답 < 종료
연결 > js 응답 < 종료
연결 >이미지 응답 < 종료
HTTP 지속연결
연결> html응답 < js 응답<이미징 응답<종료
HTTP메세지
메세지 구조
start -line 시작라인 |
header 헤더 |
empty line 공백라인(CRLF) |
message body |
요청 메세지 , 응답 메세지
요청 메세지
start -line 시작라인
- get/post등 method , path(절대경로 / 로시작하는 경로) , version 이 들어간다.
응답 메세지
start -line 시작라인
- HTTP 버전, 상태 코드
- 상태 코드400클라이언트 오류
- 500 서버 내부 오류
- 200성공
헤더
- file name:
- 용도 : HTTP 전송에 필요한 모든 부가정보가 다 들어가있다.
- html, xml 설명 , body 크기 압축 유무 인증정보 웹브라우저 유무 , 서버 애플리케이션 캐시 등등 바디 빼고 메타정보 다들어있다.
메세지 바디
- 실제 전송할 데이터
- 단순하지만 확장 가능한 HTTP
HTTP 메서드
Get
- 리소스 조회
- 쿼리 스트링을 통해서 전달
- 메세지 바디를 통해서 데이터전달하지만 지원하지 않는 곳이 많음
Post
- 요청 데이터 처리
- 메세지 바디를 통해 서버로 요청 데이터 전달
- 신규 리소스 등록 변경된 프로세스 처리
- 대상 리소스가 리소스의 고유한 의미 체계에 따라 요청에 포함된 표현을 처리하도록 요청함
- 새 리소스 생성 / 요청 데이터 처리 (프로세스를 처리)
put
- 리소스 대체
- 있으면 대체 / 없으면 생성 / 덮어버림 , 완전 대체한다.
- 클라이언트가 리소스 위치를 알고 URI를 지정한다.
- member/100 에다 리소스를 보낼거야!
Patch
- 리소스 부분 변경
Delete
- 리소스 제거
HTTP 메서드 속성
안전
호출해도 리소스를 변경하지 않는다.
멱등
한번 호출하던 두번호출하던 100번호출하던 결과가 똑같다.
(외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다.)
캐시가능
응답 결과 리소스를 캐시해서 사용해도 되는가?
HTTP 상태코드
1xx : 요청이 수신되어서 처리중
2xx : 요청 정상처리
3xx: 요청을 완료하려면 추가 행동이 필요
4xx : 클라이언트 오류 잘못된 문법으로 서버가 요청 처리 x
5xx : 서버 오류 , 서버가 정상 요청을 처리하지 못함
401 Unauthorized > 인증이 필요함
403 Forbidden 서버가 요청을 이해했지만 승인을 거부함
404 Not Found 요청 리소스를 찾을 수없음
500 Internal Server Error 서버 문제로 오류 발생
503 Service Unavailable 서비스 이용불가
반응형
'CS > 네트워크' 카테고리의 다른 글
쿠키 (0) | 2021.07.31 |
---|---|
OSI모델 , 캡슐화 (0) | 2020.12.01 |
네트워크 기본 (0) | 2020.05.26 |
네트워크 깃헙 주소 (0) | 2018.11.19 |