delpho

네트워크에 대하여 - 3 본문

CS

네트워크에 대하여 - 3

delpho 2022. 6. 29. 20:13

_1. RESTful이란 무엇이며, 이것에 대해서 아는대로 설명해보세요.(보충필요)

 

[ RESTful ]

  • REST + ful (접미사) 
  • REST스러운, REST스럽다
  • REST에 대한 원칙을 준수했을때, 그 시스템이 RESTful하다라고 말할 수 있음

 

 

[ REST ] 

  • HTTP를 잘 활용하기 위해 만들어진 아키텍처
  • 네트워크 리소스를 정의하고 처리하는 방법을 설명하는 일련의 원칙을 기반으로 하는 아키텍쳐 스타일
  • HTTP 통신에서 URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD 요청을 전달하는 방식
    • URI와 HTTP Method를 사용해서 자원과 행위를 표현함!
      • API의 의미를 표현하기 쉽고 의미를 파악하기도 쉽다.
  • REpresentational State Transfer 👉 표현적인 상태 전달 (의역 = 리소스의 표현에 의한 상태(정보) 전달)
    • 리소스를 URI에 표현해서 주고받을 정보에 대해 예측 가능
      • /course/java 👉 자바 과정에 대한 정보
      • /course/python 👉 자바 과정에 대한 정보
      • URI에 동사 표현을 사용 X 👉👉 자원에 대한 행위에 대해서 HTTP method(CRUD) 사용!
        • /course/member/append
        • /course/member/remove
  • 표현의 어려움이 있음
    • 로그인 👉 POST /user 👉 회원가입같이 보임!
    • 로그아웃 👉 DELETE /users/{id} 👉 회원탈퇴같이 보임!
      • 예외적으로 /login, /logout으로 처리했다고 함
      • 그렇다면 이 API는 REST의 원칙을 지키지 않았기 때문에 동작하지 않을까?
        • 그건아님! REST에는 명확한 원칙이 있긴 하지만, 지키기 힘들때도 있음

 

 

 

[ REST의 규칙 ] 

  1. URI는 명사를 사용한다.
  2. 슬래시로 계층 관계를 표현한다.
  3. URI의 마지막에는 슬래시를 붙이지 않는다.
  4. URI는 소문자로만 구성
  5. 가독성이 떨어지는 경우 하이픈을 사용

 

 

 

[ REST 아키텍쳐의 특징 ] 

 

  1. Uniform Interface(일관된 인터페이스)
    • Resource(URI)에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미
    • 이것은 요청을 하는 Client가 플랫폼(Android, Ios, Jsp 등) 에 무관하며, 특정 언어나 기술에 종속받지 않는 특징을 의미
  2. Stateless(무상태성)
    • 서버는 각각의 요청을 별개의 것으로 인식하고 처리해야하며, 이전 요청이 다음 요청에 연관되어서는 안됨
    • 그래서 Rest API는 세션정보나 쿠키정보를 활용하여 작업을 위한 상태정보를 저장 및 관리하지 않음
  3. Cacheable(캐시 가능)
    • Rest API는 결국 HTTP라는 기존의 웹표준을 그대로 사용하기 때문에 Rest API에서도 캐싱 기능을 적용할 수 있음
    • Last-Modified Tag 또는 E-Tag를 이용하여 캐싱을 구현 가능
      • 대량의 요청을 효울척으로 처리할 수 있게 도와줌
         
  4. Client-Server Architecture (서버-클라이언트 구조)
  5. Self-Descriptiveness(자체 표현)
    • Rest API는 요청 메세지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조로 되어있음
    • 아래와 같은 JSON 형태의 Rest 메세지는 http://localhost:8080/board 로 게시글의 제목, 내용을 전달하고 있음
    • HTTP POST , http://localhost:8080/board
      {
          "board":{
              "title":"제목",
              "content":"내용"
          }
      }
  6. Layered System(계층 구조)
    • Rest API의 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 등을 위한 계층을 추가하여 구조를 변경할 수 있음
    • 또한 Proxy, Gateway와 같은 네트워크 기반의 중간매체를 사용할 수 있게 해줌 
    • 하지만 클라이언트는 서버와 직접 통신하는지, 중간 서버와 통신하는지 알 수 없음

 

 

 

 

[ Collection과 Document ] 

  • Collection
    • Document들의 묶음
    • 일반적으로 복수 형태의 단어를 사용
  • Document
    • 1개의 개체를 나타내는 것으로 객체 인스턴스, DB의 Record와 유사한 개념을 가짐
    • 일반적으로 리소스의 집합 중 하나를 의미하며 Collection 뒤에 위치
  • 예제
    • http://localhost/members/{id}
    • members가 Collections이고 {id}가 Document를 의미합니다.

 

 

 

 

