Primrose Docs
  • Home
    • ⛓️Blockchain
      • Avalanche
        • What is AVAX?
      • Ethereum
        • Ethereum Cancun Upgrade Explained(draft)
        • go-ethereum: gas estimate
        • Blockchain Transaction Lifecycle
        • Mempool
        • Gas optimization in Solidity, Ethereum
      • Solidity DeepDive
        • Meta transaction
        • solidity: patterns
        • UUPS vs Transparent
        • Solidity Interface
        • Smart contract storage
        • ERC-2981 Contract
        • Solidity modifier
        • Solidity delete keyword
        • How To Make NFTs with On-Chain Metadata - Hardhat and JavaScript
        • How to Build "Buy Me a Coffee" DeFi dapp
        • How to Develop an NFT Smart Contract (ERC 721) with Alchemy
        • Upgradeable Contract
        • Smart Contract Verification
      • Common
        • Eigenlayer
        • MultiSig(draft)
        • Chain-Based Proof-of- Stake, BFT-Style Proof-of-Stake
        • Byzantine Fault Tolerance
        • Zero-knowledge
        • Hierarchical Deterministic Wallet
        • Maker DAO
        • Defi
        • Uniswap
        • IBC
        • Cosmos
        • Gossip Protocol
        • Tendermint
        • UTXO vs Account
        • Blockchain Layer
        • Consensus Algorithm
        • How does mining work?
        • Immutable Ledger
        • SHA256 Hash
        • Filecoin
        • IPFS - InterPlanetary File System
        • IPFS와 파일코인
        • Livepeer
        • Layer 0
      • Bitcoin
        • BIP for HD Wallet
        • P2WPKH
        • Segwit vs Native Segwit
    • 📖Languages
      • Javascript/Typescript
        • Hoisting
        • This value in Javascript
        • Execution Context
        • About Javscript
        • tsconfig.json
        • Nest js Provider
        • 'return await promise' vs 'return promise'
      • Python
        • Pythonic
        • Python: Iterable, Iterator
        • Uvicorn & Gunicorn
        • WSGI, ASGI
        • Python docstring
        • Decorator in Python
        • Namespace in Python
        • Python Method
      • Go
        • GORM+MySQL Connection Pool
        • Context in golang
        • How to sign Ethereum EIP-1559 transactions using AWS KMS
        • Mongo DB in golang(draft)
        • Golang HTTP Package
        • Panic
        • Golang new/make
        • golang container package
        • errgroup in golang
        • Generic Programming in Golang
        • Goroutine(draft)
    • 📝Database
      • MongoDB in golang
      • Nested loop join, Hash join
      • DB Query plan
      • Index
      • Optimistic Lock Pessimistic Lock
    • 💻Computer Science
      • N+1 query in go
      • Web server 를 구성할 때 Thread, Process 개수를 어떻게 정할 것인가?
      • CAP
      • Socket programming
      • DNS, IP
      • URL, URI
      • TLS과 SSL
      • Caching(draft)
      • Building Microservices: Micro Service 5 Deploy Principle
      • Red Black Tree
      • AOP
      • Distributed Lock
      • VPC
      • Docker
      • All about Session and JWT
      • Closure
      • Singleton Pattern
      • TCP 3 way handshake & 4 way handshake
      • Race Condition
      • Process Address Space 
      • Call by value, Call by reference, Call by assignment
      • Zookeeper, ETCD
      • URL Shortening
      • Raft consensus
      • Sharding, Partitioning
    • 📒ETC
      • K8S SIGTERM
      • SQS
      • Git Branch Strategy: Ship / Show / Ask
      • Kafka
      • Redis Data Types
      • CI/CD
      • How does Google design APIs?
      • Minishell (42 cursus)
      • Coroutine & Subroutine
      • Redis
Powered by GitBook
On this page
  • IP
  • DNS
  • DNS 구성 요소
  • Public DNS 와 Private DNS
  • 퍼블릭 DNS
  • 프라이빗 DNS
  • DNSSec
  1. Home
  2. Computer Science

DNS, IP

DNS, IP

IP

IP 가 인터넷 프로토콜의 약자이고, IP 주소라고 하면, 우리가 네트워크에서 주소 지정 가능 위치라고 생각할 수 있다.

