Computer Science 35

[네트워크] 웹 사이트에 접속하는 과정

웹사이트에 접속하는 과정을 간단하게 정리하면 다음과 같다. URL 입력 => 브라우저가 URL 해석 => DNS 서버를 통해 도메인 이름을 IP주소로 변경 => HTTP or HTTPS 프로토콜 방식으로 요청 및 응답 => 브라우저가 서버에게서 받은 자료를 바탕으로 렌더링 => 사용자에게 화면 제공 1. URL 입력 => 브라우저 URL 해석 www.google.com 을 입력하면 입력한 URL 주소 중, 도메인 이름에 해당하는 google.com을 DNS 서버에 검색하는데 검색하기 전에 캐싱된 DNS 기록들을 먼저 확인한다. 만약에 해당 도메인 이름에 맞는 IP주소가 존재하면 DNS서버에 해당 도메인 이름에 해당하는 IP주소를 요청하지 않고 캐싱된 IP주소를 바로 반환한다. 일치하는 IP주소가 존재하지..

Computer Science 2023.01.09

디자인 패턴(Design Pattern)이란?

✅ 디자인 패턴(Design Pattern)이란? 소프트웨어 개발 방법으로 사용되는 디자인 패턴(Desigin Pattern)은 과거의 소트프웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 즉 효율적인 코드를 만들기 위한 방법론이다. - SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. - 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방법론 - 자주 반복되는 문제에 해결책 -> 재사용과 팀원과의 의사소통 - 23가지 디자인 패턴이 존재 - 연관되는 개념으로는 SOLID 원칙과 클린 코드(Clean Code) ✅ 디자인 패턴 종류 디자인 패턴은 목적에 따라 3가지로 구분할 수 있다..

Computer Science 2023.01.08

컴파일러란? (feat. 인터프리터)

✅ 컴파일러(Compiler) 컴파일러란 사람이 이해할 수 있는 언어를 기계어로 변환해주는 작업이다. 사람이 이해할 수 있는 언어는 우리가 사용하는 C언어, Java, Python 등의 프로그래밍언어로 작성된 소스코드를 의미한다. 그리고 이러한 프로그래밍 언어를 하위 수준 언어로 변환하여 실행가능한 프로그램을 만드는 작업을 컴파일러(Compiler)라고 한다. 물론 소스코드를 실제 실행 파일로 변환하는 컴파일 작업에는 위와 같이 많은 단계들이 있지만 간단하게 살펴보려고 한다. ✅ 컴파일 과정 컴파일 과정은 4가지 단계(전처리 과정 - 컴파일 과정 - 어셈블리 과정 - 링킹 과정)으로 나누어 진다. 이 4가지 단계를 묶어서 컴파일 과정, 빌드 과정이라고 부르기도 하고 컴파일 과정과 링킹 과정을 따로 나눠서..

Computer Science 2023.01.06

세션 vs 토큰(JWT) 인증의 차이

✅ 인증(Authentication)과 인가(Authorization) 세션과 토큰에 대해 알아보기 이전에 인증과 인가가 무엇인지 부터 알아야할 필요가 있다. 인증과 인가는 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. ✅ 인증 (Authentication) 인증은 쉽게 말해 로그인이다. 클라이언트가 자신이라고 주장하고 있는 사용자가 맞는지를 검증하는 과정이다. 내가 로그인 화면에서 emhaki와 패스워드를 입력해 제출하면 서버에서는 내가 emhaki 유저가 맞는지 확인한다. ✅ 인가 (Authorization) 인가는 인증 이후에 행해지는 작업으로, 인증된 사용자에 대한 자원에 대한 접근 확인 절차를 의미한다. 인증을 해서 로그인이 되었다면, 유저는 다양한 활동을 하게 될 것이..

Computer Science 2023.01.06

GPU(그래픽 처리 장치) 개념 및 CPU와의 차이점

✅ GPU란? GPU는 Graphic Processing Unit(그래픽 처리 장치)의 약어로 컴퓨터 시스템에서 그래픽 연산을 빠르게 처리하여 결과값을 모니터에 출력하는 연산 장치이다. 1990년대 중반까지만해도 3D 그래픽은 주로 CPU로 구현하였으나 게임 등 그래픽 연산의 수요가 높아짐에 따라 더 빠르고 실시간 그래픽 처리가 필요했다. ✅ CPU와 GPU 차이점 CPU(직렬 처리방식) CPU는 속도는 빠르지만 한 번에 한 가지씩 일을 처리한다. CPU 내부의 많은 부분은 캐시 메모리로 채워진다(CPU와 RAM 사이의 성능 차이로 인한 병목을 막기 위함) CPU가 처리할 것을 RAM에서 불러와 임시로 Cache Memory에 저장해 처리 속도를 높인다. 현재의 CPU들은 DRAM들에 비해 속도가 많이 ..

