Computer Science
[네트워크] 0.0.0.0/0 IP란 무엇인가?
IP 0.0.0.0/0 정리 aws 라우팅 테이블을 접해보면 0.0.0.0/0 이란 걸 보게 된다. 이게 정확히 무얼 뜻하는지 알아보자. 0.0.0.0/0 '네트워크 클래스'에서 00000000.00000000.00000000.00000000(0.0.0.0)~01111111.11111111.11111111.11111111(127.255.255.255)인 A클래스 네트워크는 사실 그 사이에 있는 0.0.0.0 네트워크와 127.0.0.0 네트워크가 특별한 용도의 예약된 주소라 제외 되기에 실제 'A클래스 네트워크'는 1.0.0.0~126.255.255.255(사설 네트워크 포함)이다. 그리고 '0.0.0.0' 네트워크의 의미는 바로 IP주소를 적어야 하는데, 적을 게 없을 때 쓰는 '지정된 주소 없음' 용..
[네트워크] IP 기초 (사설IP / 공인IP / NAT) 개념
아이피(IP) 종류 IP(Internet Protocol) 란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다. 우리가 다른사람에게 우편물을 보낼때, 국가, 지역, 아파트, 동호수 를 정확히 기재하여 발송하듯이, 네트워크 데이터가 우리에게 도달해 나무위키 같은 홈페이지를 띄우기 위해서는 정확한 주소 정보가 필요하다. 이것이 흔히 말하는 인터넷 주소 IP 이다. IP주소는 IPv4, IPv6 2가지 종류가 있다. 단 일반적으로 IP 주소라 하면 IPv4 주소를 말한다고 보면된다. 아이피 IPv4 (구) IPv4는 IP version 4의 약자로 전 세계적으로 사용된 첫 번째 인터넷 프로토콜이다. 아이피(ip)는 일반적으로 ..
[네트워크] 포트(PORT) 란 무엇인가?
포트 - Port 본래의 의미로 직역하면 '항구'라는 뜻으로, 컴퓨터 관련 분야에서의 의미로는 운영 체제 통신에서의 종단점을 뜻한다. ※ 참고 어떠한 데이터가 송수신을 할 때 Datalink 계층에서는 호스트의 NIC로 MAC Address를 판별하고 Network 계층에서는 IP Address로 목적지를 판별한다. 이렇게 MAC Address와 IP Address를 통해 목적지 호스트까지 도달한 후에는 어떤 Process(프로세스)에서 데이터를 받을 것인지 를 알아야 하는데 이 때 쓰이는 것이 Port Number(포트 번호)다. 네트워크 상에서 통신을 할 때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다. 그런데 대부분의 경우 하나의 컴퓨터에는 여러 개의 서버가 실행될 수 있다. 컴퓨터에 여러 개..
[네트워크] TCP와 UDP
TCP/ IP 전송 계층 (Transport Layer) TCP/IP는 인터넷에서 사용하는 프로토콜 그룹을 말한다. TCP/IP는 Application layer(응용계층), Transport layer(전송계층), Network layer, Data link layer, Physical layer로 5개의 계층으로 나뉜다. 그 중에 전송계층은 두 응용 계층 사이에서의 신뢰성 있는 process-to-process 통신을 제공한다. 전송계층은 응용계층으로부터 메시지를 받아 전송계층 패킷으로 캡슐화하여 전송한다.(segment 또는 datagram으로 부름.) Q) 패킷(Packet)이란? 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전..
[운영체제] 운영체제란?
운영체제란 무엇인가? 운영체제는 윈도우, 맥, 안드로이드, IOS 등과 같이 실생활에서도 자주 들어볼 수 있는 단어와 밀접한 관계가 있다. 운영체제는 컴퓨터를 동작시키는 데 도움을 주는 소프트웨어인데 사실 운영체제가 없어도 컴퓨터를 동작시킬 수 있다. 하지만 컴퓨터 사용자가 하드웨어 자체를 다룬다는 것은 쉽지 않은 일이기 때문에 기본적으로 컴퓨터에 운영체제를 탑재하는 것이다. 운영체제는 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어로 하드웨어 + 운영체제를 컴퓨터 시스템이라고도 부른다. 우리가 사용하는 각종 소프트웨어들은 바로 이 컴퓨터 시스템 위에서 작동하게 된다. 즉, 운영체제는 하드웨어와 응용 프로그램 사이에서 중개역할을 하는 인터페이스로, 사용자 프로그램들을 실행하고, 문제점들을 쉽게 해결하며,..
함수형 프로그래밍(Functional Programming) 이란?
함수형 프로그래밍(Functional Programming) 프로그래밍 패러다임(Programming Paradigm) 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. 최근의 프로그래밍 패러다임은 크게 아래와 같이 구분할 수 있다. 명령형 프로그래밍: 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 건지를 설명하는 방식 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현..
[네트워크] TCP / IP 4계층 모델
TCP / IP 개념 정리 (선수 지식) IP (인터넷 프로토콜) 지정한 IP 주소에 데이터의 조각들을 패킷(Packet)이라는 통신 단위로 최대한 빨리 목적지로 보내는 역할. 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는 데 집중을 한다. 그래서 IP 프로토콜은 패킷의 순서 보장도 할 수 없고 패킷이 중간에 유실되도 이에대한 방안이 없다. TCP (전송 제어 프로토콜) [네트워크] TCP와 UDP TCP/ IP 전송 계층 (Transport Layer) TCP/IP는 인터넷에서 사용하는 프로토콜 그룹을 말한다. TCP/IP는 Application layer(응용계층), Transport layer(전송계층), Network layer, Data link layer, Physi..
[Design Pattern] 생성 패턴 - 팩토리 메소드 패턴(Factory Method Pattern)
이번에 살펴볼 디자인 패턴은 가장 유명한 디자인 패턴 중 하나인 팩토리 패턴(Factory Pattern)이다. 이 팩토리 패턴은 조금 더 구체적인 용어인 팩토리 메소드 패턴(Factory Method Pattern)으로도 알려져 있다. 팩토리 패턴에 대한 오해 많은 사람들이 팩토리 패턴을 객체 생성을 위한 클래스를 사용하는 것으로 알고 있다. 실제로 많은 글들을 보면 팩토리 패턴을 공장에 input을 넣으면 결과물이 나오는 구조를 설명해놓은 것이 대부분이다. 하지만 위 패턴은 팩토리 '패턴' 이 아니다. 그림으로보면 input에 따라 Factory 가 객체를 다르게 만들어주는 일종의 전략 패턴이라고 생각할 수 있다. 보통 많은 사람들이 위와 같이 팩토리 패턴을 생각하는데, 위와 같은 팩토리를 "심플 팩..
[Design Pattern] 구조 패턴 - 퍼사드 패턴(Facade Pattern)
Facade Pattern 퍼사드 패턴(Facade Pattern)은 사용하기 복잡한 클래스 라이브러리에 대해 사용하기 편하도록 간편한 인터페이스(API)를 구성하기 위한 구조 패턴 이다. 예를들어 라이브러리의 각 클래스와 메서드들이 어떤 목적의 동작인지 이해하기 어려워 바로 가져다 쓰기에는 난이도가 높을때, 이에 대한 적절한 네이밍과 정리를 통해 사용자로 하여금 쉽게 라이브러리를 다룰수 있도록 인터페이스를 만드는데, 우리가 교제를 보고 필기노트에 재정리를 하듯이 클래스를 재정리하는 행위로 보면 된다. 본래 프로그램이라는 것은 업데이트를 통해 점점 커지게 된다. 버전이 올라갈수록 많은 클래스들이 만들어져 서로 관계를 맺으면서 점점 복잡해지게 된다. 그래서 커다란 솔루션을 구성하려면 상호 관련된 많은 클래..
[Design Pattern] 생성 패턴 - 빌더 패턴(Builder Pattern)
Builder Pattern 빌더 패턴(Builder Pattern)은 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴이다. 생성자에 들어갈 매개 변수를 메서드로 하나하나 받아들이고 마지막에 통합 빌드해서 객체를 생성하는 방식이다. 이해하기 쉬운 사례로 수제 햄버거를 들 수 있다. 수제 햄버거를 주문할때 빵이나 패티 등 속재료들은 주문하는 사람이 마음대로 결정한. 어느 사람은 치즈를 빼달라고 할 수 있고 어느 사람은 토마토를 빼달라고 할수 있다. 이처럼 선택적 속재료들을 보다 유연하게 받아 다양한 타입의 인스턴스를 생성할수 있어, 클래스의 선택적 매개변수가 많은 상황에서 유용하게 사용된다. 빌더 패턴 탄생 배경 점층적 생성자 패턴 점층적 생성자 패턴(Telesc..