COMPUTER NETWORKING A Top-Down app 8th 15

[Network] 3-1. 전송계층 서비스 및 개요

전송 계층(transport layer)에 대해서 다뤘던 내용을 간략하게 살펴보도록 하자. 전송계층 프로토콜은 서로 다른 host에서 동작하는 애플리케이션 프로세스간에 논리적 통신(logical communication)을 제공한다. 논리적 통신이란 애플리케이션 관점에서 보면 프로세스들이 동작하고 있는 호스트들이 직접 연결된 것 처럼 보인다는 것을 의미한다. 실제로 host 들은 서로 다른 지역에 있기 때문에 물리적으로는 직접적으로 연결 될 수 없다. 애플리케이션 프로세스는 메시지 운반에 사용되는 물리적 인프라의 세부사항에 관계없이 서로 메시지를 송/수신하기 위해 전송 계층에서 제공하는 논리적 통신을 사용한다. 논리적 통신의 개념 그림 위 그림과 같이 전송 계층 프로토콜은 종단 시스템(end system..

[Network] Chapter 3. 전송계층(Transport Layer)

전송 계층은 각기 다른 host에서 동작하는 애플리케이션 프로세스에 직접적인 통신 서비스를 제공하는 중요한 기능을 갖는다. 이번 챕터에서는 TCP와 UDP 프로토콜을 중심으로 전송 계층의 원리와 이 원리가 기존 프로토콜에서 어떻게 구현되어 있는지 번갈아 살펴볼 것이다. ① 전송계층과 네트워크 계층 간의 관계를 논의한다. 이를 통해 전송계층의 첫 번째 중요한 기능을 살펴본다. 즉, 양쪽 종단 시스템 간의 네트워크 계층의 전달 서비스에서 종단 시스템에서 동작하는 2개의 애플리케이션 계층 프로세스 간의 전달 서비스로 확장한다. 이 장에서 비연결형 전송 프로토콜인 UDP를 다룰 때 이 기능을 설명한다. ② 컴퓨터 네트워킹의 기본 문제에 대해서 다룬다. (데이터 손실, 손상 관련) 즉, 데이터 손실이나 손상이 일..

[Network] 2-7. 소켓 프로그래밍 : 네트워크 애플리케이션 생성

지금까지 중요한 네트워크 애플리케이션을 살펴봤다. 이번 절에서는 실제로 어떻게 네트워크 애플리케이션을 작성하는지 알아보자. 일반적인 네트워크 애플리케이션은 client와 server로 구성된다. 두 프로그램을 수행하면 client process, server process가 생성되고 두 프로세스가 소켓으로부터 읽고(read), 소켓에 쓰기(write)를 통해 서로 통신한다. 네트워크 애플리케이션을 생성할 때 개발자는 클라이언트 프로그램과 서버 프로그램 모두에 대한 코드를 작성해야 한다. 클라이언트-서버 애플리케이션의 형태 1) RFC에서 정의된 표준 프로토콜을 구현하는 애플리케이션 ⇒ 동작을 규정하는 규칙이 알려져 있어서 개방형(open)이라고도 불린다. 2) 개인의 독점적인 네트워크 애플리케이션 이번 ..

[Network] 2-4. DNS - The Internet's Directory Service

인간은 다양한 방법으로 식별된다. 출생증명서에 기재된 번호, 신분증, 운전면허 등으로 식별될 수 있다. 각각은 사람들을 식별하는 데 사용될 수 있지만, 특정한 맥락에서는 하나의 식별자가 다른 식별자보다 더 적절할 수 있다. ex) 미국의 세금 징수 기관 IRS의 컴퓨터들은 출생증명서 이름 대신 고정 길이의 사회보장번호를 사용하는 것을 선호 일반 사람들은 사회보장번호보다 기억하기 쉬운 이름을 선호한다. 인터넷도 마찬가지다. host에 대한 식별자로 hostname을 사용한다. (ex. www.google.com) 이 방법이 특히 사람들에게는 기억하기 쉬운 방법이다. 하지만, hostname은 host의 위치 정보에 대해 별다른 정보를 제공하지 못한다. ex. www.eurecom.fr은 country co..

[Network] 2-2. The Web and HTTP

초기에 인터넷은 연구하는 사람들, 대학생들이 주로 원격 호스트에 로그인하거나 파일을 전송하거나 뉴스, 이메일을 송수신하기 위해서 사용되었다. 그러던, 1990년대 초반, World Wide Web(WWW)이라는 응용 프로그램이 개발되었다. 이는 작업 환경 내외에서 사람들끼리 소통하는 방법을 바꿨고 인터넷을 단 하나의 데이터 네트워크로 승급시켰다. 많은 사람들이 웹을 사용하게 된 이유는 다음과 같을 것이다. Web이 실시간(on demand)으로 동작한다는 점. ⇒ 사용자가 원하는 걸 원하는 시기에 받을 수 있다는 점이 큰 장점으로 다가왔을 것이다. 기존의 라디오, TV는 사용자의 필요에 따라 컨텐츠를 제공한 게 아니라 컨텐츠를 제공하는 측이 강제적으로 사용자에게 컨텐츠를 제공하는 형식이었다는 점에서 달랐..

