전체 글 129

네트워크 전송 방식의 종류 - 유니캐스트, 브로드캐스트, 멀티캐스트, 애니캐스트

주의) L3 레이어에 한정된 개념이 아니니, 좀 더 포괄적인 개념으로 이해하자.유니캐스트일반적인 1:1 통신을 의미한다.인터넷 통신의 대부분이 이 유니캐스트로 분류된다.브로드캐스트해당 브로드캐스트 도메인에 속하는 자신 외 모두와 진행하는 1:n 통신을 의미한다.브로드캐스트 그룹은 데이터링크 계층에선 로컬 이더넷 네트워크가 될 수도 있고, 네트워크 계층에선 좀 더 넓은 범위가 될 수 있다.멀티캐스트특정 그룹에 속한 개체와의 1:n 통신을 의미한다.1이 자신을 의미하고,n이 특정 그룹을 의미한다.브로드캐스트보다 트래픽 효율이 높다.애니캐스트 (L3 한정)멀티캐스트 그룹에서, 가장 가까운 노드를 찾아 통신하는 방식을 의미한다.(1km은 예시임에 유의하자.)IPv6에서 추가된, L3 레이어의 새로운 기능이다.가..

스택과 힙, 힙의 단편화

최근 즐겨보는 유튜브 채널에서 재밌는 면접 질문을 보았다.웹 백엔드 개발자를 위한 주제는 아닌것 같긴 한데, 주제가 상당히 흥미롭고 재밌어서 작성해본다. GC에 대한 이해도를 높힐 수 있어 좋은 시간이었다.스택과 힙의 차이멀티스레딩 환경에서의 스택과 힙의 차이스택해당 스레드용메모리의 수명 파악 가능코드의 깊이로지나치게 깊은 스택은, 코드의 가독성을 떨어트린다.힙멀티스레드 환경에서의 전역변수 역할고수준 언어에서, 스택과 힙은 반드시 필요하다.메모리 단편화네이티브 메모리 할당의 문제점malloc은 느리다.시스템 콜이 필요함이는 nio의 native memory 할당에도 같이 적용된다.따라서, 메모리 할당과 해제에 신중해져야 한다.할당받은 native 메모리를, 직접 쪼개가며 재사용해야 할 수도 있다!메모리를..

메모리 압축(Memory Compaction), 그리고 Garbage Collector

우리는 단편화 문제에서 메모리 압축이 필요한 이유를 알 수 있었다. 지금부터 메모리 압축에 대해서 알아보자.메모리 압축 방식가장 기본적이고 간단한 메모리 압축은 두가지 방식으로 나뉘어진다.Sliding살아있는 객체들을 전부 한쪽 끝으로 몰아넣는다.장점추가 메모리의 요구가 없다.단점전체 메모리가 크게 이동해야 하기 때문에, stop-the-world 시간이 길어진다.Copying Compaction동작 방식공간을 절반으로 나눈다.1회 압축시마다, 데이터를 반대쪽으로 이동시킨다.이를 압축마다 반복한다.장점구현이 단순하다.Bump Allocator 연산을 사용할 수 있기 때문에, Stop-the-world 시간이 빠르다.sizeof(object) 연산을 이용해 다음 빈 포인터를 O(1)만에 찾는다.메모리의 이..

메모리 단편화와 페이징

메모리 단편화를 해결하는 방법, 페이징에 대해 알아보자.페이징페이징이란, 가상 메모리 공간의 메모리 관리 기법을 의미한다.페이징의 설계 방식메모리를 페이지 단위로 잘라서 사용한다.물리 메모리의 크기 단위를 프레임이라고 할 때, 가상 메모리를 위한 "페이지"라는 단위를 만들어하나의 페이지를 하나의 프레임과 1:1 크기로 매핑하는 것을 의미한다.프로세스는 자신이 할당받은 가상 주소 공간 내에서, 가상 메모리를 페이지 단위로 사용하게 된다.가상 주소 공간 관리 기법이다.페이징 자체에 가상 주소 공간 개념이 포함된다. 고정된 메모리 풀 할당 방식과 혼동하지 말자.페이징의 효과물리 메모리의 외부 단편화 문제를 해결한다.프로세스가 사용하는 메모리 계층과 할당되는 물리 메모리 계층을 분리한다.페이지의 크기가 줄어들수..

