http vs http 는 개발자 면접에서 자주 나오는 질문 중의 하나!
데이터를 주고 받는 양식을 정의한 '통신 규약(컴퓨터끼리 데이터를 주고 받을때 정해둔 약속)' 중 하나
→ 현재 이용되는 대부분의 웹 서버가 HTTP를 기반으로 데이터를 주고 받음
텍스트 기반으로 데이터를 전송
보안 기능이 없는 평문 통신 방식
프로토콜 (Protocol)
- 멀리 떨어져서 서로에 대한 정보가 없는 메세지의 송/수신자가 서로 필요한 요청과 응답을 할 수 있도록 미리 규약을 정해놓은 것
- 메세지 송/수신자가 공유하고 있는 “약속”
- 웹 상에서는 HTTP(프로토콜)를 통해서 데이터를 송/수신
- 이런 통신 규약 덕분에, 클라이언트와 서버간에 메세지를 주고받을 수 있음
(일반적으로) 서로 멀리 떨어져 있는 서버와 클라이언트는 프로토콜(Http)을 이용하여 통신하는데,
그 통신은 비연결성(Connectionless) 무상태(Stateless)로 이루어진다.
"서버가 클라이언트의 상태를 저장하지 않는다."
→ Why? 기존의 상태를 저장하는 것들도 서버의 비용과 부담을 증가시키는 것이기 때문에
기존의 상태가 없다고 가정하는 프로토콜을 이용해 구현되어 있다.
(서버는 클라이언트가 직전에, 혹은 그 전에 어떠한 요청을 보냈는지 전혀 알지 못한다.)
Method (호출/요청 방식)
GET
: 이름 그대로 어떤 리소스를 얻을 때 사용. 브라우저의 주소창에 URL을 입력하면 GET 메서드를 사용해서 서버에 요청을 보냄POST
: (일반적으로) 웹 서버에 데이터를 게시할 때 사용 (ex. 회원가입, 게시글 작성, 댓글 작성)Header (추가 데이터. 메타 데이터) --> 헤더에 포함되어 서버로 보내짐
Payload (데이터. 실제 데이터)
GET
method를 제외하곤 모두 Payload를 보낼 수 있다" 는게 HTTP에서의 약속.현재 모바일이나 웹 서비스에서 가장 많이 쓰이는 통신 방식
'클라이언트의 요청(GET)을 서버에게 보낸 후 ~ 응답을 받을 때까지' 가 하나의 HTTP 요청
응답 후 연결이 끊기게 되며, 과거에 대한 정보를 전혀 담지 않는다.
(= 상태를 저장하지 않는다(Stateless 하다))
→ 지금 보낼 HTTP 요청은, 지난 번에 내 정보를 담아 보냈던 HTTP 요청과 전혀 관계가 없다
→ 웹 서버에서는 1번 요청과 2번 요청이 같은 클라이언트의 요청인지 알 수 없습니다.(사용자를 구별하지 못함)
→ 따라서, 각각의 HTTP 요청에는 주체가 누구인지에 대한 정보가 필수적! (단, 인증이 필요없다면 필요없을 수도 있음)
'서버에 요청을 보내는 작업' = 'HTTP 메세지를 보내는 것' 이다.
HTTP 메서드에 대한 설명 은 개발자 면접에서 자주 나오는 질문 중의 하나!
보통 GET, POST, PUT, PATCH, DELETE 를 주요 메서드로 사용한다.
요청
할 때 사용확인
하기 위해 사용생성
하기 위해 사용요청된 해당 자원 전체를 수정
하기 위해 사용
요청된 자원을 수정하기 위해 사용되는 메소드라는 점에서 PUT과 같지만,
하는 해당 자원의 일부를 수정
'부분', '조각' 이라는 의미
삭제
하기 위해 사용메시지를 호출
하기 위해 테스트용으로 사용웹서버에서 지원하는 메소드를 알기 위해
사용프록시 기능을 요청
할 때 사용되는 메소드
브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 요구(Request)
서버는 브라우저가 원하는 페이지가 있는지 확인
있다면, 해당 페이지에 대한 데이터를 실어 응답(Response)
없다면, 없는 페이지에 대한 데이터를 반환
브라우저는 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려준다.
개발자 도구(DevTool) - 네트워크 탭 - Headers
- General: 브라우저에서 서버로 보낸 Request 데이터
- Request Headers: 브라우저에서 서버로 보낸 Request 데이터
- Response Headers: 서버가 웹 페이지 데이터와 함께 보낸 추가 데이터
개발자 도구(DevTool) - Response 탭
- 서버에서 여러분의 브라우저로 반환해준 웹 페이지를 그려주기 위한 데이터
Client 와 Server 간에는 HTTP Request(Client 의 요청) / HTTP Response (Server 의 응답) 가 이루어진다.
→ 서버가 응답을 보낼 때(HTTP Response), start-line 에 있는 응답코드(상태코드)도 같이 보내진다.