Network
[Computer Network] TCP의 flow control과 congestion control
TCP Flow Control 위 그림은 link->network->transport->application으로 이어지는 데이터 전송 과정을 표현하고 있다. transport 계층까지 전송된 데이터는 바로 application 계층으로 올라가지 않고, TCP socket에 있는 buffer에 저장된다. 만약 sending TCP의 전송 속도가 너무 빠르면 TCP socket buffer가 차오르게 되고, 데이터가 loss될 수 있다. RcvBuffer는 전송 받는 데이터를 넣을 전체 공간을 의미하며 rwnd는 비어있는 버퍼의 크기를 의미한다. sender는 rwnd값을 이용하여 unacked data를 rwnd가 넘지 않게 조절하면서 buffer overflow를 방지하는데, 이를 `flow contro..
[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)` 으로 클라이언트 소켓을 생성하는 것을 ..
[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 간을 물리적으로 연결해주는 실질적인 구조를 의미한다. 위 그림은 인터넷의 일반적인 구조이다. 그림을 살펴보면, 모든 ..