메모리 할당 문제, 그리고 메모리 단편화

메모리 할당 전략현재 다음과 같이 메모리가 할당되어 있다고 가정하자.만약 여기서, 어떤 프로세스가 세 칸의 메모리에 대한 할당을 요청했을 때, OS는 해당 메모리를 위한 빈 공간을 어떻게 지정할 수 있을까?우리는 이 상황에서 3가지 전략 중 하나를 선택할 수 있다.지금부터 각각 어떠한 전략인지를 알아보자.First-fitBest-fitWorst-fitFirst-fit순서대로 순회하다가, 가장 먼저 만나는 할당가능한 빈 공간을 지정한다.운이 없으면, 전체 메모리를 전부 순회해야 한다.여기서는 가장 먼저 만나는 빈 공간인 4칸을 선택한다.Best-fit모든 메모리 블록 중에서, 요청된 크기를 수용할 수 있는 블록 중 가장 작은 블록을 선택한다.항상 전체 메모리를 전부 순회해야 한다.여기서는 필요한 크기와 정..

무선 프로토콜 - Wi-Fi, Bluetooth, Zigbee

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다.센서 데이터 수집, IoT, 무선 인터넷 연결 등을 담당하는 무선 프로토콜의 종류에 대해 알아보자.Wi-Fi링크 참조블루투스저전력형 근거리 무선 통신 프로토콜장점소비 전력이 적고, 다양한 장치를 페어링해서 간단히 연결이 가능하다.단점전송 속도나 통신 거리면에서 극히 부족하다.동작 방식2.4GHz 대역을 79개 채널로 나눠 사용한다.주요 키워드FHSSAFH사용처블루투스 기기지그비초저전력형 단거리 무선 통신 프로토콜"지그재그"로 날아다니는 "벌"(bee) 에서 유래한 이름이다.장점슬립 시 대기전력이 블루투스보다도 작다.단점전송 속도나 전송 거리가 압도적으로 열악하다.동작 방식2.4GHz 대역을 16개 채널로 바꾸어 사용한다.주요 키워드QP..

무선 LAN(IEEE802.11) Wi-Fi - 물리 계층

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다.이번엔 무선 랜 프로토콜인, IEEE802.11에 대해 알아보자.IEEE802.11 과 Wi-Fi의 관계Wi-Fi는 이더넷처럼 하나의 프로토콜로 착각하기 쉽지만, 엄밀히 말하자면 둘은 서로 다르다.IEEE802.11IEEE802의 11번째 working group에서 개발된 표준 기술을 의미한다.무선 LAN의 표준 프로토콜 기술을 정의한다.Wi-FiWi-Fi Alliance: 무선 LAN을 보급하기 위한 목적으로 설립된 미국 단체해당 단체가 수행하는 상호 연결 설정을 의미한다.주파수 대역무선 랜은 크게 두가지 주파수 대역 중 하나를 사용한다.2.4GHz 대역5GHz 대역해당 대역폭을, "채널"이라는 형태로 나누어 사용한다.2.4GHz ..

여유 - 25년 4월 2주차 회고

네이버 기술면접 준비 전략문제 정의/구체화.추상적인 질문에 대한 답변을 어떻게 하지?개념을 연결지어 매핑해야 한다.주제를 내가 아는 영역으로 끌어와야 한다.좀 더 개선할 순 없을까?내가 구현하면서 생각했던, 비효율 포인트가 있나?있다면, 어느 부분이지?어떤 CS지식을 이용하면, 어떻게 개선 가능하지?내가 구현한 부분 충분히 구체화해두기.면접관이 추상적으로 느끼지 않도록.PR 되돌아보기.어떤 부분이 어려웠고, 어떤 부분을 개선할 수 있을지 이야기할 수 있도록 준비하기.학습기존 개념을 다른 도서에서 만날 때, 기존 개념과 연결하면서 성장 or 퇴화할 수 있다.되도록이면 깊게 이해해서 성장하도록 하자.여유원할한 의사소통을 위해선, 삶의 여유가 필요하다.삶의 여유 → 하고 싶은 일을 하는 것 or 가치 창출현재..

