분류 전체보기

    [Computer Network] Transport Layer(UDP와 TCP)

    Transport vs network layer network layer는 host간 logical communication을 담당하며 transport layer는 logical communication between process를 담당한다. Multiplexing and demultiplexing process to process delivery를 위해 transport 계층이 제공해야 하는 가장 기본적인 서비스에 해당한다. Multiplexing이란 socket을 통과하여 트랜스포트 계층으로 내려온 데이터에 목적지 주소가 담긴 헤더를 달아주는 과정을 말한다. 어플리케이션 계층에서 각 프로그램이 서로 다른 소켓을 통해 내려보낸 데이터를 일렬로 줄세우는 형태가 되기 때문에 Multiplexing이라는..

    [Computer Network] Socket Programming

    Socket Application program과 운영체제가 관리하는 transport 사이의 interface가 socket에 해당한다. Socket Programming with UDP UDP는 clinet와 server간 connection을 setup하지 않고 데이터를 전송하며, 데이터를 전송할 때 packet에 IP destination address와 port 번호를 붙여 전송한다. 구체적인 동작 방식은 아래와 같다. Client/Server socket interaction: UDP Client 측 코드 간단하게 흐름을 살펴보면, 우선 socket으로 데이터를 주고받기 위해 `clientSoekct = socket(AF_INET, SOCK_DGRAM)` 으로 클라이언트 소켓을 생성하는 것을 ..

    TypeScript 기초

    본 게시글은 TypeScript의 공식문서를 기반으로 작성되었습니다. https://www.typescriptlang.org/ko/docs/handbook/typescript-from-scratch.html Documentation - TypeScript for the New Programmer Learn TypeScript from scratch www.typescriptlang.org TypeScript를 왜 쓸까? TypeScript는 간단하게, 자바스크립트에 엄격한 자료형 검사가 추가된 형태라고 생각하면 된다. 왜 굳이 자유로운 언어인 JavaScript에 제약을 걸어 사용하는지 의문이 들 수 있다. 언어가 '자유롭다'라는 것은, 작성하는 사람에 따라 그 형태가 천차만별로 달라진다는 것을 의미한다..

    [Computer Network] DNS (Domain Name System)

    일반적으로 사용자가 특정 웹 사이트에 접속할 때, IP주소를 입력하는 것이 아니라 사이트의 주소를 입력하게된다. 사용자가 사이트 주소를 입력하면, 해당 주소는 그에 맞는 IP address로 변환되어 라우팅이 진행된다. 이러한 mapping 과정을 수행하는 시스템이 `DNS(Domanin Name System)`에 해당하며, application layer에서 동작하는 application program이다. Domain Name System DNS는 hostname을 IP address로 translate한다. 이 외에도 host aliasing, mail server, load distribution등의 기능을 수행한다. `host aliasing`이란 실제 host 이름과 다른 이름으로 동작하게 해..

    [Computer Network] Application 계층의 Protocol

    HTTP Web을 위해 만들어진 프로토콜에 해당한다. Hypertext transfer protocol의 약자로, Client-Server 구조를 따르고 있다. 사용자가 켜 놓은 browser가 client process로 동작하며, request를 전송하고 응답을 receive하게 된다. 서버는 사용자가 브라우저를 통해 보낸 요청을 처리하고 적절하게 응답해주며 서비스를 제공한다. HTTP는 transport service를 TCP에게 요청한다. HTTP의 connection은 non-persistent와 persistent 두 방식이 존재할 수 있다. Non-persistent HTTP connection non-persistent는 서버 측에서 오브젝트를 하나 전송하고 나면 바로 connection을..

    [Computer Network] Internet Layer

    Application Architecture Network application은 Client-server architecture와 P2P architecture 두 종류가 존재한다. Client-Server는 말 그대로 server와 client가 나뉘어져 있으며, Server는 영구적인 IP address를 가지면서 data center의 역할을 수행한다. Client는 server와 커뮤니케이션하는 주체로, 다른 client와 통신할 때 반드시 서버를 통해서 소통하게된다. 반면 P2P는 유저끼리 직접 커뮤니케이션을 수행하며, 이들을 `Peer`라고 한다. Socket application layer에서 만든 application message는 transport 계층에 의하여 전송된다. 다만 위의 ..

    [Computer Network] Introduction

    Internet Internet의 구성요소 Internet은 크게 host, communication links, Packet switches로 이루어져 있다. host는 end system이라고도 하며, 일반적으로 사람들이 사용하고 있는 컴퓨터가 이 호스트에 해당한다. 각 컴퓨터에서는 네트워크 애플리케이션을 실행하며 다른 개체들과 통신을 하기 때문에 host라는 이름으로 부르는 것이다. Packet Switch는 router와 switches를 부르는 말로, 사용자의 요청을 올바른 곳으로 이동할 수 있도록 하는 역할을 한다. Communication link는 라우터 간, 혹은 host 간을 물리적으로 연결해주는 실질적인 구조를 의미한다. 위 그림은 인터넷의 일반적인 구조이다. 그림을 살펴보면, 모든 ..

    [OS] 2. Process

    Process Process의 정의 Process는 메모리 상에서 실행중인 작업을 지칭하는 말이다. 즉, 실행중인 Program을 Process라고한다. Program 생성 과정 우리가 작업한 소스코드가 Program이 되는 과정은 다음과 같다. 1. c언어로 코드를 작성한다고 할 때, `.c` 파일은 `gcc 컴파일러`에 의해 `.s` 확장자를 가진 어셈블리 파일로 변환된다. 2. 변환된 어셈블리 파일은 어셈블러에 의해 `.o` 확장자를 가지는 기계어 파일로 변환된다. 3. 변환된 `.o` 파일은 linker에 의해 연결되여 하나의 executable 파일로 변하는데 이를 Program이라고 한다. linker가 여러개의 .o 파일을 연결하는 것은 우리가 서로 다른 소스코드에 모듈을 정의하고 impor..