728x90

전체 글 176

[개념 정리/네트워크] TCP/IP 4계층 - 애플리케이션 계층

애플리케이션 계층이란 HTTP, SMTP, SSH, FTP가 대표적이며, 웹 서비스, 이메일 등 서비스를 실질적으로 사용자에게 제공하는 계층이다. HTTP(Hypertext Transfer Protocol) HTTP는 처음에는 서버와 브라우저 간 데이터 주고 받기를 위해 설계된 프로토콜이다. 지금은 브라우저 뿐만 아니라 서버와 서버 간의 통신에도 많이 이용된다. HTTP는 헤더를 통한 확장이 용이하다. 예를 들어, HTTP요청을 보낼 때, 헤더 값에 어떠한 값을 넣어 쉽게 다른 값을 추가할 수 있다. HTTP는 stateless하다. 동일한 연결에서 연속적으로 수행되는 요청 사이에 연속적인 상태(state)값이 기록되지 않는다. SSH(Secure Shell Protocol) SSH는 보안되지 않은 네트..

[개념 정리] 네트워크 - TCP/IP 4계층

TCP/IP 4계층 TCP(Transmissino Control Protocol)/ IP(Internet Protocol) 4계층이란 장치들(node)이 인터넷 상에서 데이터를 주고 받을 때 쓰는 독립적인 프로토콜의 집합을 의미한다. 인터넷을 통해 데이터를 주고 받을 때 주로 TCP와 IP를 이용하여 보내기 때문에 사용되는 용어이다. TCP/IP 4계층의 구성은 아래와 같다. 1. 애플리케이션 계층(application) 웹 서비스, 이메일 등 실질적으로 사용자에게 서비스를 제공하는 계층으로, 대표적인 애플리케이션 계층으로는 HTTP, SMTP, SSH, FTP가 있다. 2. 전송 계층(transport) 애플리케이션 계층에서 받은 메시지를 기반으로 세그먼트 또는 데이터그램으로 데이터를 쪼개어, 데이터가..

[개념 정리/네트워크] 네트워크 통신의 종류와 네트워크의 분류

네트워크 통신 3종류 유니캐스트: 1:1 통신, 대표적으로 HTTP 통신이 있다. 가장 일반적인 네트워크 전송 형태. 멀티캐스트: 1: N 통신, 다만 연결된 노드 중 특정 그룹에게만 데이터를 전달한다. 브로드캐스트: 1:N 통신이며 연결된 모든 노드에 데이터를 전달한다. 예시로는 ARP(Address Resolution Protocol)가 있다. 네트워크 3가지 분류 네트워크는 규모에 따라 LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network) 순으로 분류된다. LAN이 가장 작은 단위, WAN이 가장 큰 단위이며, 일반적으로 반경, 속도를 기반으로 분류한다. 그러나 반경과 속도는 기술의 발전에 따라 범위가 바뀌기 ..

[개념 정리/네트워크] 네트워크 토폴로지 5가지 종류별 특징 & 장단점

네트워크 토폴로지(Network Topology) 네트워크 토폴로지란 노드와 링크가 어떻게 구성되어 있는지 그 배치를 말한다. 토폴로지(topology)는 영어로 지형학이라는 뜻이 있는데, 노드와 링크의 배치된 지형과 비슷한 뜻으로 이해할 수 있겠다. 네트워크 토폴로지에는 대표적으로 버스, 스타, 트리, 링, 메시의 5가지 종류가 있다. 1. 버스 토폴로지(Bus topology) 버스 토폴로지는 하나의 회선에 여러 노드가 연결된 형태다. 마치 노드들이 중앙 회선(메인 링크)이라는 버스에 탄 것과 같은 형태다. 노드의 추가와 삭제가 쉽고, 설치 비용이 적다. 장점 소규모 네트워크를 구축하기 매우 쉽다. 한 노드에 장애가 발생해도 다른 노드에 영향을 미치지 않는다. 단점 메인 링크에 많은 트래픽이 생기면 ..

[개념 정리] 네트워크 - 주요 용어 정리

