<aside> 🌧️ 클라이언트와 서버
서버와 이어져 있는 모든 기기
주로 서버에게 요청을 보내고, 응답을 받는 역할을 한다.
클라이언트에게 서비스를 제공하는 소프트웨어
다수의 클라이언트에게 서비스를 제공하기 때문에 고사양의 하드웨어를 갖춘 컴퓨터이지만, 하드웨어의 사양으로 서버와 클라이언트를 구분하는 것은 절대 아니며, 사양의 관계없이
<aside> ✅ HTTP
HyperText(링크) Transfer Protocol 의 약자이다.
하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 Protocol (통신 규약)인데, 쉽게 생각하면 웹 상에서 통신을 할 때 어떤 형식으로 통신을 하자고 정해놓은 약속이다.
요청(request) ← → 응답(response) 의 구조
HTTP 는 stateless 이다. 즉 State 를 저장하지 않는다.
클라이언트가 요청을 보내고 응답을 받은 후, 그 다음에 다시 요청을 보낼 때 그 전에 보낸 요청/응답에 대해 알지 못한다.
패킷은 컴퓨터 네트워크에서 데이터를 주고 받을 때 전송되는 작은 단위다. 데이터를 패킷 단위로 쪼개어 통신하여 효율을 높인다. 우체국에서 화물을 적당한 덩어리로 나눠 행선지를 표시하는 꼬리표를 붙이는데, 이 방식을 데이터 통신에 접목한 것이라고 할 수 있이다.
</aside>
HTTP Request 의 구조
1. Starter line
해당 request 가 어떤 action 을 의미하는지 정보를 담는다. request target (url) 어떤 곳에다가 요청하는지를 담는다.
2. Headers
해당 request에 대한 추가 정보를 담고있는 부분이다.
Key:Value 값으로 되어있다.
Request Target도 주소. Host 도 주소. 두개를 합쳐서 보고 서버가 알게 된다.
3. Body
데이터가 담겨있는 부분이다. 여기서 내가 가졌던 의문은 Request 를 하는데 왜 정보를 담아서 보내야되지?하는 것이였다.
→ 클라이언트의 정보를 넘겨줘야, 서버에서 어떤 정보를 담아서 보내줘야할지 알려줄 수 있는 request들이 많다.
예를들면 유저의 로그인 정보를 담아서 서버쪽에 이런 사람이 로그인했다, 고 알려주면 서버측에서 그 사람의 프로필 사진은 뭔지, 그 사람이 어떤 사람을 팔로우하는지, 그런 정보들을 담아서 돌려보내줄것이다.
request 도 데이터를 담아서 요청할 수 있고, response 에서 데이터를 담아서 줄수 있다.
위에서 얘기한 어떤 사항들을 요청하는지는
Content-type 에 의해서 결정된다.
이런 내용들은 개발자도구 Network 패널에서 모두 확인 가능하다.
HTTP Response 구조
Response 도 request와 마찬가지로 크게 3부분으로 구성되어있다.
1. Status Line
- Response 의 상태를 간략하게 나타내주는 부분
- 3부분으로 구성되어 있다.
- HTTP 버전
- Status code: 응답 상태를 나타내는 코드
- Status text: 응답 상태를 간략하게 설명해주는 부분.
2. Headers
- Response의 headers와 동일하다.
- 다만 response에서만 사용되는 header 값들이 있다.
- 예를 들어,
User-Agent
대신에Server
헤더가 사용된다.3. Body
- Response의 body와 일반적으로 동일하다.
- Request와 마찬가지로 모든 response가 body가 있지는 않다. 데이터를 전송할 필요가 없을경우 body가 비어있게 된다.
<aside> ⭐
GET
POST
PUT
DELETE
06.13