[Network] 2-1. Principles of Network Applications

만약에 내가 굉장히 새로운 네트워크 응용 프로그램에 대한 아이디어가 있다고 생각해보자. 그 응용 프로그램은 굉장히 좋은 영향을 줄 수 있는 프로그램이 될 텐데 그렇다면... 그 아이디어를 어떻게 실세계의 네트워크 응용프로그램으로 바꿀 수 있을까?? 네트워크 응용프로그램 개발의 핵심은 1) 다른 종단 시스템에서 동작하고 2) 네트워크 위에서 서로 다른 종단 시스템과 통신할 수 있는 프로그램을 작성하는 것이다. ex) 사용자의 호스트 서버의 서버 호스트 / 넷플릭스를 제공하는 유저 단계에서의 프로그램 네트워크 서버의 서버 호스트 아래 그림은 위 2개의 예시를 일반적으로 표현한 그림이다. 그렇기 때문에 새로운 애플리케이션을 만들 때 다양한 종단 시스템에서 동작하는 SW를 작성해야 한다. 중요한 건 그런 애플리..

[Network] 2. Application Layer

인터넷이 생기고 나서 수많은 사람들의 편리함과 즐거운 일상의 부분이 되었다. 7,80년 대에는 텍스트 기반의 서비스였던 메일, 파일 전송 등이 주로 발전했고 90년대 중반에 WWW이 발명되면서 웹 서핑과 같은 것들이 생겨나기 시작했고 2000년대 넘어가면서 VoIP, 화상회의, OTT, 유튜브 등의 다양한 애플리케이션이 나타났다. 핸드폰이 생기면서 모바일로 이용할 수 있는 다양한 앱도 많이 생겨났다. 이번 챕터에서는 네트워크 애플리케이션의 개념과 구현 측면에서 다룰 것이다. 먼저 핵심적인 응용 계층의 개념에 대해서 다룰 것이다. 그 다음 네트워크 응용 프로그램(ex. Web, email, DNS, P2P)에 대해서 다룬다. 그러고 나서 TCP, UDP 위의 네트워크 애플리케이션 개발에 대해서 다룬다. 소..

[Network] 1-6. Networks Under Attack

네트워크 보안 분야는 bad guys들이 어떻게 컴퓨터 네트워크를 공격하고 그 공격에 어떻게 방어해야 하는지에 대해 배우고 더 나아가 처음부터 이러한 공격에 면역인 새로운 아키텍처를 설계하는 방법에 대해 다루고 있다. 이 책에서는 네트워크 보안 이슈를 앞에서 다뤄볼 것이다. 아직은 컴퓨터 네트워킹과 인터넷 프로토콜의 전문가가 아니기 때문에 여기서는 요즘에 잘 알려진 보안 관련 문제들을 살펴보면서 시작할 것이다. 간단한 질문에서 시작한다. 무엇이 잘못될 수 있는가? 컴퓨터 네트워크는 어떻게 취약한가? 오늘날 더욱 흔해진 공격의 유형은 어떤 것인가? Bad guys가 인터넷을 통해 내 호스트에 악성 SW를 설치할 수 있다. 우리는 인터넷으로 기기에 접속한다. 왜냐하면, 인터넷으로 부터 또는 인터넷에서 데이터..

[Network] 1-5. Protocol Layers and Their Service Models

지금까지 배운 걸 통해 인터넷이란 굉장히 복잡한 시스템이라는 걸 알 수 있었다. 지금까지 인터넷의 다양한 요소들을 살펴봤다. 수많은 응용 프로그램과 프로토콜, 다양한 종류의 종단 시스템, 패킷 교환 방식, 다양한 링크 레벨의 매체들. 이렇게 엄청난 복잡성이 주어진 상황에서 네트워크 구조를 조직화할 수 있을까? 가능하다. 1. Layered Architecture 인터넷 구조를 조직화 하기 전에 사람을 가지고 예시를 들어보자. 사실 인간은 항상 복잡한 시스템을 다루고 있다. ex) 누군가가 나에게 공항 시스템에 대해 설명을 요청할 때 티켓팅 직원, 수하물 점검원, 탑승구 직원, 조종사, 비행기, 항공교통 통제 및 비행기 경로 지정을 포함한 복잡한 시스템을 설명하기 위한 구조를 어떻게 찾을 수 있을까? 이러..