개인적 공간 2025.04.13

유선 LAN(IEEE802.3) 이더넷 - 물리 계층 관점

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 같이 보기: 이더넷 - 데이터링크 계층 관점IEEE802.3이란?유선 LAN의 물리 계층과 데이터 링크 계층(Data Link Layer)에서의 매체 접근 제어(MAC, Media Access Control) 방식을 규정하고 있다.IEEE802.3 과 이더넷의 관계하와이 대학에서 구축된 ALOHAnet으로 시작하였다.이더넷은 알로하넷을 참고해 DEC, Intel, Xerox PARC가 함께 개발한 기술로, 초기의 네트워크 환경에서 사용되었다.IEEE 802.3은 이더넷 기술을 보다 체계적이고 상호 운용 가능하게 만들기 위해 정립된 표준이다.실제 네트워크 환경에서는 IEEE 802.3 표준을 따르는 유선 연결 기술을 이더넷이라고 부른다..

Java I/O vs Java NIO - 왜 NIO는 단일 버퍼 모델을 채택했을까?

글의 목적JAVA I/O 와 Java NIO는 목적 자체가 다르고, 상황에 맞게 써야 한다는데, “그럼 대체 뭐가 달라서, 어떤 기준으로 사용해야 하는가?”에 대한 탐구를 수행한 과정을 기록한다.Java NIO 버퍼 입출력 메소드 - flip, clear, compact기본 개념 - ByteBuffer 동작 방식쓰기 모드 (Writing mode)데이터를 버퍼에 쓸 때 사용한다.position: 현재 쓸 위치limit: 쓰기 가능한 최대 범위(일반적으로 버퍼의 capacity)로 설정된다.읽기 모드 (Reading mode)버퍼에 쓰여진 데이터를 읽어올 때 사용한다.position: 현재 읽을 위치limit: 읽기 가능한 최대 범위(일반적으로 write 모드때의 마지막 position)로 설정된다.쓰기→..

네트워크의 형태 - LAN, WAN, DMZ

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다.표준 네트워크 형태크게 다음과 같이 세가지로 구분된다.LAN에서 WAN으로 이어져, DMZ 의 공개 서버에 접속하는 형태이다.LAN정의Local Area Network가정이나 기업 등, 한정된 범위의 네트워크를 의미한다.가정의 LAN 환경과 기업의 LAN 환경은, 규모와 설비 면에서 어느정도 차이가 있다.가정의 LAN 환경스마트폰, 태블릿, TV 등등이 LAN으로 연결된다.그 다음 인터넷으로 연결된다.구조인터넷브로드밴드 라우터단말기업의 LAN 환경가정용 LAN보다 좋은 성능으로 구성된다.기업의 LAN 환경에 붙는 추가 기능Redunduncy(이중화)어딘가 하나가 고장나도, 반대쪽에서 처리가 가능하도록 장치를 구성한다.L2 루프 방지프레..

네트워크 장비/기기의 종류와 역할 총정리

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다.네트워크 구성 기기네트워크 구성 기기는 각각 자신이 속한 계층까지만 처리할 수 있다.지금부터 각 계층에 속하는 기기들을 알아보자.물리 계층역할물리적인 사양에 관하여 모두 정의되어 있는 것들을 담당한다.케이블/커넥터 형태핀 할당(핀 배열)패킷의 컨버팅광 신호(케이블)/전기 신호(LAN)으로 변환전파로 변조다루는 PDU: 비트종류NIC, 리피터, 리피터 허브, 미디어 컨버터, 액세스 포인트각각 어떠한 장치들인지 알아보자.NICNetwork Interface Card기본 기능모든 네트워크 단말(스마트폰/PC/태블릿 등)은 애플리케이션이나 운영체제가 처리한 패킷을 NIC를 이용해 LAN 케이블이나 전파로 보내게 된다.네트워크 인터페이스/네트워..