Computer Science 2023.01.05

IPv4와 IPv6 개념 및 차이점

✅ IP 주소 IP는 Internet Protocol의 약자로 기기간 네트워크 통신을 할 때 쓰는 프로토콜을 의미한다. IP에서 IP기기의 주소를 나타내는 것이 바로 IP주소이다. 우편배달로 예를 들면 IP주소는 배달 주소를 나타내게 된다. 데이터를 정확하게 송수신하기 위해서는 IP주소가 필요하다. ✅ IPv4 IPv4는 3자리 숫자가 4마디로 표기되는 방식이다. 각 마디는 옥텟(octet)이라고 부른다. 위 주소는 내부적으로 32비트, 각 마디당 8bit로 처리된다. 예를 들어 192.168.123.123은 11000000.10101000.1111011.1111011으로 표시된다. ✅ IPv4 클래스 Class 첫번째 옥텟 첫번째 옥텟의 값의 범위(10진수) 이론적 IP주소 범위 A class 0xxx..

Computer Science 2023.01.05

도메인(domain) 가볍게 살펴보기

개발자가 아니여도 컴퓨터를 자주 사용하는 사람이라면 도메인(domain)이라는 말을 들어봤을 것이다. 오늘은 도메인이 어떤것인지 가볍게 살펴보고자 한다. ✅ 도메인이란? 우리가 흔히 알고 있는 도메인은 바로 인터넷 주소이다. IP주소는 기억하기 어렵기 때문에 영문이나 한글로 된 인터넷 주소인 도메인을 사용하고 있다. 우리가 흔히 알고 있는 네이버에 접속하려고 한다면 대부분의 사람들이 www.naver.com 을 입력할 것이다. naver.com이 바로 도메인 주소이다. 주소창에 125.209.222.141 을 입력해도 동일하게 www.naver.com 에 접속이 되지만 사용자가 숫자의 연속인 IP주소를 일일이 외울 수 없기 때문에 쉽게 기억할 수 있는 DNS(도메인 주소 체계)가 만들어졌다. - 도메인은..

Computer Science 2023.01.04

CPU(중앙처리장치) 개념 및 구성 요소

CPU(중앙처리장치)의 개념 CPU(Central Processing Unit)는 마치 사람의 두뇌와 같이 명령어의 해석과 자료의 연산, 비교 등의 처리를 제어하는 컴퓨터 시스템의 핵심 장치이며, 다양한 입력 장치로부터 자료를 받아서 처리한 후 그 결과를 출력장치로 보내는 일련의 과정들을 제어하고 조정하는 일을 수행한다. 중앙처리장치는 제어장치, 연산장치, 레지스터로 구성된다. CPU(중앙처리장치)의 구성 CPU는 제어장치, 연산장치, 레지스터로 구성된다. ✅ 제어 장치(Control Unit): CU 컴퓨터의 모든 동작을 제어하는 역할 담당. 프로그램에서 내리는 명령어를 해석해서 동작이 필요한 장치에 제어 신호를 보내 처리를 지시한다. - 레지스터 사이의 데이터 전송을 감시하고 ALU(연산 장치)의 동..

Computer Science 2023.01.04

TCP/IP 계층 개념과 OSI7계층 비교

✅ TCP/IP TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다. 출처: 나무위키 ✅ TCP/IP의 계층 Application Layer(응용계층) 특정 서비스를 제공하기 위해 애플리케이션 끼리 정보를 주고 받을 수 있다..

Computer Science 2023.01.03

네트워크 라우터 개념(Router)

✅ 라우터(Router) 라우터는 패킷의 위치를 추출하여 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치이다. 이때 최적의 경로는 일반적으로 가장 빠르게 통신이 가능한 경로이다. 가장 빠르게 통신이 가능한 경로라는 것이 최단 거리 일 수도 있지만, 돌아가는 경로라도 고속의 전송로를 통하여 전달이 되는 경로가 될 수도 있다. 즉, 라우터(Router)는 네트워크와 네트워크 간의 경로(Route)를 설정하고 가장 빠른 길로 트래픽을 이끌어주는 네트워크 장비이다. 라우터는 다른 기종간의 네트워크를 연결하는 기능을 하기 때문에 여러 가지 프로토콜에서 전송되는 패킷을 받아들일 수 있어야 한다. 이렇게 받아들인 패킷을 여러 경로 중 가장 효율적인 경로를 선택하여 ..

Computer Science 2023.01.03
728x90