본문 바로가기

네트워크

(17)
[네트워크] Blocking I/O와 Non-Blocking I/O, 그리고 프론트엔드의 탄생(feat. Node.js) Blocking I/O와 Non-Blocking I/O는 개발을 하다보면 자주 접하게 되는 용어이다. 최근 현업자분께서 분야를 막론하고 신입 개발자에게 중요한 네트워크 관련 지식 중 이 동기와 비동기에 관한 이야기를 해주셨다.그래서 이 참에 프론트엔드 개발자의 시점에서 이 개념에 대해 이해한 바를 정리해보고자 한다. 이 글을 I/O의 개념과 왜 느린지, 그리고 Node.js가 이 문제를 어떻게 해결해왔고, 프론트엔드 개발자가 이를 알아둬야하는 이유까지 담아보고자 한다. 우선, 필자는 최근까지 Blocking I/O, Non-Blocking I/O를 동기와 비동기와 동일한 개념으로 받아들이고 있었다. 하지만 이는 독립적인 개념이다. I/O 란? 우선 Blocking과 Non-Blocking에 대해 다루기 ..
[네트워크] 도메인 입력 시 발생하는 일에 관하여 (2편-DNS 조회) 이전글에서 설명했듯이 hosts파일이 없고, 캐시도 없을 경우, DNS 조회 단계로 넘어가게 된다. DNS는 인터넷 상에서 도메인 이름(예 naver.com)을 IP 주소로 변환하는 시스템이다. 일단 우리가 접속할려고 하는 웹사이트의 소스를 가진 서버와 내 컴퓨터가 연결이 되어야 소스를 긁어오든 말든 할 수 있다.그런 의미에서 필자는 DNS 조회 단계가 클라이언트와 서버간의 통신을 위한 전초단계라고 이해했다.  DNS 조회만 해도 꽤 여러 단계가 있는데 왜 굳이 귀찮게 또 여기저기 다른 DNS 서버들을 순회해야하나 싶을 수 있다.그런데 그러지 않을려면 KT, SKT 같은 회사가 전세계에 존재하는 모든 도메인과 IP 주소의 매핑데이터를 가지고 있어야 한다...더군다나 새로운 도메인이 추가되거나, 기존 도메..
[네트워크] 도메인 입력 시 발생하는 일에 관하여 (1편-최적화) 이전에 도메인 주소를 입력했을때, 어떤 일이 발생하는지, 어떠한 과정을 거친 이후에 우리에게 웹 페이지를 보여주는지에 대해 설명한 적이 있다. 그러다가 최근 이전에 정리한 내용을 복습할겸, 새로 추가하고 싶은 내용들이 생겨서 각 단계 별로 이전 내용과 종합한(+ 개인적으로 흥미로웠던 사실들을 함께) 글을 새롭게 작성해보고자 한다.   일단, 개발자들은 효율에 미친 사람들이기 때문에 반복되는 작업을 극혐한다.그렇기 때문에 시스템상에 웹 주소의 IP를 빠르게 찾기 위한 여러 최적화 시스템을 심어놓았는데 그중에 하나가 Hosts파일이다. 1. 로컬의 Hosts 파일 조회우리가 사용하는 운영 체제에는 hosts라는 파일이 있다.이 hosts라는 파일은 운영 체제마다 존재하며 특정 도메인 이름을 IP 주소로 직접..
[네트워크] 인터넷 연결은 어떻게 이루어지는가 이번 글에서는 그동안 다뤘던 네트워크의 개념들을 우리가 사용하는 장비들이 인터넷에 연결되는 상황을 예시로 들면서 간단하게 정리해보고자 한다.  1. 모뎀, 공유기우리가 흔히 사용하는 티비, 노트북, 스마트폰이 인터넷에 연결되기 위해서는 IP주소가 필요하다. 우선, 인터넷에 연결되기 위해서는 랜선과 모뎀을 연결해야할 것이다. 여기서 모뎀의 역할은 컴퓨터나 라우터로부터 받은 디지털 데이터(0과 1로 구성된)를 아날로그 신호로 변환하는 역할을 한다.즉, 모뎀은 OSI 7계층 모델에서 "물리 계층"(Physical Layer)인 1계층에 속한다고 볼 수 있다.  인터넷과 다이렉트로 연결된 모뎀에 여러개의 장치들을 직접적으로 연결한다면 각각의 장치들은 개별적인 IP주소를 가져야만 할 것이다.하지만 이전 글에서 설..
[네트워크] IP 주소 할당과 DHCP 이전글에서 IP란 무엇이고, 어떤식으로 구성되어있으며, 어떤 역할을 하는지 설명했다.이번에는 이 IP주소를 네트워크내에 장치에게 어떻게 할당하는지에 대해서 이야기해보고자한다. 우선, IP 주소를 할당하는 방법에는 크게 두가지 동적 할당과 정적 할당이 있다.  1. 동적 주소 할당 프로토콜 (DHCP: Dynamic Host Configuration Protocol)DHCP 서버는 네트워크내 특정 장치가 연결이 되어있을때만 IP 주소를 할당한다. 더 구체적으로는 네트워크 안에 연결이 감지되었을때 해당 장치에 네임 서버 주소, IP주소, 게이트웨이 주소를 할당하는 것이다.또한, DHCP 서버는 네트워크 내 사용 가능한 IP 주소 풀(pool)에서 IP주소를 관리한다. 그렇기에 장치가 네트워크에 재연결될 때 ..
[네트워크] IP 주소고갈 문제 IP는 우리가 익히 알고 있듯이, 192.168.1.100 이런식으로 적혀져있는 숫자이며, 주소값이다.메모리는 유한하기에 숫자의 조합은 방대하더라도 분명히 끝은 정해져있다. 이것이 IP 주소고갈 문제로 이어진다.  기존의 IPv4 방식의 경우, 32비트 주소 체계를 사용하여 약 42억 개의 고유한 주소를 제공할 수 있다. 하지만 인터넷의 급속한 확장으로 인해 현재 이미 99%의 주소가 할당되어 있으며, 더이상의 신규 주소 할당은 막아놓은 상태이다. 마치 더 이상 개척할 땅이 없으면 개발을 멈출 수 밖에 없는 상황과 비슷하다고 할 수 있다. 그렇다면 네트워크에서 IP주소가 고갈되면 어떠한 문제가 있길래 이를 방지해야하는 걸까 싶을 수 있다.  1. 장치 추가 제한가장 쉽게 떠오를 수 있는 문제는 네트워크내..
[네트워크] IP란? 이전에 TCP에 대해 다루면서 IP에 대해서도 언급했지만 다소 설명이 부족한 부분이 있었던 것 같아 따로 IP에 관해서 자세하게 다뤄보고자 한다. 이전에 설명했듯이 IP는 Internet Protocal의 준말로 프로토콜이라는 것은 곧 규칙이자 약속이라는 의미이다. 그리고 이 규칙을 통해 네트워크에서 PC간 서로를 식별할 수 있으며, 패킷의 목적지가 다른 네트워크에 있어도 경로 상의 라우터가 IP 헤더를 참조해 IP 패킷을 전송하는 라우팅을 수행할 수 있는 것이다. 즉, IP주소는 어떠한 기기가 인터넷에 접속한 곳의 네트워크상 위치인것이다. 그렇다면 IP주소는 대체 어떤 식으로 구성되어 있을까? IP 주소의 구성IP 주소는 일반적으로 네트워크 주소와 호스트 주소로 나눌 수 있다. 예를 들어, IPv4 주..
[네트워크] OSI 7계층이란? OSI 7 Layer (OSI 7계층)은 네트워크 통신 과정을 7단계로 나눈 모델이다.이처럼 7계층으로 나눈 이유는 easy for troubleshooting the network problems 즉 통신이 일어나는 과정이 단계별로 파악할 수 있도록 하는 것이 목적이라고 할 수 있다.각 계층은 하위 계층의 서비스를 이용해 상위 계층에 서비스를 제공한다.암기 팁: Please Don’t SPA물리 계층(Physical Layer)전기, 기계적 신호를 주고받는 계층데이터의 종류, 오류 제어를 하지 않음전송단위: 비트장비: 통신 케이블, 허브, 리피터 등데이터 링크 계층(Data Link Layer)Point to Point 간의 신뢰성 있는 전송을 보장하기 위한 계층전송 데이터에 대한 CRC 오류제어가 필..