본문 바로가기

Library/Computer Network

Silly Window Syndrome 시스템이 통보하는 버퍼의 크기는 그 순간의 가용 버퍼 크기에 따라서 달라진다. 시스템의 가용 버퍼 크기는 애플리케이션이 수신 버퍼로부터 데이터를 추출하는 속도에 의존한다. 이 속도는 애플리케이션의 복잡성, CPU의 가용 시간, 사용하고 있는 TCP 스택의 설계 등 많은 요소에 영향을 받는다. 불행히도 많은 1세대 TCP 기반 애플리케이션은 한 번에 몇 바이트 밖에 추출하지 않아 수신 버퍼를 제대로 비우지 못했다. 결과적으로 시스템은 몇 바이트 밖에 되지 않는 작은 크기의 수신 버퍼를 통보하였으며, 따라서 송신 시스템도 아주 작은 크기의 세그먼트만을 전송할 수 있었다. 수신 시스템이 수신 버퍼로부터 몇 바이트만을 추출하고, 작은 크기의 윈도우가 통보되고, 또 다시 작은 크기의 세그먼트를 수신하는 과정이 끊.. 더보기
Network I/O Management 애플리케이션은 TCP를 통해 다른 애플리케이션으로 데이터를 전송할 때, TCP 소프트웨어에 데이터를 쓰고 TCP 소프트웨어는 그 데이터를 전송 버퍼에 저장한다. TCP는 데이터의 일부를 정기적으로 세그먼트에 담아 목적지 시스템으로 배달하려고 이를 IP에 전달한다. 이 절차는 간단해 보이지만 주로 TCP에서 처리하는 세그먼트의 크기를 결정하는 문제로 인해 많은 작업이 포함되어 있다. TCP는 생성되는 각 세그먼트에 대해 그 시점에서 사용할 가장 효율적인 세그먼트 크기를 결정해야 하는데, 이 결정에는 때마다 상이한 요소들이 포함될 수 있어 매우 복잡하다. 그러나 세그먼트의 크기를 정확히 결정하는 것이 가상 회선의 성능과 관련된 특성을 크게 좌우하므로 매우 중요한 서비스다. 가장 효율적인 세그먼트 크기를 결정.. 더보기
TCP Flow Control 애플리케이션은 TCP를 통해 다른 애플리케이션으로 데이터를 전송하는 경우 자신의 TCP 소프트웨어에 데이터를 쓴다. TCP 소프트웨어는 그 데이터를 전송 버퍼에 저장하고 데이터의 일부를 세그먼트 담아 이를 목적지 시스템에 배달하기 위해 IP에 전달한다. 이 과정의 주요 요소 가운데 하나가 송신 시스템에서 목적지 시스템으로의 데이터 전송 속도를 조정하는 흐름 제어이다. 목적지 시스템의 버퍼 크기, 네트워크의 패킷 처리 특징 등 여러 가지 이유로 전송 속도를 변경할 것이 요구된다. 이런 이유에서, TCP는 여러 가지 흐름 제어 기법을 갖고 있으며 송신 시스템이 이러한 변경에 적절하게 반응할 수 있게 한다. 원래 RFC 793은 몇 가지 흐름 제어 기법만을 제안하였으며 그 기법 가운데 대부분은 연결 종료를 수.. 더보기
Socket Pair 애플리케이션은 포트를 사용하여 TCP와 통신한다. TCP의 포트는 실질적으로 UDP의 포트와 동일하다. 즉 애플리케이션은 TCP에 등록할 때 16비트 포트 번호를 부여받으며, TCP는 이 포트 번호를 모든 송수신 트래픽에 사용한다. 개념적으로 포트 번호는 한 시스템의 개별 애플리케이션에 '구내 번호'를 제공하며, 그 시스템의 IP 주소는 전화 번호 역할을 한다. 원격 애플리케이션은 (IP 주소를 사용하여) 호스트 시스템에 '전화를 걸고', 통화하고자 하는 목적 애플리케이션의 구내 번호(포트 번호)를 같이 제공한다. TCP는 이 정보를 송수신 애플리케이션을 확인하고 올바른 애플리케이션에 데이터를 전달하는데 사용한다. 포트는 시스템에 있는 어떤 애플리케이션의 한 인스턴스를 나타낸다. '소캣(socket)'이.. 더보기
Internet Protocol IP를 규정하는 RFC791은 다음과 같이 시작된다. "인터넷 프로토콜은 상호 연결된 패킷 스위칭 컴퓨터 통신 네트워크에서 사용하려고 설계되었다. 인터넷 프로토콜은 데이터그램이라는 데이버 블록을 출발지(source)에서 목적지(destination)로 전송한다. 또 작은 패킷으로 전송할 것을 요구하는 네트워크를 통해 큰 데이터그램을 보내는 경우, 분열(fragmentation)과 재배열(reassembly) 기능을 제공한다." 이어지는 내용은 다음과 같다. "인터넷 프로토콜의 활용 범위는 상호 연결된 네트워크를 통해 비트(인터넷 데이터그램)를 출발지에서 목적지까지 전달하는 데 필요한 기능을 제공하는 것으로 제한되어 있다. 종단간(end-to-end) 데이터의 신뢰성 향상, 흐름 제어, 순서 제어 및 기타.. 더보기
ARP (Address Resolution Protocol) ARP 패킷은 IP와 거의 동일한 계층에서 동작한다. ARP는 ARP 패킷이 데이터링크 서비스에서 제공하는 물리 매체와 동작하기 때문에, IP와 별개의 프로토콜이다. ARP는 하위 계층 프레임에서 운반되는 프로토콜을 분류하면서 ARP를 동시에 지원하는 모든 네트워크에서 다르게 식별된다. ARP 패킷은 IP 패킷과 마찬가지로 데이터링크 계층과 직접 통신한다. 따라서 ARP 패킷은 IP 패킷과 완전히 별개이며, 프로토콜 ID는 0806으로 IP의 0800과 다르다. IP 패킷에서, 헤더의 프로토콜 ID에서는, 현재의 패킷이 TCP 패킷인지, UDP 패킷인지 따위를 명시해 주어야 한다. IP 패킷에서, 헤더 부분은 송신지와 수신지를 제외하면 나머지는 네트워크 상황에 따라 변경될 수 있다. IP 패킷의 크기는 .. 더보기
IP Addressing 인터넷 프로토콜은 데이터그램(Datagram)의 형태로 호스트들 사이에 데이터를 옮긴다. 각각의 데이터그램은 헤더의 도착지 주소에 들어있는 줏로 배달된다. 도착지의 주소는 네트워크와 네트워크 사이에서 유일하게 표현되는 32비트 크기를 가지는 주소값이다. IP 주소는 네트워크 부분과 호스트 부분을 가지지만, 이들 부분의 포맷은 모든 IP 주소에서 동일하지는 않다. 즉, 네트워크를 지정하는데 사용되는 주소 비트와 호스트를 지정하는데 사용되는 수는 주소의 prefix 길이에 따라 변한다. prefix 길이가 결정되는 데는 2가지 방법이 있다. 주소 클래스를 사용하거나 CIDR 주소 마스크를 사용하는 방법이 있다. 문제가 되는 IP 주소 공간 고갈 문제는, 32비트 주소 체계라는 근본적인 문제 때문에 일어난 일.. 더보기
Repeater, Bridge, and Router 이더넷의 데이터 전송 방식은 CSMA/CD(Carrier Sense Multiple Access / Collision Detection)이다. 데이터를 A에서 Z까지 보낸다면, 같은 네트워크에 물려 있는 모든 기계들이 데이터를 받을 수 있다. 데이터의 송수신 과정에서 서로 충돌하면, 이더넷은 데이터 송수신을 잠시 기다렸다가 다시 시도하게 된다. 대기 시간은 무작위로 결정된다. 리피터(Repeater)는 신호를 복원, 증폭하는 역할을 한다. 리피터는 신호를 다시 보내주는 역할 할 뿐이며, 신호를 필터링하지 않는다. 즉, 리피터는 신호가 들어왔을 때, 이것을 버려야 할지, 어디로 가야할지 따위를 결정하지 않는다. 브릿지(Bridge)는 신호를 필터링할 수 있다. 브릿지는 데이터링크 계층에서 동작하는 저수준의.. 더보기
Data Communication Layers 네트워크 모델에서의 각 계층(layer)들은 상대방 계층들에 대해서만 통신하게 된다. 전송측의 해당 Application 계층은 수신측의 Application에서 자신과 짝이 맞는 계층과 통신하게 된다. OSI 7 계층은 네트워크를 이론적으로 잘 설명하는 모델이지만, 실제 구현은 이것보다 훨씬 간략하게 되어 있다. OSI 7 계층을 그대로 구현한 프로토콜은 사실 찾아보기 힘들다. TCP/IP 프로토콜은 4계층, 혹은 5계층으로 구분하며, 특정 계층은 OSI 7 계층의 몇몇 계층의 기능을 하나의 계층으로 가지고 있다. 각 계층에서 데이터를 송수신하는 것은 우편물 보내기와 비슷한 면이 있다. 각 계층에서는, 자신에게 필요한 정보를 담은 헤더를 첨가하여 다음 계층에게 전달하는데, 이것은 내용물을 우편 봉투에 .. 더보기
Packet Switched Network Packet Switched Network과 Circuit Switched Network.. 유선 전화망이라면, 연결되는 과정에서 유일한 경로가 하나 설정된다. 즉, 데이터 송수신을 하는데 이 경로를 따라서 데이터가 이동하며, 만약 중간 지점에서 연결이 차단되는 경우가 생긴다면, 데이터 송수신은 실패하게 된다. 또, 이동 경로에 따라서 데이터 지연시간이 생기며, 데이터 송수신이 종료되는 순간까지 이 경로는 확실히 존재한다는 보장을 할 수 있다. 반면, 패킷 기반 통신망이라면 이것은 성립하지 않는다. 데이터는 연속된 흐름 대신, 패킷이라 불리는 작은 조각으로 분할되어 전송되며, 데이터의 이동 경로 또한 고정되지 않는다. 데이터가 지나가야 하는 특정 지점마다 패킷이 이동해야 하는 다음 지점을 가리키며, 이것.. 더보기