Home 네트워크 관련 가능 질문
Post
Cancel

네트워크 관련 가능 질문

Q. REST API 란 무엇인가요?

RESTful한 API를 말하며 일련의 특징과 규칙 등을 지키는 API를 일컫는다.

REST API의 특징

Uniform-Interface

API에서 자원들은 각각의 독립적인 인터페이스를 가지며 각각의 자원들이 url 자원 식별, 표현을 통한 자원 조작, Self-descriptive messages, HATEOAS 구조를 가지는 것을 말한다.

  • url 자원 식별
    • 자원은 url로 식별되어야 한다.
  • 표현을 통한 자원 조작
    • url과 GET, DELETE 등 HTTP 메서드 등을 통해 자원을 조회, 삭제 등 작업을 설명할 수 있는 정보가 담겨야 한다.
  • Self-descriptive messages
    • HTTP 헤더에 타입을 명시하고 각 메시지들은 MIME types에 맞추어 표현되어야 한다.
    • MIME types는 문서, 파일 등의 특성과 형식을 나타내는 표준이다.
    • ‘text/plain’, ‘text/csv’ 등등
  • HATEOAS 구조
    • 하이퍼링크에 따라 다른 페이지를 보여주어야 하며 데이터마다 어떤 URL에서 원했는지 명시해주어야 하는 것을 말한다.
    • 보통은 href, links, link, url 속성 중 하나에 해당 데이터의 URL을 담아 표기한다.

Stateless

이 규칙은 HTTP 자체가 Stateless 하기 때문에 HTTP를 이용하는 것만으로도 만족된다.

REST API를 제공해주는 서버는 세션을 해당 서버 쪽에 유지하지 않는다는 의미이다.

Cacheable

HTTP는 캐싱이 된다. 아무런 로직을 구현하지 않더라도 자동적으로 캐싱이 된다. 새로고침을 하면 304가 뜨면서 원래 있던 js와 css 이미지 등을 불러오는 것을 볼 수 있다.

캐싱되는 자원인지 아닌지, 유효한지 등의 유효기간을 정한는 것을 말한다.

ex) Cache-Control:max-age, Last-modified, Etag

Client-Server 구조

클라이언트와 서버가 서로 독립적인 구조를 가져야 한다.

서버에서 HTTP 표준만 지킨다면 웹에서는 그에 따른 화면이 잘 나타나게 된다. 서버는 그저 API를 제공하고 그 API에 맞는 비즈니스 로직을 처리하면 된다. 마찬가지로 클라이언트에서는 HTTP 로 받는 로직만 잘 처리하면 된다.

Layered System

계층 구조로 나누어져 있는 아키텍처를 뜻한다.

REST API의 URI 규칙

  • 동작은 HTTP 메서드로만 해야하고 url에 해당 내용이 들어가면 안된다.
  • .jpg, .png 등 확장자는 표시하면 안된다.
  • 동사가 아닌 명사로만 표기해야 한다. (물론 어쩔 수 없이 컨트롤 URL 사용할 수 있다..)
  • 계층적인 내용을 담고 있어야 한다. (/집/아파트/전세)
  • 대문자가 아닌 소문자로만 쓰며 너무 길 경우에 _ 대신에 -를 사용한다.
  • HTTP 응답 상태코드를 적재적소에 활용한다.

브라우저 렌더링 과정이란 무엇인가?

브라우저는 위와 같이 브라우저 엔진, 렌더링 엔진, 네트워크 통신부, 자바스크립트 해석기, UI 백엔드, 자료저장소로 이루어져 있다.

이중 렌더링 엔진이 브라우저 렌더링을 담당하며 아래와 같은 과정으로 이루어진다.

  1. DOM 트리 구축 및 CSSOM 트리 구축
  2. 렌더트리와 렌더레이어 생성
  3. 렌더레이어를 대상으로 Layout 설정
  4. 렌더레이어를 대상으로 칠하기
  5. 레이어 합치기 및 표기

www.naver.com을 입력했을 때 생기는 과정, 그리고 DNS란?

리다이렉트, 캐싱, DNS, IP 라우팅 & ARP, TCP 연결 구축을 거쳐 요청, 응답이 일어나는 TTFB(Time to First Byte)가 시작되고 이 후 컨텐츠를 다운받게 되고 이 후 브라우저 렌더링 과정을 거쳐 네이버라는 화면이 나타나게 된다.

리다이렉트

리다이렉트가 있다면 리다이렉트를 진행하고 없다면 그대로 해당 요청에 대한 과정이 진행된다.

캐싱

해당 요청이 캐싱이 가능한지 아닌지를 파악한다. 캐싱이 이미 된 요청이라면 캐싱된 값을 반환하며 캐싱이 되지 않은 새로운 요청이라면 그 다음 단계로 넘어간다.

DNS

캐싱을 거쳐 요청해야 함이 분명해졌다면 실제 서버에 요청하는 단계이다. 브라우저가 요청한 도메인인 www.naver.com 등의 이름인 DNS를 통해 실제 IP 주소를 확인한다.

IP 라우팅

해당 IP를 기반으로 IP 라우팅이 일어나고 ARP 과정(IP주소를 물리적 네트워크 주소로 대응시키는 과정)을 거쳐 실제 서버를 찾는다.

TCP 연결 구축

브라우저가 TCP 3웨이 핸드셰이크 및 SSL 연결 등을 통해 연결을 설정한다. 이 후 요청을 보낸 후 서버로부터 응답을 받는다.

콘텐츠 다운로드

브라우저는 사용자가 요청한 컨텐츠를 서버로부터 다운로드 받는다.

브라우저 렌더링

받은 데이터를 바탕으로 브라우저 엔진이 브라우저 렌더링 과정을 거쳐 화면을 만든다.

이더넷 프레임은 무엇이며 구조가 어떻게 되나?

이더넷프레임이란 데이터 링크 계층의 데이터 단위이며 이더넷 프레임을 기반으로 데이터가 전달된다.

구성

  • Preamble(7byte) : 이더넷 프레임의 시작임을 알려준다.
  • SFD(1byte) - Start frame delimiter : 다음 필드부터 주소필드가 시작됨을 알려준다.
  • Address(6, 6byte) : 목적지 주소, 시작지 주소이다.
  • EtherType(2byte) : 데이터 링크 계층 위의 IP 프로토콜을 정의한다.
    • IPv4, IPv6
  • Payload(가변) : 이진데이터로 구성되며 데이터를 담는다.
  • FCS(4byte) - frame check sequence : 수신측의 에러 검출을 위해 삽입하는 필드이다.
This post is licensed under CC BY 4.0 by the author.

자바 백엔드 웹 기술의 역사

대규모 트래픽으로 인한 서버과부화 해결 방법