IP 주소는 인터넷에 연결된 모든 디바이스에 부여된 식별자.

모든 주소는 해당 네트워크 내에서 고유하다.

일반적인 주소 형식인 IPv4 는 다음과 같이 4개의 숫자 세트로 작성된다.

121.121.121.121

DNS

... DNS는 IP 주소 및 기타 데이터를 저장하고 이름별로 쿼리할 수 있게 해주는 계층형 분산 데이터베이스입니다. 즉, DNS는 컴퓨터가 서로 통신하는 데 사용하는 숫자 IP 주소로 변환되는, 쉽게 읽을 수 있는 도메인 이름의 디렉터리입니다.

DNS는 Domain Name System의 약자이다.

DNS 에 대해서 검색해보면 계층형 분산 데이터베이스라고 설명하는 글을 찾을 수 있다.

계층형(Hierarchical) 분산 데이터베이스.

우리가 어떤 사이트에 접속할 때, 보통 IP대신 도메인으로 접속을 한다.

도메인 이름을 사용하면, 입력한 도메인을 실제 네트워크 상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요하다.

이러한 과정 + 전체 시스템을 DNS라고 한다. 이 시스템은 전 세계적으로 약속된 규칙을 공유한다.

DNS 는 텍스트 기반 도메인을 숫자 기반 IP로 변환하는 기술 + 시스템을 뜻한다.

DNS 구성 요소

DNS는 아래 세가지 요소로 구성되어있다.

  1. 도메인 네임 스페이스(Domain Name Space)

  2. 네임 서버(Name Server) = 권한 있는 DNS 서버

  3. 리졸버(Resolver) = 권한 없는 DNS 서버

인터넷을 개발한다고 해보자.

  1. 우선 특정 도메인으로 특정 IP를 찾는(Key-Value처럼) 데이터베이스가 필요하다.

  2. 그리고 데이터가 어디 저장이 됐는지 찾을 프로그램들이 필요할 것이다.

  3. IP를 찾았으면 당연히 해당 IP 주소로 이동시켜주는 프로그램도 필요하다.

과거의 천재들은 이 요구사항을 충족하기 위해서 아래의 3가지를 개발했다.

  • Domain Name Space라는 규칙으로 도메인 이름 저장을 분산한다.

  • Name Server가 해당 도메인 이름의 IP 주소를 찾는다.

  • Resolver가 DNS 클라이언트 요청을 네임서버로 전달하고, 찾은 정보를 클라이언트에게 전달한다.

Public DNS 와 Private DNS

퍼블릭 DNS

일반적으로 인터넷 서비스 제공업체(ISP)가 기업에 IP 레코드를 제공한다.

이러한 레코드는 일반 대중에게 제공되며, 사용 중인 디바이스 또는 디바이스에 연결된 네트워크에 상관없이 누구나 액세스할 수 있다.

아무나 접근 가능

프라이빗 DNS

프라이빗 DNS는 회사의 방화벽 뒤에 존재한다.

내부 사이트의 레코드만을 보관한다는 점에서 퍼블릭 DNS와 다르다.

프라이빗 DNS의 범위는 내부 사이트 및 사용되는 서비스의 IP 주소를 기억하는 것으로 제한되며, 프라이빗 네트워크 외부에서 액세스할 수 없다.

내부용. 아무나 접근 불가능.

DNSSec

DNSSec 은 캐시 오염을 방지하기 위해서 사용한다.

DNS 캐시 오염은 공격자가 입력된 IP 주소를 손상시키는 경우를 말한다.

이렇게 거짓으로 입력된 IP 주소를 전세계 ISP 에 전파하고, 캐시되어 퍼블릭 DNS 검색에 사용된다.

DNSSec 은 안전한 DNS를 사용하고, 암호화된 서명을 DNS 레코드에 할당한다.

따라서 레코드를 원래 상태와 다르게 변경할 수 없게 된다.

HTTPS와 비슷하게 DNSSec은 쿼리 프로세스를 느리게 하는 강력한 암호화를 수행하지 않고도 DNS 레코드에 액세스할 수 있도록 보안 계층을 추가한다.

PreviousSocket programmingNextURL, URI

Last updated 11 months ago

💻