이열매의 메모장
기본 네트워크 용어 정리 본문
용어 정리
LDAP
-
Lightweight Directory Access protocol
-
인터넷 기반 분산 디렉토리 서비스 프로토콜
-
표준 디렉토리 구조 X.500 을 사용하는 DAP을 단순/경량화한 프로토콜
-
구조
-
트리 구조의 형태로 데이터 처리
-
이름을 기준으로 대상 조회 및 편집
-
각각의 엔트리(노드)로부터 위로 올라가 고유값(DN)을 가짐
-
ACL
-
Access Control List
-
일반적으로 파일과 디렉토리에 대한 소유자와 권한 설정에 대한 목록
-
Network ACL의 기능
-
라우터와 네트워크 자원, 방화벽에 대한 접근 설정
-
통신 과정에서의 전송 허용 및 거부 조건 목록
-
거부 조건 조합 사항
-
소스 IP 주소
-
목적지 IP 주소
-
소스 포트 번호
-
목적지 포트 번호
-
-
NAT
-
Network Address Translation
-
외부망에서 사설망 내부로 접근이 불가하도록 보안 강화
-
하나의 공인 IP(ipv4)를 여러 개의 사설 IP로 변환하는 시스템
VPN
-
Virtual Private Network
-
공중망을 사용하여 둘 이상의 네트워크를 연결
-
가상의 터널을 통해 인증 및 데이터 암호화
REST API
-
REST 기반의 API
-
Representational State Transfer
-
클라이언트가 HTTP URI에 조작할 자원의 상태를 명시하여 서버에 조작을 요청
-
HTTP Method (POST, GET, PUT, DELETE)를 통해 자원에 대한 CRUD Operation을 적용
-
서버는 json, xml, text, rss 등 여러 형태로 representation함
-
-
배경
-
서버에서 다양한 클라이언트/멀티 플랫폼 지원을 위한 통신 필요
-
어플리케이션의 분리 및 통합 요구
-
-
장점
-
언어나 기술 종속성 x
-
확장성 및 재사용성이 높아 유지 보수에 유리
-
별도의 인프라 구축없이 HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능
-
-
서버와 클라이언트의 역할 분리
-
서버-클라이언트 구조
-
서버
-
API 제공
-
비즈니스 로직 처리
-
자원 저장
-
-
클라이언트
-
사용자 인증
-
세션, 로그인 정보(context) 관리 및 책임
-
-
-
-
특징
-
캐시 사용
-
Stateless
-
HTTP 프로토콜과 동일하게 클라이언트가 서버에 context를 저장 x
-
-
계층화 (Layered System)
-
REST Server 는 다중 계층으로 구성이 가능
-
-
RPC
-
Remote Procedure Call
-
분산 네트워크 환경에서 원격 서버의 코드를 실행
-
이를 통한 코드를 용도에 따라 분류 및 독립화 가능
-
Apache Thrift
-
다양한 언어를 지원하는 아파치의 RPC 프레임워크
-
Cross language available한 특성으로 비즈니스 로직에 집중 가능
-
CI/CD 워크플로우
-
애자일 방식을 따르기 위한 지속적인 자동화와 모니터링
-
CI
-
Continuous Integration
-
변경 사항이 테스트를 거쳐 자동으로 업로드되는 것
-
-
CD
-
Continuous Deployment
-
변경 사항이 개발 레포에서 프로덕션 환경까지 자동으로 릴리즈되는 것
-
cURL
-
다양한 통신 프로토콜을 사용해 데이터 전송 지원 라이브러리
-
REST API 테스트에서 주로 사용
-
주 사용 옵션
-
-H : http Header / 헤더값 설정
-
-X : 사용할 메소드 설정
-
-d : data / 전달할 값 설정
-
직렬화(Serialization)
-
자바 시스템 내부(JVM)에 상주한 객체 또는 데이터를 바이트 형태로 변환
-
역직렬화는 이를 다시 객체로 변환하는 기술
-
특징
-
API 사용 등 자바 시스템 간의 데이터 교환 가능케 함
-
JVM의 메모리에 상주하는 객체의 데이터 영속화할 필요가 있을 경우 사용
-
세션 클러스터링 등 세션 저장 시, WAS의 세션 객체 저장 시
-
캐시 라이브러리(Ehcache, Memcached, Redis) 사용 시
-
-
자바 RMI(Remote Method Invocation) 사용 시 필요
-
IP와 포트를 사용한 소켓 통신을 추상화하여 원격 메소드를 로컬 메소드처럼 호출
-
원격 메소드 호출 시 전달하는 객체를 직렬화하여 호출
-
원격 시스템에서는 해당 메세지를 역직렬화하여 사용
-
-
동기/비동기
-
동기 (Synchronous)
-
순차적 실행
-
요청에 따른 결과가 올 때까지 대기
-
요청한 노드와 요청 받은 노드의 작업 단위가 맞춰짐
-
-
비동기 (Asynchronous)
-
동시 실행
-
요청 노드는 요청을 날린 후, 대기 없이 바로 사용 가능 (non-blocked)
-
노드 간 작업 처리가 비일치하지만 효율성에 유리
-
Proxy
- 포워드 프록시와 리버스 프록시가 존재
- 이 때, 클라이언트에서 프록시 서버로 접근에 요청할 경우 리버스 프록시, 반대의 경우를 포워드 프록시라고 한다
XFF
- X-Forwarded-For
- HTTP Header 종류의 하나
- 프록시나 로드밸런서 사용 시, Client IP와 Proxy IP 정보를 다음과 같은 형식(콤마 , 로 구분)으로 모두 저장
- X-Forwarded-For: client, proxy1, proxy2
- 프록시를 통하면 실제 브라우저 등 사용 서버 로그에 프록시 서버에 대한 정보가 남게 되는데 이 때, XFF 헤더 사용 시, 요청자(Client)의 IP를 식별 가능