네트워크(Network) 네트워크란 노드(node)와 링크(link)가 서로 연결되어 리소스를 공유하는 집합을 말한다. 노드: 서버, 라우터, 스위치 등 등 네트워크 장치 링크(엣지): 와이파이, LAN과 같은 유선 또는 무선 연결 매체 트래픽(Traffic) 트래픽은 특정 시점에 링크 내에서 흐르는 데이터의 양을 말한다. 예를 들어, 서버에 저장된 문서, 이미지, 동영상 등의 파일을 클라이언트(사용자)가 다운로드 받을 경우 발생하는 데이터의 누적량이 트래픽이다. 트래픽은 영어로 교통의 통행량이라는 의미로도 사용된다. 링크라는 길에서 데이터의 통행량이라고 이해할 수 있다. 트래픽과 처리량은 혼동될 수 있는데, 아래와 같이 구부할 수 있다. 트래픽이 많아졌다. == 흐르는 데이터가 많아졌다. 처리량이 많아..

[개념 정리/디자인 패턴] 구조 패턴 - 프록시 패턴

프록시 패턴 프록시 패턴이란 객체가 어떤 대상 객체에 접근하기 전, 그 접근에 대한 흐름을 가로채서 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인 패턴이다. 대표적인 예시로는 서버 앞에 두어 캐싱, 로깅 등에 활용하는 프록시 서버가 있다. https 프록시 서버를 사용하여 내 서버를 https로 바꾸는 수고를 덜 수 있다. DDOS 공격을 필터링할 때에도 프록시 서버를 사용한다. 일반적으로 프록시 서버로 cloudfare를 두어 불필요한 트래픽, 또는 공격적인 트래픽을 필터링한다. 아래는 프록시 패턴을 사용하는 자바스크립트 예시 코드이다. function createReactiveObject(target, callback) { const proxy = new Proxy(targe..

[개념 정리/디자인 패턴] 행동 패턴 - 옵저버 패턴

옵저버 패턴 옵저버 패턴이란 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 알려주는 디자인 패턴이다. 대표적으로 트위터의 메인 로직과 MVC패턴에 적용되었다. 아래는 옵저버 패턴을 사용한 자바 예시 코드이다. import java.util.ArrayList; import java.util.List; interface Subject { public void register(Observer obj); public void unregister(Observer obj); public void notifyObservers(); public Object getUpdate(Observer obj); } interface Obser..

[개념 정리/디자인 패턴] 행동 패턴 - 전략 패턴

전략 패턴 전략 패턴이란 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트* 안에서 바꿔주면서 상호 교체가 가능하게 만드는 디자인 패턴이다. 아래는 자바로 로그인의 전략 패턴을 구현한 예시 코드이다. import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; interface PaymentStrategy { public void pay(int amount); } class KAKAOCardStrategy implements PaymentStrategy { private String name; private String cardNumber; private String cvv; private String dateOfExpi..

[개념 정리] 의존성 주입(DI), 의존 관계 역전 원칙(DIP)

의존성 배경 지식으로 의존성의 의미를 살펴보자. A가 B에 의존한다는 것은 B의 변화가 A에 영향을 미치는 것을 의미한다. 기호로는 A → B 로 표시한다 의존성 주입(DI, Dependecy Injection) 의존성 주입이란 메인 모듈(main module)이 직접 다른 하위 모듈에 의존성을 부여하지 않고, 중간에 의존성 주입자(dependency injector)를 두어 메인 모듈이 간접적으로 의존성을 주입하는 방식이다. 의존성 주입을 통해 메인 모듈과 하위 모듈 간의 의존성을 느슨하게 만들 수 있으며, 모듈을 쉽게 교체 가능한 구조로 만든다. DI를 적용하지 않은 예시 자바로 DI를 적용하지 않은 코드 예시를 살펴보자. 프로젝트라는 클래스가 있고, 프론트엔드 개발자, 백엔드 개발자라는 클래스가 있..

[개념 정리/디자인 패턴] 행동 패턴 - 이터레이터 패턴

이터레이터 패턴(Iterator pattern) 이터레이터 패턴은 이터레이터(반복자)를 사용하여 배열, 조합, 맵 등의 컨테이너의 요소들에 접근하는 패턴이다. (*컨테이너: 동질적인 요소들을 담아놓은 집합) 각기 다른 자료 구조들을 똑같은 인터페이스로 순회를 쉽게 할 수 있다는 장점이 있다. 예를 들어, 자바스크립트의 for of 가 이터레이터 패턴이다. 예시 아래는 자바스크립트 코드 예시이다. const map = new Map(); map.set('a', 1); map.set('b', 2); map.set('c', 3); const set = new Set(); set.add(1); set.add(2); set.add(3); const arr = []; for(let i = 0; i < 5; i ++..

728x90