[혼자 공부하는 컴퓨터구조] (3) 명령어
·
💻 CS/🫧 컴퓨터구조
이 글은 강민철님의 혼자 공부하는 컴퓨터구조 + 운영체제를 학습하고 개인적으로 정리한 내용입니다. 들어가며컴퓨터는 우리가 작성한 프로그래밍 언어를 바로 이해할 수 없다.즉, 우리가 아래와 같이 코드를 작성해도 컴퓨터가 이해하고 실행하는 언어와는 다르다는 것이다.이번 장에서는 이렇게 개발자가 작성한 명령어를 어떻게 컴퓨터가 인식할 수 있는지에 대해서 알아본다. 고급 언어와 저급 언어우선, 컴퓨터가 이해하는 언어와 개발자가 이해하는 언어를 아래와 같은 용어로 구분할 수 있다.1) 고급 언어 : 개발자가 이해하기 쉽게 만든 언어 (C, Java 등)2) 저급 언어 : 컴퓨터가 이해하고 실행하는 언어 (기계어, 어셈블리어)  기계어를 사람들이 읽고 쓰기 편하도록 변환한 어셈블리어 또한 저급 언어에 해당된다. 고..
[혼자 공부하는 컴퓨터구조] (2) 데이터
·
💻 CS/🫧 컴퓨터구조
이 글은 강민철님의 혼자 공부하는 컴퓨터구조 + 운영체제를 학습하고 개인적으로 정리한 내용입니다. 들어가며컴퓨터는 기본적으로 0(전기 신호가 약함)과 1(전기 신호가 셈) 밖에 이해할 수 없다.이런 컴퓨터가 1보다 큰 수를 어떤 방식으로 이해할 수 있을까? 이번 장에서는 이렇게 1보다 큰 수를 컴퓨터가 어떻게 이해할 수 있는지에 대해 알아본다. 0과 1로 숫자를 표현하는 방법Bit: 가장 작은 정보 단위 0과 1을 표현하는 가장 작은 정보 단위 n비트로 2^n 가지의 정보를 표현할 수 있다.그리고 이러한 비트들이 모여서 더 큰 단위들로 표현할 수 있다. 이진법0과 1로 수를 표현하는 방법으로, 숫자가 1을 넘어가는 시점에 자리 올림그래서 0과 1밖에 이해하지 못하는 컴퓨터에게 숫자를 알려줄려면 이진수로 ..
[혼자 공부하는 컴퓨터구조] (1) 컴퓨터 구조 시작하기
·
💻 CS/🫧 컴퓨터구조
이 글은 강민철님의 혼자 공부하는 컴퓨터구조 + 운영체제를 학습하고 개인적으로 정리한 내용입니다. 들어가며이번 장에서는 컴퓨터 구조의 큰 그림에 대해서 학습한다. 컴퓨터 구조를 알아야 하는 이유개발자가 컴퓨터 구조(+ 운영 체제)를 알아야 하는 이유가 무엇일까?그 이유는 바로 문제 해결 능력과 성능/비용/용량을 고려한 개발을 할 수 있기 때문이다. 1) 문제 해결문제가 발생하는 원인에는 프로그래밍 언어 문법의 문제일 수도 있으나, 조금 더 깊이 들어가면 컴퓨터의 더 깊은 내부구조에 대한 문제일 수도 있다.이때 컴퓨터 구조에 대한 이해가 없다면 문제를 분석할 수 있는 능력이 없기에 문제 분석을 포기하게 된다.반면, 컴퓨터 구조에 대한 지식이 있는 사람이라면 한 번 들여다 봐야겠다는 시도를 통해 문제 해결 ..
[혼자 공부하는 네트워크] (6) 응용 계층
·
💻 CS/🫧 네트워크
이 글은 강민철님의 혼자 공부하는 네트워크(인프런) 강의를 수강하고 개인적으로 정리한 내용입니다. 들어가며응용 계층은 전송 계층보다 한 단계 높은 계층으로, 사용자와 가장 가까운 계층이다.특히나 웹 개발자들은 웹 어플리케이션에서 HTTP로 통신을 수행하기 때문에 작동 방식을 이해하는 것이 중요하다. 이번 장에서는 DNS부터 URL, HTTP에 대해서 알아보고자 한다.DNS메세지의 전송 과정에서 필요한 것1. 메세지를 주고 받는 송수신지 - IP 주소, 도메인 네임2. 송수신하고자 하는 정보 - 자원(URL) 도메인 네임이란?호스트의 IP 주소와 대응되는 문자열 형태의 호스트 정보ex) www.naver.com, www.github.com 등 모든 호스트의 IP 주소를 기억하는 것은 번거롭고, 언제든 변경..
[혼자 공부하는 네트워크] (5) 전송 계층
·
💻 CS/🫧 네트워크
이 글은 강민철님의 혼자 공부하는 네트워크(인프런) 강의를 수강하고 개인적으로 정리한 내용입니다.  들어가기에 앞서4계층인 전송 계층이 어떠한 기능을 제공하는지, 3계층의 IP프로토콜의 어떠한 한계를 극복하는지, port란 무엇인지에 대해서 알아본다. 전송 계층이 필요한 이유?전송 계층은 네트워크 계층과 응용 계층 사이에 존재하는 계층이다.전송 계층은 크게 2가지 이유로 필요하다. 1) IP 한계점 보완 - 신뢰할 수 있는 통신 제공2) 응용 계층의 프로세스 식별 - port 번호로 사용자가 실행 중인 프로그램을 식별  IP 프로토콜의 한계IP 프로토콜은 신뢰할 수 없고, 비연결형으로 통신한다는 한계점을 가진다. 즉, IP 패킷을 전달하는 것은 신뢰성 없고 비연결형으로 통신하는 것이라고 생각하면 된다.신..
[혼자 공부하는 네트워크] (4) 네트워크 계층
·
💻 CS/🫧 네트워크
이 글은 강민철님의 혼자 공부하는 네트워크(인프런) 강의를 수강하고 개인적으로 정리한 내용입니다. 들어가기에 앞서이전 장에서는 물리 계층과 데이터 링크 계층에 대해서 알아보았다면 이번에는 3계층인 네트워크 계층에 대해서 알아볼 것이다.  네트워크 계층이 필요한 이유항상 같은 네트워크 내의 호스트끼리만 통신을 주고받지 않는다.때로는, 다른 네트워크에 있는 호스트와도 패킷을 주고받을 수 있다. 이렇게 다른 네트워크 상의 호스트와 통신하기 위한 계층이 3계층인 네트워크 계층이다. 네트워크 계층에서 크게 중요한 개념이 2가지 있다.1) IP주소 - 송수신지의 대상을 지정할 때 사용2) 라우팅 - 다른 네트워크와 통신 데이터 링크 계층과 물리 계층의 한계그렇다면, 왜 물리 계층과 데이터 링크 계층만으로는 LAN..
[혼자 공부하는 네트워크] (3) 물리 계층과 데이터 링크 계층
·
💻 CS/🫧 네트워크
이 글은 강민철님의 혼자 공부하는 네트워크(인프런) 강의를 수강하고 개인적으로 정리한 내용입니다. 들어가기에 앞서3장 물리 계층과 데이터 링크 계층, 4장 네트워크 계층은 개발자와는 상관이 없는 지식이 아닐까? 생각할 수 있다.물론 과거에는 네트워크 엔지니어 직무에게만 요구되던 지식은 맞다. (직무별로 네트워크 참조 모델을 구분하던 시절이 있었다.) 하지만 현재 우리는 네트워크(인프라)를 코드로 다루는 시대에 살고 있다.따라서, 개발자도 인프라를 다룰 수 있기에 인프라를 다루는 역량이 점점 더 요구되고 있다. 해당 내용을 인지하고 3, 4장을 공부해야 한다.  이더넷이란?유선 LAN 환경에서 가장 대중적으로 사용되는 기술 이더넷에는 다양한 통신 매체의 규격 / 송수신되는 프레임 형태 / 프레임을 주고 받..
[혼자 공부하는 네트워크] (2) 컴퓨터 네트워크 시작하기
·
💻 CS/🫧 네트워크
이 글은 강민철님의 혼자 공부하는 네트워크(인프런) 강의를 수강하고 개인적으로 정리한 내용입니다. 컴퓨터 네트워크를 알아야 하는 이유우선 컴퓨터 네트워크의 정의를 살펴보자.여러 개의 장치가 그래프 형태로 연결되어 정보를 주고받는 통신망 그리고 독립적인 네트워크가 여러개 모인 구조가 흔히 우리가 알고 있는 인터넷이다.네트워크 안에 있는 기기들은 네트워크 내에서 정보를 주고받거나, 속해있는 네트워크 간에도 정보를 주고 받기도 한다. 그렇다면, 개발자가 이러한 네트워크를 알아야 하는 이유를 생각해보자.아래와 같은 예시에서 네트워크의 필요성을 느낄 수 있을 것이다. 개발자에게 네트워크 지식이 도움이 되는 경우 1. 웹 애플리케이션 성능 최적화 : 사용자가 상품 페이지를 로드할 때 속도가 매우 느릴 때HTTP 요..
[혼자 공부하는 네트워크] (1) 목차
·
💻 CS/🫧 네트워크
이 글은 강민철님의 혼자 공부하는 네트워크 강의를 수강하고 개인적으로 정리한 내용입니다. 목차01. 컴퓨터 네트워크 시작하기- 책 전체를 읽기 위한 배경 지식 02. 물리 계층과 데이터링크 계층 (같은 네트워크 내의 컴퓨터들의 통신)- 이더넷, NIC와 케이블, 허브, 스위치 03. 네트워크 계층 (다른 네트워크 간의 통신)- LAN을 넘어서는 네트워크 계층, IP 주소, 라우팅 04. 전송 계층 (신뢰성 있는 전송)- 전송 계층 개요 : IP 한계와 포트, TCP와 UDP, TCP의 오류/흐름/혼잡 제어 05. 응용 계층- DNS와 자원, HTTP, HTTP 헤더와 기반 기술 06. 실습으로 복습하는 네트워크- 와이어샤크 07. 네트워크 심화- 안정성을 위한 기술(이중화, 다중화, 로드밸런싱 등), 안..