클라이언트 서버 통신 : HTTP

Hyebin·2021년 4월 30일
0

HTTP

목록 보기
1/4

클라이언트와 서버는 요청과 응답으로 상호작용 하는 것을 배웠다.

요청이 있어야만 서버 측 응답이 올텐데 클라이언트가 김치찌개란 요청을 보냈는데 서버가 요청을 인식하지 못한다면 어떠한 응답도 주지 못하는 상황이 발생할 수도 있다.

이런 상황을 피하고자 서로 정해진 약속을 만들었고 그래서 나온 개념이 프로토콜(protocol)이다.

📚 프로토콜 훑어보기

프로토콜이란?

클라이언트와 서버간의 통신규약(약속)을 뜻한다.


OSI 7layer에 대해서는 추 후에 더 깊이 공부하도록 하고, 여기서는 http가 나오게 된 배경에 대해 알아보는게 중점이니 간단하게만 살펴보자.

  • SMTP
    이메일 전송할 때 쓰이는 프로토콜

TCP (Transmission Control Protoco)

해석 그대로 전송제어 프로토콜이며 제일 많이 쓰이는 규약이다. 서버와 클라이언트가 서로 켜져(연결된 상태)있고 동일한 포트로 들어와야 데이터를 요청, 전송할 수 있다.
클라이언트가 연결 요청을 하고 서버가 수락하면 선로가 고정되서 고정된 선로로 리소스를 준다.
통신을 다시 하려면 다시 연결 요청해야 하고, 데이터를 전송 할 수 있다.

  • 장점
    1:1로 연결되서 신뢰성 높음
  • 단점
    1) UDP 보다 속도 느림
    2) 클라이언트-서버가 반드시 연결되있어야함
    3) 1:1로 밖에 연결 못함

UDP(User Datagram Protocol)

데이터그램 단위로 처리하는 프로토콜로 TCP와 반대로 비연결형이다.
연결 절차를 거치지 않고 발신자가 일방적으로 리소스를 발신하는 방식이다.
일반적으로 오류 검사와 수정이 필요없는 애플리케이션에서 수행하는 것을 전제한다.

  • 장점
    tcp에 비해 상대적으로 속도가 빠름
  • 단점
    1) 전송방식이 단순하고 신뢰성 낮음
    2) 데이터그램 도착 순서가 바뀌거나, 중복, 누락되기도 함

HTTP(HyperText Transfer Protocol)

TCP와 UDP를 웹에 맞게 재설계한 프로토콜이다.

별도로 왜 재설계 했나?

TCP와 UDP는 비연결성무상태성이라는 것을 못가지고 있기 때문에 웹을 위한 HTTP를 따로 만들었다.

무상태성 (Stateless)
모든 http 요청은 독립적이므로 서버는 클라이언트의 상태를 기억하지 못한다. (지속적인 state라는 것이 없다.)

비연결성 (Connectionless)
클라이언트와 서버가 한 번 연결을 맺은 후, 요청에 대해 응답을 마치면 연결을 끊는다.

고로, http는 무상태성과 비연결성의 특징을 갖는다!!

HTTP


HTTP란?

웹서버 통신을 위한 프로토콜(protocol)로 클라이언트와 서버가 응답(주로 html 등의 문서)을 주고 받을 때 사용되는 통신규약이다.


클라이언트와 서버는 http를 통해 서로 통신한다.

클라이언트는 api에 맞게 요청을 하면 서버는 요청에 대한 응답으로 상태코드와 리소스를 함께 전송을 해준다. 서버의 온/오프 상관없이 연결되면 상태코드와 함께 데이터를 같이 보내주고, 연결 안되는(오류)상태이면 오류 상태코드를 전달한다.

📌 API(Application Programming Interface)

앱이 요청할 수 있고 프로그래밍 가능하게 하기 위한 접점이다. 서로 상호작용하는 것을 도와준다.

API를 흔히 메뉴판에 빗대어 부른다.
카페에서 어떤 메뉴를 파는지 모르기 때문에 카페는 메뉴판을 제공하고, 손님은 메뉴판을 보고 주문을 할 수 있다.

서버도 클라이언트가 리소스 요청을 위한 API를 만들어 놓아야 클라이언트가 활용할 수 있다.

0개의 댓글