본문 바로가기

CS/BOOK15

[컴퓨터 네트워킹 하향식 접근] 2. 애플리케이션 계층 - 과제와 질문 아래 내용은 공부를 하며 스스로 정리한 내용입니다. 부정확한 내용이 있으면 언제든 댓글로 알려주세요.   [2.1절] 1. 공유 인터넷 애플리케이션 5개와 이들이 사용하는 애플리케이션 계층 프로토콜들을 나열하라. 주요 애플리케이션에는 웹, 전자메일, 디렉터리 서비스, 비디오 스트리밍, P2P 애플리케이션이 있다. 웹은 HTTP 프로토콜을, 전자메일은 SMTP 프로토콜을, 디렉터리 서비스는 DNS 프로토콜을, 비디오 스트리밍은 HTTP 또는 DASH 프로토콜을, P2P 애플리케이션은 비트토렌트 프로토콜을 주로 이용한다.   2. 네트워크 구조와 애플리케이션 구조의 차이점은 무엇인가? 네트워크 구조는 다섯가지 계층으로 구성되어 있는 인터넷 아키텍처로, 애플리케이션 개발자의 관점에서 네트워크 구조는 고정되어 .. 2024. 6. 16.
[컴퓨터 네트워킹 하향식 접근] 1. 컴퓨터 네트워크와 인터넷 - 과제와 질문 아래 내용은 공부를 하며 스스로 정리한 내용입니다. 부정확한 내용이 있으면 언제든 댓글로 알려주세요.   [1.1절] 1. 호스트와 종단 시스템의 차이는 무엇인가? 여러 종단 시스템의 유형을 나열하라. 웹서버는 종단 시스템인가? 인터넷에 연결되는 컴퓨팅 장치들을 가리키는 호스트와 종단 시스템라는 용어는 동일한 개념으로, 혼용되어 사용할 수 있다. 종단 시스템은 네트워크 구조에서 가장자리에 위치하며, 애플리케이션을 수행하는 장치이기 때문에 호스트라고도 부른다.  전통적으로는 종단 시스템에 데스크톱과 리눅스 워크스테이션, 서버들이 포함되었다. 하지만 시간이 지남에 따라 스마트폰과 핸드폰, IoT 사물로까지 확장되고 있다. 웹서버는 애플리케이션을 실행하고 네트워크를 통해 클라이언트와 통신하기 때문에 종단 시스.. 2024. 6. 13.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 14. 인공지능 인공 지능    사람에게 이 그림이 주어진다면, 누구나 고양이라고 답변할 것이다. 하지만 사람이 어떤 사고 과정을 거쳐서 고양이라는 것을 알아냈는지는 미지의 영역이다. 어떻게 고양이인걸 아셨어요? 라고 물어봐도, 인간이 인지하지 못하는 '무의식'이 어떻게 작동했는지는 알 수 없다. 하지만 아기가 언어를 배우는 과정을 통해 어렴풋이나마 지식의 습득 과정을 파악할 수 있다. 한국에서 태어나서, 한국말을 하는 부모와 한국말을 하는 주변 이웃을 둔 아기는 커서 어느 언어로 말문을 뗄까? 절대 첫 마디가 프랑스어나 독일어는 아닐 것이며, 99.9%의 확률로 한국어일 것이다. 아기는 주변에서 주어지는 엄청난 양의 언어 데이터를 처리함으로서 언어를 배우기 때문이다. 그렇다면 아기가 아닌 컴퓨터에게도 잘 조직된 훈련 .. 2024. 5. 8.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 13. 컴퓨터 보안 보안 보안을 위해서는 우선적으로 위협 모델을 찾아야한다. 위협 모델은 보안이 필요한 대상 목록괴 긱 보안 대상에 가해질 수 있는 공격을 열거해서, 공격을 방어하는 방법을 설계할 수 있게한다. 위협모델을 정할 때 가장 어려운 부분은 신뢰할 대상을 정하는 것이다. 우리가 사용하는 수많은 서드파티 하드웨어나 소프트웨어에 우리는 의존하고 있다. 이들이 의도적으로, 또는 무능해서, 그리고 부정직하게 신뢰를 위반한다면, 우리의 보안도 취약해질 수 밖에 없다. 따라서 컴퓨터 보안 세계에서 신뢰란, 선택할 수 없지만 의존해야하는 대상이다.    공격에는 주로 두 가지 유형이 있다. 첫번째는 크립토그래피 시스템 공격이다. 크립토그래피란 데이터에 대한  암호화로, 이 암호 시스템의 취약점을 이용하여 공격하는 것이다. 이것.. 2024. 5. 1.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 12. 컴퓨터는 어떻게 멀티태스킹을 할까? 병렬성   초기의 컴퓨터는 하나의 CPU만을 가지고 있었다. 그렇기 때문에 두 가지 일을 동시에 처리하는 대신, 동시에 처리하는 '척'을 했다. 예를 들면 주황-초록-보라 순서대로 아주 조금씩 작업을 하는 것이다. 사람이 캐치하기 어려울 만큼 작은 단위로 일을 쪼개서 하면, 사람은 마치 동시에 일을 하는 것처럼 느낄 수 있는 것이다. 하지만 멀티 프로세서가 일반화되면서, '진짜로' 동시에 일을 처리해야하는 상황에 처하게 되었다. 동시에 일을 처리한다면, 같은 자원에 동시에 접근하는 경우도 발생할 수 밖에 없다.       0x0001이라는 메모리에 100이라는 값이 저장되어 있고, 10을 빼서 저장하는 프로세스1과 20을 빼서 저장하는 프로세스2가 이 메모리에 동시에 접근하는 경우를 생각해보자. 두 프로.. 2024. 4. 30.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 11. 알고리즘 아이디어 책에서 나온 예시들은 핵심 내용을 가릴 만큼 지나치게 복잡해, 조금더 간단한 예시로 바꾸어서 핵심 아이디어만을 전달하고자 했다.중요한 것은 각 예시를 이해하는 것이 아니라 성능과 효율성을 높이기 위해 문제를 바라보는 관점을 달리하는 것이 유용하며 이런 관점도 있구나를 살펴보고 가는 것이다. 따라서 본문의 예시에서 이해되지 않는 부분이 있더라도 큰 그림을 위주로 읽기를 권한다.      컴퓨터의 성능을 높이는 방법은 간단하다. 더 좋은 컴퓨터를 사면 된다. 예를 들어, 우리나라 기상청에서는 정밀한 날씨 예측을 위해 슈퍼컴퓨터를 보유하고 있다. 1초에 무려 5경2천900조번 연산이 가능하다.    그러면 해당 컴퓨터의 가격은 얼마일까?   더 성능이 좋은 컴퓨터를 구매하는 것.. 2024. 4. 24.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 10. 웹 브라우저를 활용한 프로그래밍 웹 브라우저를 활용한 프로그래밍을 살펴보기에 앞서서, 웹 브라우저를 활용하지 않고 프로그래밍을 하게 되면 어떤 과정을 거쳐야하는지를 살펴볼 것이다.     시스템 프로그램의 빌드 과정  보통 시스템 프로그램은 운영 체제에 딸려오는 가벼운 유틸리티나 프로그램 개발에 도움이 되는 컴파일러등을 가리킨다. 이런 프로그램을 개발할 때는 시스템의 기능을 최대한 활용해야하기 때문에 고수준의 언어 중에서도 좀 더 기계에 가까운 C나 C++등의 언어를 사용한다. C언어에서 개발 과정 중에서 직접 메모리를 할당하는 malloc이라는 함수를 사용할 만큼 기계에 가깝다. 또한 메모리의 주소값을 저장하기 위해 포인터라는 개념또한 빈번하게 등장한다.     컴파일러 언어인 C로 개발된 프로그램.. 2024. 4. 23.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 9. 웹브라우저 최초의 웹브라우저 최초의 웹브라우저는 간단했다. 브라우저는 URL을 사용해 서버에게 문서를 요청하면, 서버는 문서를 브라우저에게 보내고, 브라우저는 문서를 표시했다. URL에는 어떤 정보가 포함되어 있어서 문서를 요청할 수 있는 것일까? https://www.example.com/path/to/myfile.html 스킴 호스트 경로 https www.example.com path/to/myfile.html 먼저 https는 통신 메커니즘 (프로토콜)을 표시하는 스킴이다. 데이터를 주고받을 때, 어떤 규칙에 맞춰서 데이터를 송수신할지를 명시하고 있다. 예를 들어 https는 암호화 (secure) 사용해서 하이퍼텍스트를 전송하는 프로토콜이다. www.example.com 은 도메인 네임으로, 어느 웹 서버.. 2024. 4. 17.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 8. 컴퓨터의 프로그래밍 언어 처리 어셈블리어 컴퓨터는 기호로써 0과 1을 사용한다. 그렇기 때문에 프로그래머들은 0과 1을 조합해서 컴퓨터에게 명령을 내려야했다. 하지만 사람이 0과 1로 이루어진 비트 조합을 외워서 프로그램을 짜기란 쉽지 않았다. 그래서 비트 조합을 대신할 수 있는 이름을 붙이기 시작했다. 예를 들어 메모리에서 데이터를 가져오는 001에는 LOAD, 메모리에 데이터를 저장하는 010에는 STORE라는 이름을 붙여주는 식으로 말이다. 이것이 바로 어셈블리어다. 어셈블리어는 기계어와 달리 주소에 이름도 붙일 수 있었고, 코드에 주석을 달 수도 있었다. 고수준 언어 어셈블리어는 기계어보다는 편리했지만, 여전히 간단한 일을 하기 위해서도 여러 줄의 코드가 필요했다. #include void main() { int a = 10,.. 2024. 4. 16.