[HTTP]
HyperText Transfer Protocol : 문서간의 링크를 통해서 연결하는 html을 전송하는 프로토콜
거의 모든 형태의 데이터 전송 가능.
클라이언트 서버 구조, 무상태 프로토콜, 비연결성,단순, 확장 가능
[클라이언트와 서버의 구조]
1. 클라이언트와 서버 구조
http는 클라이언트가 http메세지를 통해서 보내고 서버에서 응답이 올때 까지 기다려. 서버가 요청에 대한 결과를 만들어서 응답해
* 클라이언트와 서버를 분리하는게 중요*
비지니스 로직이랑 데이터는 서버에 넣고 클라이언트는 UI와 사용성에 집중-> 클라이언트와 서버가 독립적으로 진화
[Stateful, Stateless]
2. 무상태 프로토콜
서버가 클라이언트 상태를 보존하지 않는다.
*Stateful : 상태를 유지한다. (로그인). 최소한으로만 사용
서버가 클라이언트 이전 상태를 보존한다. -> 중간에 상태가 변경되면 장애가 발생
중간에 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야됨. 서버 늘리기 어려워
*Stateless : 상태를 유지하지 않는다. (단순 서비스 소개 화면)
서버가 클라이언트의 상태를 보존하지 않는다. -> 고객이 필요한 정보를 그때 그때 다 넘겨줘서 중간에 바뀌어도 문제없
갑자기 고객이 증가해도 점원을 대거 투입 가능하고 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입 가능.
응답 서버를 쉽게 바꿀 수 있음-> 무한한 서버 증설 가능
[비연결성]
단점: 2,3 클라이언트가 놀고 있어도 계속 연결을 유지해야됨.
=> http는 기본적으로 연결을 유지하지 않는 모델로 빠른속도로 응답. 서버 자원을 효율적 사용 가능
but, 중간에 다른거 하면 TCP/IP를 새로 연결 해야돼 -> 3 way handshake 시간 추가
[HTTP메세지]
1. 시작 라인
* 요청 메세지(request-line) - HTTP method(ex : GET 조회), request-target(path), HTTP-version
HTTP method - GET:서버에게 리소스를 달라고 해/POST: 요청한것들 처리해줘...
path 절대경로+ 쿼리
*응답 메세지(status-line) - HTTP-version, status-code(클라이언트가 보낸 요청이 성공했는지 실패했는지 나타냄), reason-phrase (상태코드를 사람이 이해할 수 있게 문자로 나타낸것 ex :OK) CRLF
2. 헤더 라인 : HTTP 전송에 필요한 모든 부가정보 들어있음.
3. 메세지 바디 라인 : 실제 전송할 데이터
'Spring 강의 > network' 카테고리의 다른 글
[network] - (6) HTTP 상태코드 (0) | 2022.04.07 |
---|---|
[network] - (5) HTTP메서드 활용 (0) | 2022.04.05 |
[network] - (4) HTTP 메서드 (0) | 2022.04.04 |
[network] - (2) URI와 웹 브라우저 요청 흐름 (0) | 2022.04.04 |
[network] (1) - 인터넷 네트워크 (0) | 2022.04.04 |