[ REST의 장단점 ] 

  • 장점 
    • HTTP 프로토콜의 인프라를 그대로 사용
    • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
    • 의도하는 바를 쉽게 파악할 수 있음
  • 단점 
    • 표준이 자체가 존재하지 않아 정의가 필요
    • 사용할 수 있는 메소드가 4가지밖에 없음

 

 

 


_2. CORS란 무엇이며 이것에 대해서 설명해보세요.

 

 

[ SOP와 CORS ] 

  • 웹에는 우리가 가져오는 리소스들이 안전한지 검사하는 2가지 정책이 존재
  • HTTP 요청에 대해서 어떤 요청을 하느냐에 따라 따르는 정책이 다름!
    1. HTML 👉 기본적으로 Cross-Origin 정책을 따름
      • link 태그에서 다른 origin의 css 등의 리소스에 접근하는 것이 가능
      • img 태그등에서 다른 리소스에 접근하는 것이 가능
    2. XMLHttpRequest, Fetch API 등 script 태그 내 👉 기본적으로 Same-Origin 정책을 따름
      • 자바스크립트는 서로 다른 도메인에 대한 요청을 보안상 제한한다. (브라우저 기본 설정은 하나의 서버 연결만 허용)
      • 이 정책을 Same-Origin-Policy라고 한다.

 

 

[ 출처 (Origin) 이란? ] 

  • Origin = 프로토콜 + Host + Port

 

 

 

[ SOP ] 

  • "같은 출처에서만 리소스를 공유할 수 있다"라는 규칙을 가진 정책
  • 출처를 비교하는 로직은 서버에 구현된 스펙이 아닌 브라우저에 구현된 스펙
  • Origin (프로토콜 + Host + Port)이 동일한지 아닌지 확인하면 됨!
    • 하나라도 일치하지 않으면 Cross Origin이라고 함!
      • 다른 출처 (Origin)로써 Same-Origin Policy 정책을 어긋나기 때문에, 서버로부터 응답이 넘어올 때 브라우저에서 CORS Policy 오류를 발생시킨다.
      • CORS Policy 에러란?
        • CORS를 허용해서 아무런 탈 없이 다른 출처 리소스 공유를 해달라!

 

 

 

[ CORS (Cross-Origin Resource Sharing) <교차&다른 출처 리소스 공유> ] 

  • 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제
  • CORS 기본 동작 과정
    1. 클라이언트에서 HTTP 요청의 헤더에 Origin을 담아 전달
      • 다른 Origin의 리소스 요청시 클라이언트는  HTTP 요청 보냄
      • 요청헤더의 ORigin 필드에 요청을 보내는 Origin 담아보냄
    2. 서버는 응답헤더에 Access-Control-Allow-Origin을 담아 클라이언트에 응답
      • 서버가 허락하는 Origin을 클라이언트에 응답
    3. 클라이언트에서, 자신이 보냈던 요청의 Origin과 서버에서 보내준 Access-Control-Allow-Origin 비교

 

 

 

 

 

 


_3. OSI7계층과 그 존재 이유, TCP/IP 4계층에 대해 설명해보세요.

 

 

 

 

 

 

 


출처

https://www.youtube.com/watch?v=NODVCBmyaXs 

https://bamdule.tistory.com/146

 

[WEB] RESTful 이란?

1. REST(Representational State Transfer)란? REST는 WWW(월드 와이드 웹)와 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식입니다. REST는 올바른 HTTP 사용을 유도하고 있기 때문에 H.

bamdule.tistory.com

https://mangkyu.tistory.com/46

 

[Server] Restful API란?

최근에 진행중인 프로젝트에서 Google Drive API, Google App Script 등을 사용하고 있는데, 오늘은 이러한 것들을 사용하기 위해 요청을 보내는 방식인 Rest API에 대해 알아보도록 하겠습니다. 1. RESTful API

mangkyu.tistory.com

https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-CORS-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-%F0%9F%91%8F#CORS_(Cross-Origin_Resource_Sharing)_%3C%EA%B5%90%EC%B0%A8&%EB%8B%A4%EB%A5%B8_%EC%B6%9C%EC%B2%98_%EB%A6%AC%EC%86%8C%EC%8A%A4_%EA%B3%B5%EC%9C%A0%3E 

 

[WEB] 📚 CORS 개념 💯 완벽 정리 & 해결 방법 👏

CORS(Cross Origin Resource Sharing) CORS 정책은 우리가 가져오는 리소스들이 안전한지 검사하는 관문이다. 웹개발을 하는 사람들은 이 CORS 정책위반으로 인해 에러가 나는 상황을 많이들 겪어봤을것이라

inpa.tistory.com

 

'CS' 카테고리의 다른 글

자료구조에 대하여 - 2  (0) 2022.07.06
자료구조에 대하여 - 1  (0) 2022.07.05
네트워크에 대하여 - 2  (0) 2022.06.25
네트워크에 대하여 - 1  (0) 2022.06.22
DB에 대하여 - 1  (0) 2022.06.19