Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Seminar2] Switch와 RESTful #5

Open
2 tasks done
yeeun0702 opened this issue Oct 27, 2024 · 0 comments
Open
2 tasks done

[Seminar2] Switch와 RESTful #5

yeeun0702 opened this issue Oct 27, 2024 · 0 comments

Comments

@yeeun0702
Copy link
Collaborator

ToDo

  • Switch?
  • What is RESTful?

Switch란 ?

스위치는 네트워크 장비로, 다양한 기기들을 서로 연결하여 데이터 패킷을 교환 하고, 네트워크 성능을 최적화 하는 역할을 합니다. 스위치는 OSI 2계층(데이터 링크 계층)에서 작동하며, MAC 주소를 기반으로 장치 간의 데이터 흐름을 제어합니다.

OSI 7계층의 주요 기능 요약

image

  • 응용층(L7): 네트워크 자원에 대한 접근 허용
  • 표현층(L6) : 변환, 암/복호화, 압축/압축해제
  • 세션층(L5) : 세션 설정, 세션 관리, 세션 종료
  • 전송층(L4) : 신뢰할 수 있는 종단-대-종단 메시지(message) 전달과 오류 복구 제공
  • 네트워크층(L3) : 네트워크 간 상호 연결을 통하여 발신지에서 목적지까지 패킷을 전달
  • 데이터링크층(L2) : 비트들을 프레임으로 만들어 노드-대-노드 전달
  • 물리층(L1) : 비트들을 전송매체를 통하여 전달하기 위한 기계적, 전기적 규격 제공

🔎 TCP/IP 프로토콜 그룹과 OSI모델 비교

image

  1. 물리층과 데이터 링크층
    특정 프로토콜을 지원하지 않고 기존의 모든 표준과 기술적인 프로토콜 지원
  2. 네트워크층
    인터넷 프로토콜(IP) : host-to-host protocol
    주소 변환 프로토콜(ARP)
    인터넷 제어 메시지 프로토콜(ICMP)
    인터넷 그룹 메시지 프로토콜(IGMP)
  3. 전송층
    사용자 데이터그램 프로토콜(UDP)
    전송 제어 프로토콜(TCP)
    스트림 제어 전송 프로토콜(SCTP)
  4. 응용층
    OSI 모델의 세션, 표현, 응용층을 합한 것

🔎 L1 ~ L7 스위치 요약

image

☑️ L1 스위치 (허브, 더미 허브)

가장 하위계층인 물리계층에서 작동하는 것으로 허브는 자신에게 꽃혀있는 모든 장비에게 데이터를 전부 전달한다.

☑️ L2 스위치 (스위칭 허브)

데이터 링크 계층에서 작동하며, 자신에게 꽃혀있는 모든 장비에게 데이터를 전달하는 허브와 달리 각 장비의 MAC 주소를 내부적으로 저장하고 있기 때문에, 들어온 패킷의 MAC 주소를 읽어 해당하는 장비를 찾아 전달해주는 장비를 뜻한다.

☑️ L3 스위치 (라우터, 공유기)

L3 스위치는 MAC 주소 뿐만 아니라 IP주소까지 알고 있다.
L3 스위치는 L2 스위치에 라우팅 기능이 추가된 장비로 고성능 하드웨어를 기초로 한다.

☑️ L4 스위치

여러 대의 서버를 한 대처럼 묶을 수 있는 부하 분산(로드 밸런싱) 기능을 제공한다.
프로토콜을 기반으로 하여 애플리케이션 별로 우선순위를 두어 스위칭한다.
즉, L4 스위치는 IP주소 뿐만 아니라 포트주소도 참고한다.

☑️ L7 (L5,L6 스위치)

보통 L7 스위치가 L5, L6의 기능까지 함께한다.
계층 HTTP의 URL, FTP 쿠키 정보 및 바이러스 패턴을 분석하여 보안에 더 유리하고 정교한 로드 밸런싱이 가능하다.
따라서 L7 스위치를 보안 스위치라고 부르기도 한다. (데이터 분석을 통해 DDoS 공격을 방어하고 패킷 패터링 등의 기능도 제공하기 때문)

🔎 LoadBalancing(로드 밸런싱) ?

