본문 바로가기

전체 글29

DNS 2.4 DNS: 인터넷의 디렉터리 서비스 인터넷 호스트는 호스트 이름(hostname)으로 식별할 수 있다. www.facebook.com, www.google.com 등으로 식별한다. 호스트 이름은 영문자와 숫자로 되어있으므로 라우터가 처리하는데 어려움이 있다. 이러한 이유로 호스트는 IP 주소(IP address)로도 식별된다. 2.4.1 DNS가 제공하는 서비스 DNS(domain name system)는 호스트 이름을 IP 주소로 변환해준다. DNS는 DNS 서버들의 계층구조로 구현된 분산 데이터베이스이다. 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 프로토콜이다. DNS 프로토콜은 UDP상에서 수행되고, 포트번호는 53번을 이용한다. DNS는 호스트 이름을 IP 주소로 변환하는 .. 2024. 1. 22.
웹과 HTTP 2.2 웹과 HTTP 2.2.1 HTTP 개요 HTTP(HyperText Transfer Protocol) 클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메시지를 교환하여 통신한다. HTTP는 메시지의 구조 및 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대해 정의하고 있다. HTTP는 TCP를 전송 프로토콜로 사용한다. HTTP 클라이언트는 먼저 서버에 TCP 연결을 시작한다. 일단 연결이 이루어지면, 브라우저와 서버 프로세스는 그들의 소켓 인터페이스를 통해 TCP로 접속한다. HTTP는 TCP를 사용하기 때문에, 신뢰적인 데이터 전송 서비스를 제공한다. HTTP 서버는 클라이언트에 대한 정보를 유지하지 않는다. HTTP는 비상태 프로토콜(stateless protocol)이다. 2.2.2 비.. 2024. 1. 15.
네트워크 애플리케이션의 원리 2.1 네트워크 애플리케이션의 원리 2.1.1 네트워크 애플리케이션 구조 클라이언트-서버 구조(client-server architecture)에서는 항상 동작하고 있는 호스트를 서버(server)라고 부르는데, 서버와의 서비스는 클라이언트(client)라는 다른 호스트들로부터 서비스 요청을 받는다. 클라이언트-서버 구조에서는 클라이언트 서로가 직접적으로 통신하지 않는다. 클라이언트-서버 구조에서는 서버가 고정 IP 주소라는 잘 알려진 주소를 갖는다. 서버는 항상 동작하고 있으므로 클라이언트는 서버 주소로 패킷을 보내서 언제든지 서버에 연결할 수 있다. P2P 구조에서는 항상 켜져 있는 인프라스트럭처 서버에 최소로 의존한다.(혹은 전혀 의존하지 않음). 대신에 애플리케이션은 피어(peer)라는 간헐적으로.. 2024. 1. 10.
프로토콜 계층과 서비스 모델 1.5 프로토콜 계층과 서비스 모델 계층 구조 계층 구조는 크고 복잡한 시스템의 잘 정의된 특정 부분을 논의 할 수 있게 해준다. 시스템이 계층 구조를 가질 때, 그 계층이 제공하는 서비스의 구현을 변경하는 것은 매우 쉽다. 한 계층이 상위 계층에 같은 서비스를 제공하고 하위 계층의 서비스를 이용하는 한, 어떤 한 계층의 구현이 변하더라도 시스템의 나머지 부분은 변하지 않는다. 프로토콜 계층화 네트워크 프로토콜의 설계 구조를 제공하기 위해, 네트워크 설계자는 프로토콜을 계층(layer)으로 조직한다. 한 계층이 상위 계층에 제공하는 서비스(service)에 관심을 갖고, 이것을 계층의 서비스 모델(service model)이라고 한다. 각 계층은 계층 내부에서 어떤 동작을 수행하거나, 직접 하위 계층의 .. 2024. 1. 7.
컴퓨터와 네트워크 인터넷 1.1 인터넷이란 무엇인가? 구성요소로 본 인터넷 전통적인 데스크톱 PC, 리눅스 워크스테이션 또는 비전통적인 사물인터넷을 호스트(host) 혹은 종단 시스템(end system) 이라고 부른다. 통신 링크(communication link), 패킷 스위치(packet switch) 종단 시스템은 통신링크와 패킷스위치의 네트워크로 연결된다. 라우터(router)와 링크 계층 스위치(link-layer-switch) 최종 목적지 방향으로 패킷을 전달한다. ISP(Internet Service Provider) 종단 시스템은 ISP를 통해 인터넷에 접속한다. 서비스 측면에서 본 인터넷 애플리케이션에 서비스를 제공하는 인프라 스트럭처 게임, 스트리밍, 지도 서비스, 모바일 애플리케이션은 서로 데이터를 교환하는.. 2024. 1. 5.
빌더 패턴(Builder Pattern) 빌더 패턴(Effective Java) 이펙티브 자바를 읽던중 생성자에 "매개변수가 많다면 빌더를 고려하라"는 글을 보고 최근 프로젝트에서 lombok의 @Builder 어노테이션을 사용해 빌더 패턴을 사용한 기억이 났습니다. 빌더 패턴을 사용하더라도 왜 사용하는지 알고 써야 할것같아서 정리해봅니다. 인터넷을 찾아보니 GoF의 빌더 패턴과는 다른 접근방법 같지만 저는 이펙티브 자바의 빌더 패턴을 설명하겠습니다. 이 책에서는 빌더 패턴을 설명하기 전에 점층적 생성자 패턴과 자바 빈즈 패턴에 대해 소개하고있습니다. 점층적 생성자 패턴(telescoping constructor pattern) 선택적 매개변수가 많을 때 보통 개발자들은 점층적 사용자 패턴(telescoping constructor patter.. 2021. 10. 2.