목록Computer Science (25)
취미가 좋다

지금까지 살펴본 각 계층의 역할은 아래와 같다. 각 계층에서 데이터가 전달되고 처리되는 과정 네트워크가 아래와 같이 구성되어 있을 때 각 계층에서 데이터가 전달되고 처리되는 과정을 살펴보자. 2대의 컴퓨터가 있고 아래의 경로를 거쳐 데이터가 전송된다. 각 컴퓨터는 LAN 내의 스위치가 있고 LAN을 대표하는 라우터가 있다. 1. 컴퓨터의 데이터가 전기 신호로 변환되는 과정 3-way handshake 완료한 상태라고 가정한다. 상위 계층에서 내려가면서 캡슐화가 진행된다. 1 사용자 웹 브라우저에 URL을 입력한다. 2 응용 계층 웹 서버에 요청을 보내므로 HTTP 프로토콜로 HTTP 메시지 전송한다. HTTP 메시지 → GET /index.html HTTP/1.1 3 전송 계층 TCP 헤더(출발지 포트 ..

마지막 계층인 응용 계층을 알아보자. 이 글에서 말하는 응용 계층은 세션 계층과 표현 계층을 포함한다. 응용 계층에서 동작하는 애플리케이션은 사용자가 하고 싶은 일을 할 수 있도록 돕는 프로그램이다. 애플리케이션은 서비스를 요청하는 클라이언트와 서비스를 제공하는 서버로 나눌 수 있다. 클라이언트에는 웹 페이지를 보기 위한 인터넷 익스플로러 같은 웹 브라우저, 메일을 주고 받기 위한 Outlook 같은 메일 프로그램이 있다. 서버에는 웹 서버 프로그램과 메일 서버 프로그램이 있다. 응용 계층에는 다양한 프로토콜이 있고, 아래는 대표적인 5가지 예시이다. 프로토콜 내용 HTTP 웹 사이트 접속 DNS 이름 해석 FTP 파일 전송 SMTP 메일 송신 POP3 메일 수신 응용 계층의 애플레케이션에서 데이터를 전..

이번 글에서는 전송 계층에 대해 배워보자. 이전 네트워크 계층까지의 기능만으로 데이터를 전송할 때 생기는 문제가 있다. 1~3 계층까지는 데이터 전송 중에 손상되거나 유실되어도 아무 역할도 하지 않는다. 전송 계층 전송 계층은 목적지까지 신뢰할 수 있는 데이터를 전달하기 위해 존재한다. 전송 계층에는 크게 2가지 기능이 있다. 첫 번째는, 오류를 점검하는 기능으로 오류 발생시 재전송을 요청하여 데이터를 정확히 전달한다. 두 번째는, 전송된 데이터의 목적지가 어떤 어플리케이션인지 식별하는 기능이다. 예를 들어, 웹 브라우저와 메일 프로그램 중 목적 애플리케이선에서 필요한 데이터인지 판단한다. 전송 계층에는 크게 2가지 통신 방법이 있다. 연결형 통신 신뢰할 수 있고 정확한 데이터를 목적지에 문제 없이 전달..

OSI 모델의 3계층인 네트워크 계층에 대해 알아보자. 네트워크 계층은 서로 다른 네트워크에 있는 목적지로 데이터를 전송하는 기능을 수행한다. 이전의 데이터 링크 계층은 같은 네트워크 즉, 같은 랜 내에서 이더넷 규칙으로 데이터를 전송한다. 그러나 인터넷이나 다른 네트워크로는 데이터를 전송할 수 없다. 라우터(router) 라우터는 네트워크 간의 통신을 통해 다른 네트워크로 데이터를 전송하는 네트워크 장비이다. - IP 주소로 목적지를 지정한다. - 목적지까지 데이터를 보낼 경로를 지정한다. 이를 라우팅(routing)이라고 한다. 랜에서는 MAC 주소만으로 통신할 수 있지만, 네트워크를 식별을 위해서는 IP 주소가 필요하다. IP 주소는 어떤 네트워크의 컴퓨터인지 구분할 수 있는 주소이다. 라우터에는 ..

binary search trees 정렬된 binary trees 이다. 각 노드는 2개의 subtree를 가진다. 이 subtree들도 binary search tree이다. 주어진 노드 왼쪽 subtree의 모든 노드는 해당 노드보다 작은 값을 가진다. 주어진 노드 오른쪽 subtree의 모든 노드는 해당 노드보다 큰 값을 가진다. 아래와 같은 모습을 지니며, 한쪽으로 몰리는 경우 탐색을 위해 O(n)의 복잡도를 가진다. balanced search trees 위의 문제를 해결하는 구조이다. O(log n) 높이를 보장한다. red-black tree balanced search tree의 한 타입이다. 모든 노드는 red 또는 black이다. root 노드와 leaves 노드 (NIL)은 black..
객체지향 프로그래밍이란? 프로그래밍 개발방법론 사람이 이해하기 쉽고 유지 보수를 용이하게 만든다. 객체 데이터와 기능이 클래스로 캡슐화된 컴퓨터 자원의 묶음 class는 객체를 표현하는 하나의 수단이다. 은닉성 객체가 내부 구조를 private하게 감춘다. 간섭으로 인한 오류를 줄일 수 있고, 제공되는 public한 기능들만 알면 사용할 수 있어 편하다. interface 여러 클래스를 묶어서 더 쉽게 클래스를 지정하여 사용할 수 있다. 클래스들로 또 다른 클래스를 만들 수 있다. 상속은 물려받는 것, interface는 장착하는 것 상속 상속으로 통해 부모클래스에 필요한 것들만 더 추가해서 자식클래스를 만들어서 사용할 수 있다. 추상 클래스 abstact라는 속성을 주어 그 자체로는 객체를 생성할 수 ..