PDU, PCI, SDU란?

통신 프로토콜은 일반적으로 여러 계층으로 나뉘며, 각 계층은 상위 계층에서 전달받은 데이터를 포장해 하위 계층으로 전달한다.이때 등장하는 SDU, PCI, PDU의 의미에 대해 알아보자.SDU (Service Data Unit)상위 계층이 하위 계층에 전달하는 서비스 단위를 의미한다.특징상위 계층의 사용자 데이터를 그대로 포함하며, 아직 하위 계층의 제어 정보(header, trailer 등)가 첨가되지 않은 상태이다.하위 계층에서는 이 SDU에 자신의 프로토콜 제어 정보(PCI 등)를 덧붙여 PDU를 생성한다.PCI (Protocol Control Information)각 계층의 하위 계층이 부가하는 제어 정보로, 데이터의 처리 및 전달, 오류 검출·수정, 흐름 제어, 순서 보장 등의 역할을 수행한다...

네트워크와 프로토콜

네트워크의 역사와 발전과정, 네트워크의 기본 구조를 살펴보도록 하자.네트워크란?네트워크의 역사1960년대시분할 시스템(Time Sharing System)과 네트워크과거 1960년대에는, 한대의 대형 컴퓨터의 처리를 짧은 시간으로 나누어 여러 사람이 사용하도록 만들었다.따라서, TSS 단말에서 대형 컴퓨터에 전화를 걸어 접속한 뒤, 마치 이를 전용 컴퓨터처럼 취급하였다.이것이 네트워크의 시초이다.1970년대ARPANET데이터를 패킷이라 부르는 작은 단위로 잘라서 취급하는 패킷 교환 방식이 도입되었다.네트워크의 데이터 전송 방식네트워크의 데이터 전송 방식에는 크게 두가지가 있다.회선 교환 방식(Circuit Exchange Method)일대일 전송로를 먼저 만들고, 교환을 마칠때까지 전송로를 계속 사용하는..

캐싱 전략의 선택 방법

캐싱 전략은 읽기/쓰기 정책과 캐시 인프라 구조에 따라 달라진다. 각 전략은 상황에 맞게 선택되어야 하며, 읽기/쓰기 정책 관점, 캐시 인프라 구조 관점으로 구분할 수 있다.1. 읽기/쓰기 정책 관점Cache Aside특징주로 읽기 작업에 적합하다.개발자가 직접 캐시 히트/미스 로직을 구현한다.캐시 장애에 대비한 구성이 가능하다.데이터 업데이트 시 정합성 문제가 발생할 수 있다.동일 쿼리를 반복 수행하는 서비스에 유리하다.Write Back특징쓰기 작업에 적합하다.Cache Store가 Data Store에 Write 부하를 줄이기 위해 Throttling Queue 역할을 수행한다.캐시 장애 시 데이터 유실 위험이 있다.캐시에 변경사항을 먼저 적용하므로 정합성이 확보된다.조회되지 않는 데이터가 불필요하..

WEB BE Repo/Redis 2025.04.09

웹 캐시

본 내용은 "HTTP 완벽 가이드" 와 모든 개발자를 위한 HTTP 웹 기본 지식 내용을 참고하여 기록한 정리본입니다.정말 중요한 챕터이다.반드시 이해하고 넘어가야 한다.캐시의 장점불필요한 데이터 전송을 제거같은 데이터가 반복해서 요청될 경우, 네트워크 대역폭이 낭비되는 공간이 생길 수 있다.데이터 저장을 계층화하여, 중복된 트래픽을 제거할 수 있다.네트워크 병목을 제거클라이언트가 서버에 접근할 때의 속도 = 그 경로에 있는 가장 느린 네트워크의 속도이다.일반적으로 원격 서버보다 로컬 네트워크가 더 넓은 대역폭을 제공하기 때문에,빠른 LAN에 있는 캐시로부터 사본을 가져오면, 성능 개선이 가능하다.오프로딩(Offloading)원서버에 대한 요청 수를 완화할 수 있다.갑작스런 요청 쇄도에 의한 원 서버의 ..