목록컴퓨터 네트워크 (32)
Shine's dev log
1. TCP window 앞서 TCP는 pipelining을 통해 여러개의 패킷들을 동시에 송/수신하며, 이를 관리하기 위한 window가 존재한다고 하였다. 만약 window 크기가 크면 한번에 많은 양의 패킷을 송/수신하며, window 크기가 작으면 한번에 적은 양의 패킷을 송/수신할 수 있다. 아래 그림의 TCP header에서 볼 수 있는 window size 값은 receiver 입장에서 수용 가능한 window 크기를 상대방에게 알려주는 것이다. 이때, receiver의 수용 가능한 window size는 receiver의 비어있는 버퍼 크기라고 생각하면 된다. 2. TCP flow control flow control은 다음과 같이 정의할 수 있다. receiver의 buffer 눈치를 보..
1. TCP (Transmission Control Protocol) Transport Layer 프로토콜들의 대표적인 사례로는 UDP와 TCP가 있다. 비교적 간단하고 빠른 UDP에 비해 TCP는 더 복잡하고 느리지만, 보다 신뢰성있는 연결이 가능해진다. 기본적으로 TCP 프로토콜이 가지는 특징에 대해 먼저 살펴보자. 1) Full duplex data transfer - 데이터 통신을 할 때 양방향(bi-directional) 으로 데이터가 흐른다. 2) Connection-oriented - 통신을 하기 앞서 Hanshaking 과정을 통해 sender와 receiver의 상태를 확인한다. 3) Flow controlled - sender는 receiver의 능력을 살펴보며 전송량을 조절한다. 4)..
1. Transport Layer protocol 앞서 Transport layer의 기본적인 원리와 동작 방식, reliable한 데이터 교환 방법(rdt 3.0), congestion control 등의 기본 개념들을 살펴보았다. 이러한 개념들은 Transport layer에 속한 프로토콜에 적용되는 기본 원리들을 설명한 것이고, 이제부터 본격적으로 Transport layer 프로토콜의 구체적인 사례를 살펴보기로 하자. 대표적인 사례로는 TCP와 UDP가 있는데, 보다 간단한 UDP를 먼저 살펴보도록 하자. 2. UDP (User Datagram Protocl) UDP는 한마디로 굉장히 간단한 프로토콜이다. UDP 프로토콜은 다음과 같은 특징을 가진다. 1) receiver의 준비상황을 전혀 고려하..
1. Stop and Wait 앞서 기본적으로 reliable한 패킷 데이터 교환을 위해서는, 우선 패킷을 보내고 그에 해당하는 ACK이 올때까지 기다리는 Stop and Wait 방식을 사용한다고 하였다. 하지만 이 방법은 ACK이 올때까지 송신자는 계속해서 놀고있으므로 굉장히 비효율적인 방법이다. 따라서, 한번에 하나의 패킷만 보내는 것이 아니라 여러 패킷을 pipelining 하여 처리하는 방식을 살펴볼 것이다. 대표적인 pipelining 방식으로는 GBN(Go-Back-N)과 SR(Selective Repeate) 방식이 있다. 2. GBN(Go-Back-N) Go-Back-N 방식은 receiver 측에서 순서대로 받지 못한 패킷이 있다면 해당 패킷부터 다시 재전송 하는 방식이다. 1) r..
1. Reliable Data Transfer 신뢰성 있는 데이터 교환(이하 RDT)은 한마디로 "송/수신하는 데이터가 오류없이 온전히 전송되는 것" 이다. Transport Layer 에서는 신뢰성 있는 데이터 교환을 하고싶어 하지만, 그 아래의 레이어에서는 신뢰성을 보장할 수 없기 때문에 신뢰성 있는 통신에 문제가 생길 수 있다. 이러한 문제상황 속에서 Transport Layer 에서 적용 가능한 방식이 바로 RDT 프로토콜을 이용하는 것이다. 아래 그림을 살펴보자. 우선 패킷을 송신하는 경우, 상위레이어에서 보내려는 데이터가 있을 경우 rdt_send() 시스템 콜을 호출하여 RDT 프로토콜로 전송한다. RDT 프로토콜에서 신뢰할 수 없는 채널인 하위 레이어로 보낼 때 udt_send() 를 호출..
0. Transport Layer 앞서 살펴본 TCP/IP 프로토콜 스택에서 Application Layer 바로 아래에 위치하는 Transport Layer에 대해 알아보자. 1. Transport Layer의 역할 Transport Layer의 역할은 크게 두가지가 있다. 1) Source(출발지) 부터 Destination(도착지) 까지 패킷이 제대로 전송될 수 있도록 함 2) Application Layer에서 만든 데이터를 일정한 크기로 자름 이처럼 Transport Layer는 실질적으로 패킷들이 출발지에서 도착지까지 제대로 전송될 수 있도록 하는 프로토콜을 제공하며, 데이터를 패킷단위로 자르는 역할 또한 수행한다. 2. Transport Layer 프로토콜 종류 물론 세부적으로 들어가면 Tr..