컴퓨터 네트워크 상으로 들어오는 트래픽이 하나의 서버에 집중되지 않도록 서버의 기능을 분산 구성하고, 이를 통해 컴퓨터 자원을 나누는 일을 말한다.

로드밸런싱의 이점 : 애플리케이션 서버와 방문자 또는 클라이언트 간의 인터넷 트래픽을 지시하고 제어하기 때문에 애플리케이션의 가용성, 확장성, 보안 및 성능이 향상된다.

❓ L4 Switch, L7 Switch 가 무엇인지 조사해보세요.

L4 스위치

  • 역할 : 전송층에서 작동하며 IP 주소와 TCP/UDP 포트 정보를 사용하여 네트워크 트래픽을 관리하고 분배한다.클라이언트 요청을 여러 서버에 분산하여 서버의 부하를 줄인다.
  • 알 수 있는 정보 : IP 주소, TCP나 UDP 포트번호
  • 비용 : L4 스위치는 비교적 저렴한 편. L7 스위치에 비해 단순한 기능을 수행하기 때문

L7 Switch

  • 역할 : 응용층에서 작동하며 애플리케이션 레벨의 정보를 분석하여 트래픽을 관리, 트래픽을 처리할 때 HTTP, HTTPS, FTP 등의 프로토콜 정보를 분석하여 트래픽을 더 세분화하고 최적화함
  • 알 수 있는 정보 : 쿠키 및 세션 정보와 같은 애플리케이션 레벨의 데이터
    HTTP/HTTPS 요청의 URL, 메소드(GET, POST, PATCH, DELETE), 헤더 정보
  • 비용 : L7 스위치는 L4 스위치보다 비쌈( 애플레케이션 레벨의 복잡한 데이터 분석과 보안 기능을 제공하기 때문에 고성능 하드웨어가 필요하기 때문) SSL/TLS 암호화 해제 및 복호화 기능 등 고급 기능을 처리할 수 있어 가격이 높음.

요약하자면 , 요청의 내용을 얼마나 깊이 분석하느냐 !!의 차이
L4 스위치의 경우 3 ~ 4계층에 속하는 IP 주소 및 TCP/UDP Port 정보를 보고 로드밸런싱하지만, L7 스위치의 경우 3 ~ 7계층에 속하는 IP 주소 및 TCP/UDP Port 정보, 패킷 내용까지 모두 보고 로드밸런싱 해주는 장비이다.


What is RESTful?

REST란 ?

REST (Representational State Transfer)는 웹 서비스 설계 아키텍처의 하나로, 자원(Resource)을 정의하고 이를 HTTP 프로토콜을 통해 상태를 주고 받는 방식이다. 즉, 클라이언트와 서버 간의 상호작용을 규정하며, 웹의 기본 원칙과 패턴을 따르는 서비스 설계 방법론이다.

☑️자원(Resource)
자원은 웹 상에서 식별할 수 있는 모든 것(ex. 사용자, 게시물, 댓글, 상품)

☑️ 표현(Representation)
자원의 표현은 자원이 전송될 때, 그 자원의 상태를 어떻게 표현하는지에 대한 것 (자원의 상태를 클라이언트와 서버 간에 교환하는 것이 핵심)
일반적으로 JSON이나 XML 형태로 전송

☑️무상태성
서버가 클라이언트의 상태를 저장하지 않으며, 각 요청은 독립적이라는 의미
클라이언트는 요청 시 필요한 모든 정보를 포함하여 서버에 보내야 하며, 서버는 요청을 처리하고 필요한 응답을 반환

☑️계층 구조
REST 아키텍처는 계층적인 구조를 지향함
클라이언트는 서버와의 직접적인 통신 외에도, 프록시나 게이트웨이 같은 중간 계층을 통과하여 서버와 상호작용할 수 있음.

💬 내가 클라이언트의 입장이라면 좋아할만한 API path

  1. RESTful 표준 준수 (POST,GET, PATCH, DELETE)
  2. 자원 기반의 일관된 경로 (모든 경로 앞에 /api/를 붙이는 식으로)
  3. 경로에는 가능한 동작을 사용하지 않는 것
  4. 어순에 맞춰서 (ex 특정 사용자의 게시물 조회) → GET /api/users{userId}/posts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant