전체 글 242

UDP

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. UDP는 User Datagram Protocl의 약자로, TCP보다 훨씬 가볍고, 커스터마이징이 용이한 프로토콜이다. (하얀 도화지를 상상하면 좋다.) 주로 아래와 같은 즉시성을 요구하는 애플리케이션에서 사용된다.음성 통신 (Voice over IP, VoIP)DNSDHCPNTP(시간 동기화 프로토콜)동작 방식데이터그램을 만들고, 서버나 상대를 신경쓰지 않고 계속 보내기만 한다.데이터를 받아들인 쪽은 UDP 헤더에 포함된 UDP 데이터그램 길이와 체크섬을 이용해 데이터가 손상되지 않았는가를 검증한다.체크섬 검증에 성공하면, 데이터를 받아들인다.UDP의 IP 헤더의 프로토콜 번호는 '17(0x11)' 이다.UDP 패킷 포맷헤더의 길이..

포트 번호

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 전송계층의 핵심은 포트 번호이다.받은 IP 패킷을, 어느 애플리케이션에 전달해야 할지를 결정하는 것이 포트 번호이다.포트 번호는 0번부터 65535번까지 있으며, 다음과 같이 분류할 수 있다.지금부터 각 포트 번호의 종류와 사용처에 대해 알아보자.포트번호의 종류수신지 포트 번호에 사용System Ports0~1023User Ports1024~49151송신지 포트 번호에 사용Dynamic and/or Private Ports49152~65535참고) 멀티플렉싱&디멀티플렉싱시스템 포트0~1023주로 수신 시 사용하는 포트 번호 대역이다.웰 노운 포트(Well-known Ports) 라고도 불린다.IANA가 관리한다.포트 + 전송 프로토콜..

NAT

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. NAT는 Network Address Translation의 약자로, IP 주소를 변환하는 기술을 의미한다.이는 부족한 글로벌 IP 주소의 절약 및 같은 네트워크 주소를 가진 시스템 사이 통신에 기여한다.NAT는 변환 전후의 IP 주소나 포트 번호를 NAT 테이블이라는 메모리상의 테이블로 묶어서 관리하며, NAT는 이 NAT 테이블에 따라 동작한다.주의) 두가지 의미를 가지고 있다.넓은 의미의 NAT주소를 변환하는 기술 전부를 의미한다.좁은 의미의 NAT정적 NAT(1:1 NAT)NAT의 종류 중 정적 NAT와 동적 NAT중 하나인 NAPT, 그리고 NAT를 위한 NAT Traversal에 대해 알아보자.정적 NAT정의내부와 외부의 ..

IP 주소 할당 방법 - 정적 할당, 동적 할당(DHCP)

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 그렇다면, IP 주소를 어떻게 단말의 NIC에 할당하는걸까?IP 주소의 할당 방법에는 위와 같은 방법들이 있다.이중에서, 정적 할당과 IPv4를 위한 동적 할당 기법인, DHCPv4에 대해 알아보자.정적 할당IP주소의 정적 할당은 각 단말별로 수동으로 IP주소를 설정하는 방법이다.단말의 사용자가 시스템 관리자에게 부탁해, 남아 있는 IP주소를 받아서 설정하는 방식으로 동작한다.서버나 네트워크 기기는 IP 주소가 자주 변하면 통신에 영향을 미치므로, 대부분 이 할당 방식을 사용한다.10여 명 정도의 작은 사무실 네트워크 환경에서, 시스템 관리자가 어떤 단말에 어떤 IP주소를 설정했는지 완전히 파악해 두어야 하는 경우에도 이 할당 방식을..

IP 라우팅

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 지금부터 라우팅, 라우팅 테이블, 라우팅 프로토콜에 대해서 알아보자.라우팅이란?라우팅 & 라우팅 테이블이란?라우터나 L3 스위치는 IP 패킷의 전송 대상지를 바꿀 수 있다.수신지 IP 주소명확히 주어진 수신지 네트워크 정보IP 패킷을 전송할 근접 기기의 IP 주소를 나타내는 네트워크 홉 정보를 관리함으로써이 전송 대상지를 바꾸는 것을 "라우팅"이라고 한다.수신지 네트워크 정보와 네트워크 홉을 관리하는 테이블을 "라우팅 테이블"이라고 한다.라우터가 IP패킷을 라우팅하는 형태모든 기기가 근접 기기의 MAC 주소를 학습한 상태라고 가정하자.네트워크 계층에서, 주어진 IP를 찾을 수 있는(해당 IP를 포함하는 서브넷) 넥스트 홉의 IP를 라..

IPv4

IPv4란?커넥션리스 타입(비연결) 인터넷 프로토콜이다.커넥션리스 타입: 다음 글 참고L2 헤더에는 0x0800으로 정의되어 있다.RFC791 에서 상세 정보를 알 수 있다.IPv4의 패킷 포맷링크 참고IPv4 주소 형태표기법 - 10진수 표기법8비트씩 점(.) 으로 구분해서 10진수로 표기하는 것을 의미한다.127.0.0.1192.168.1.1IPv4 주소는 최적화를 위해 어디서부터, 어떻게, 어디까지 활용해야 하는지에 대한 형태가 프로토콜로 정의되어 있다.아래 내용을 통해 IPv4 주소의 구조를 파악해보자.분류 방식사용 용도사용 장소예외 주소/비 예외 주소사용 용도에 따른 분류클래스풀 어드레싱IPv4 주소를 사용 용도에 따라 클래스 A, B, C, D, E로 나누어 사용하는 것8비트 단위로 클래스를 ..

IPv4 주소와 서브넷 마스크

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. IPv4 주소는 숫자는 익숙한데 정확히 어떤 기능인지 모호하게 다가올 때가 있다.IPv4 주소의 의미와 이렇게 정의된 이유에 대해 알아보자.표기법 - 10진수 표기법8비트씩 점(.) 으로 구분해서 10진수로 표기하는 것을 의미한다.127.0.0.1192.168.1.1IP주소의 구성IP주소는 네트워크 부분과 호스트 부분으로 나누어져 있다.라우팅의 최적화를 위해 이렇게 나눠두었다.네트워크 단위로 라우팅을 수행하기 위해서,브로드캐스팅 도메인을 제한하기 위해 이렇게 나누어두었다.네트워크 부분어느 네트워크에 속하는지를 나타낸다.호스트 부분서브넷 부분어느 그룹에 속하는지를 나타낸다.호스트 부분어느 호스트인지를 나타낸다. 서브넷 마스크라우터가 특..

IPv4 패킷의 구조

버전IP의 버전을 나타내는 4비트 필드이다.IPv4에서는 "0x4" 가 들어간다.헤더 길이(Internet Header Length, IHL)IPv4의 헤더 길이를 나타내는 4비트 필드이다.헤더의 길이를 4바이트 단위로 환산한 값이 들어간다.1바이트, 1비트 단위가 아님에 유의하자.IPv4 헤더의 길이는 20바이트 이므로 "0x5"가 들어간다.ToS(Type of Service)정의IPv4 패킷의 우선도를 나타내는 1바이트(8비트) 필드이다.우선 제어, 대역 제어, 혼잡 제어 등 QoS(Quality of Service)에서 사용한다.미리 네트워크 기기에서 '이 값이면 최우선으로 전송한다.', '이 값이면 이것만은 보증한다' 등 정책을 설정해 두고송신자가 적절한 헤더를 선택함으로써 QoS를 지원할 수 있..

ARP - 주소 결정 프로토콜

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. IP주소는 OS상에서 설정한 논리적인 주소인데, MAC는 NIC 자체에 내장되어 있는 물리적인 주소이다.IP 주소는 DNS, 다른 전달 방식 등을 통해 공유할 수 있는데,NIC에는 MAC 주소를 직접 요청할 기능같은게 없다.MAC 주소를 공유하기 위한 프로토콜, ARP에 대해 알아보자.ARP란?Address Resolution Protocol - 주소 결정 프로토콜수신지 IPv4주소로부터, 수신지 MAC주소를 구하는 방법이다.참고) IPv6의 MAC 주소 결정은 ICMPv6에서 수행한다.2.5계층 느낌으로, 네트워크 계층과 데이터링크 계층 사이의 인터페이스 역할을 수행한다.라우터가 MAC 주소 요청을 받으면,ARP를 이용해 로컬 이더..

유선 LAN(IEEE802.3) 이더넷 - 데이터링크 계층 관점

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다. 같이보기: 이더넷 - 물리 계층 관점 지금부터 이더넷의 데이터링크 계층에서의 역할에 대해 알아보자.알아볼 내용은 다음과 같다.데이터링크 계층의 역할이더넷 프레임MAC 주소이더넷을 위한 장비, L2 스위치가 제공하는 기능데이터링크 계층의 역할물리 계층과 비교하면물리 계층은 디지털 데이터를 전파 신호로 변환하고,데이터링크 계층은 디지털 데이터 전체의 정합성 체크를 수행한다.물리계층과 연계해서 동작하기 때문에, 물리 계층과 함께 프로토콜로 정의되어 있다.이더넷 프레임정의이더넷 프로토콜에 의해 캡슐화된 패킷을 의미한다.이더넷 프레임 포맷의 종류이더넷 II 규약사실상 표준IEEE802.3 규약이더넷 II에 몇가지 기능을 더 추가했지만, 이미 ..

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

주의) 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..