[TIL - [HTTP/네트워크] 기초]

Jeong Ha Seung·2022년 8월 4일
0

부트캠프

목록 보기
27/51

오늘 공부한 내용

클라이언트-서버 아키텍처

리소스에 접근하려는 앱은 손님과 같다. 손님이 어떤 물품을 받는다고 했을 때 리소스를 갖고 있는 점원에게 요청해야 한다. 이 요청에 따라 리소스를 담아 응답한다.

서버는 일반적으로 리소스를 전달만 해주고 이 리소스를 저장하는 공간을 따로 마련하는데 이를 데이터베이스라고 한다.

클라이언트 - 서버 통신과 API

클라이언트와 서버 간의 통신을 알기 위해서는, 프로토콜이라는 것을 알아야 하는데

프로토콜은 통신 규약, 즉 약속이다.

웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 서로 대화를 나눈다. HTTP를 이용해 주고받는 메시지는 "HTTP 메시지"라고 부른다.

API

우리(클라이언트)는 서버가 어떻게 구성되어 있는지 알 방법이 없다. 그런데 어떻게 리소스를 파악할 수 있을까?

서버는 클라이언트한테 리소스 활용을 할 수 있도록 인터페이스를 제공해줘야 한다.(실생활을 예로 들면 메뉴판) 이를 API라고 한다.

URL과 URI

URL - 리소스의 위치를 나타내는 주소
URI - 리소스를 식별하기 위한 문자열 구성

이 둘을 구별하는 방법은

절대 URI 포맷

[스키마][자격정보(credential)][서버주소][서버포트][계층적 파일 패스][쿼리 문자열][프래그먼트]

IP 주소

  • localhost, 127.0.0.1 : 현재 사용 중인 로컬PC
  • 0.0.0.0, 255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소

포트

포트번호는 0~65535까지 사용 가능하다. 대표적인 포트 번호는 다음과 같다.

  • 22 : SSH
  • 80 : HTTP
  • 443 : HTTPS

DNS

입력한 도메인을 실제 네트워크 상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요함. 이러한 과정 시스템을 DNS(Domain Name System)이라 한다.

Http Requests

Start line

클라이언트가 서버에게 보내는 메시지로 3가지 요소가 있다.

  1. 수행할 작업(GET,POST 등)이나 방식(HEAD나 OPTIONS)을 설명하는 http method.
  2. 요청 대상 또는 프로토콜, 포트, 도메인의 절대 경로는 요청 컨텍스트에 작성된다. 이 요청 형식은 http method마다 다르다.
    • origin 형식: ?와 쿼리 문자열이 붙는 절대 경로, GET, POST, HEAD, OPTIONS 등의 method와 함께 사용한다.
    • absolute 형식: 완전한 URL 형식, 프록시에 연결하는 경우 주로 GET method와 함께 사용
    • authority 형식: 도메인 이름과 포트번호로 이루어진 URL의 일부분, HTTP 터널을 구축하는 경우, CONNECT와 함께 사용
    • asterisk 형식 : OPTIONS와 함께 * 하나로 서버 전체 표현

Http Response

status line

응답의 첫 줄을 status line이라고 하며 다음과 같은 정보를 포함한다.

  1. 현재 프로토콜 버전
  2. 상태 코드
  3. 상태 텍스트 - 상태 코드에 대한 설명

AJAX

Asynchronous JavaScript And XMLHttpRequest의 약자로 JS,DOM,Fetch 등을 사용하는 웹 개발 기법이다.

AJAX의 2가지 핵심 기술

  1. Fetch를 사용하여 페이지를 이동하지 않고 서버로부터 데이터를 받아올 수 있다. 브라우저는 Fetch가 서버에 요청을 보내고 응답을 받을 때까지 모든 동작을 멈추는 게 아니라 페이지를 계속 사용할 수 있도록 비동기적인 방식을 사용한다.
  2. JS와 DOM을 사용해 조작할 수 있기 때문에, Fetch를 통해 전체 페이지가 아닌 필요한 데이터만 가져와 DOM에 적용시켜 새로운 페이지로 이동하지 않고 기존 페이지에서 필요한 부분만 변경할 수 있다.

AJAX의 장단점

  • 장점
    • 서버에서 HTML을 완성해서 보내주지 않아도 웹 페이지를 만들 수 있다.
    • 표준화된 방법 - 이전에는 브라우저마다 다르게 AJAX를 사용할 수 있었지만 XHR이 표준화되면서 브라우저에 상관이 없어졌다.
    • 유저 중심 애플리케이션
    • 더 작은 대역폭
  • 단점
  • SEO에 불리
  • 뒤로 가기 버튼 문제 - AJAX에서는 이전 상태를 기억하지 않기 때문에 사용자 의도대로 동작하지 않는다. 따라서 이러한 기능을 구현하려면 별도로 History API를 구현해야 한다.

참고자료
URI와 URL
URI와 URL의 차이점
그림으로 배우는 HTTP 네트워크 Basic
dns란-도메인-네임-시스템-개념부터-작동-방식까지

profile
블로그 이전했습니다. https://nextjs-blog-haseungdev.vercel.app/

0개의 댓글