개요
HTTP는 Hyper Text를 전달하는 프로토콜이다.
request, response 두 가지 타입이 있다.
Hyper Text?
- 파일들이 링크되어 있는 텍스트
HTTP 특징
Connectionless
HTTP는 클라이언트의 요청에 대한 응답을 하면, 바로 연결을 끊는다. 한 클라이언트에 대한 접속 유지 시간을 줄임으로써 더 많은 요청-응답을 할 수 있다.
(단점) 같은 클라이언트 요청이 오더라도 이에 대해 전혀 알 수 없다. → 이걸 해결하기 위한게 쿠키
Stateless
바로 직전의 클라이언트에서 또 요청이 왔을지라도, 해당 클라이언트의 상태를 저장하지 않으므로 클라이언트 측에서 추가적인 정보를 제공해야 한다.
HTTP는 Transport 계층에서 TCP를 사용한다.
Request, Response가 있기 이전에 먼저 TCP 커넥션을 형성
두 종류의 HTTP
non-persistent HTTP
TCP가 한번 전송되면 연결 바로 끊김
(2RTT + file 전송시간) * N 으로 요청/응답 해결 가능
특징
- 각각의 Object마다 2 RTT가 오가야 한다.
- 각각의 TCP 커넥션에 대한 OS 오버헤드
persistent HTTP default
다양한 파일 요청이 있을 때 request, response마다 요청 끊지않고 쭉 유지
처음 연결 RTT + 파일 주고받으면서 (RTT + file transmission) * N
특징
- HTTP 1.1부터만 가능
- 커넥션을 계속 열어놔야 함(당연함)
HTTP로 전송할 수 있는 것
- html, text
- 이미지, 음성, 영상, 파일
- JSON, XML
- 거의 모든 형태의 데이터 전송 가능
HTTP 헤더
헤더에 담기는 정보 3 가지
- General Header: 컨텐츠 자체의 내용보다 전송 시간 및 날짜 등 일반적인 정보가 포함되어 있다. ex. Content-Type
- Request, Response Header: 웹 브라우저가 웹서버에 요청하는 것을 텍스트로 변환한 메시지들
- 클라이언트 정보: Remote IP, Host, Port
- 서버 정보: Server Name, Ip
- Authorization
- Cookie 등등
- Entity Header
HTTP REQUEST - GET/POST 차이
- GET
- 데이터를 URL에 포함시켜서 보냄 → 브라우저의 주소창이나 히스토리에 기록이 남음→ 민감한 정보를 전송하는 데에는 적합하지 않음.
- www.tistory.com/?키워드=파라미터 이런식
- *spring @Pathvariable
- POST
- 데이터를 HTTP 요청의 본문(Body)에 담아서 보내므로 외부에 노출되지 않음
- 데이터의 크기에 대한 제한이 없어 큰 데이터를 전송하는 경우에 주로 사용됨.
HTTP RESPONSE - 상태 코드
HTTP 응답코드는 웹 서버가 클라이언트에게 보내는 3자리 숫자로, 요청의 성공, 리디렉션, 클라이언트 오류, 서버 오류 등을 나타냄.
- 1xx(정보): 요청이 받아졌고 프로세스 중.
- 2xx(성공): 요청이 성공적으로 처리됨.
- 3xx(리다이렉션): 추가 작업이 필요하거나 다른 위치로 이동해야 함.
- 4xx(클라이언트 오류): 클라이언트의 요청에 문제가 있음.
- 5xx(서버 오류): 서버가 요청을 처리하는데 문제가 발생함.
'CS > Network' 카테고리의 다른 글
[네트워크] Transport Layer, Mux & Demux (0) | 2024.04.24 |
---|---|
[네트워크] DNS, DNS 쿼리, DNS recode 종류 (0) | 2024.04.24 |
[네트워크] TCP/IP 5계층 | Application Layer (0) | 2024.04.24 |
댓글