CS/Network

    [Network] 이더넷(Ethernet)

    이더넷이란? 이더넷은 전세계에서 가장 널리 쓰이는 네트워크 통신 규격이다. 우리 컴퓨터에 탑재되어있는 네트워크 인터페이스는 대부분 이더넷 규격을 사용한다. 링크계층에서 전송하게되는 링크 계층 프레임 중 하나로 볼 수 있다. 하지만 대부분의 네트워크 규격이 이더넷이므로 링크 계층 프레임 == 이더넷 프레임 이라 생각해도 될 것같다. 이더넷 프레임의 구조 이더넷 프레임은 링크 계층 프레임이므로 네트워크 계층의 데이터그램을 캡슐화 한다. 일반적으로 네트워크 계층에서 IP 프로토콜을 주로 쓰기 때문에 이더넷 프레임이 IP 데이터그램을 캡슐화 한다고 이해하면 된다. 데이터 필드(46~1500 비트) IP 데이터그램을 운반하는 필드이다. 이더넷의 최대 전송단위(MTU, maximum transfer unit)는 1..

    [Network] 링크 계층 주소체계와 ARP

    [Network] 링크 계층 주소체계와 ARP

    링크 계층 주소란(MAC 주소) 호스트나 라우터가 직접 가지고 있지 않고, 호스트나 라우터의 인터페이스(어댑터)가 가지고 있다. 링크 계층 주소는 가장 널리 알려진 용어진 MAC 주소라고 생각하면 된다. (링크 계층 주소 == MAC 주소) MAC 주소는 길이가 6바이트이며 따라서 2^48개의 주소가 존재한다. 흥미로운 점은 세상의 어떤 어댑터도 동일한 값을 갖지 않는다는 점이다. 다양한 나라에서 제조되는 어댑터들이 모두 다른 값을 가질 수 있는 이유는 IEEE(Institute of Electrical and Electronics Engineers)가 MAC 주소 공간을 관리하기 때문이다. 어떤 회사에서 어댑터를 제조하려면 2^24개의 주소로 이루어진 주소 영역을 구매해야 한다. IEEE에서는 MAC주..

    [Network] 네트워크 계층 : OpenFlow 프로토콜

    [Network] 네트워크 계층 : OpenFlow 프로토콜

    오픈 플로우(OpenFlow) 프로토콜 오픈플로우 프로토콜은 TCP상에서 포트번호 6653을 가지고 동작한다. 컨트롤러는 연결 설정을 하려는 스위치에 대하여 TCP 포트 6653을 리스닝하고 있어야 한다. 스위치에 오픈플로우 펌웨어를 삽입한다. 컨트롤러와 스위치간에 전달되는 메시지를 알아보자 컨트롤러 -> 스위치(라우터) 설정 : 컨트롤러가 스위치의 설정 파라미터들을 문의하거나 설정할 수 있도록 한다. 상태 수정 : 컨트롤러가 스위치 플로우 테이블의 엔트리를 추가/제거 또는 수정하거나 스위치 포트의 특성을 설정하기 위해 사용된다. 상태 읽기 : 컨트롤러가 스위치 플로우 테이블과 포트로부터 통계 정보와 카운터 값을 얻기 위해 사용한다. 패킷 전송 : 컨트롤러가 제어하는 스위치의 지정된 포트에서 특정 패킷을..

    [Network] 네트워크 계층 : SDN(Software-Defined Networking)

    [Network] 네트워크 계층 : SDN(Software-Defined Networking)

    SDN 제어평면에서의 패킷 포워딩은 목적지 기반 포워딩이 아닌 일반적인 포워딩을 사용한다. 즉 출발지/목적지의 IP주소만 가지고 패킷을 알맞게 포워딩하는것이 아니다. 네트워크 계층, 링크 계층에서의 출발지/목적지 주소에 이어서 트랜스포트, 네트워크, 링크 계층에 있는 패킷 헤더의 많은 다른 값에 기반해서 포워딩이 이루어진다. SDN 구조의 네가지 특징 플로우 기반 포워딩 : SDN으로 제어되는 패킷 스위치(라우터, 링크계층 스위치)에서 패킷 포워딩은 세그먼트, 데이터그램, 링크 프레임의 헤더의 다양한 값을 가지고 포워딩을 한다. (OpenFlow 1.0그림의 11가지 헤더 참고) 이러한 패킷 포워딩 규칙은 각 스위치의 플로우 테이블에 기록된다. 그래서 SDN 제어평면 에서는 모든 네트워크 스위치들의 플로..

    [Network] 네트워크 계층 : 라우터(Router)

    [Network] 네트워크 계층 : 라우터(Router)

    라우터 내부에는 무엇이 있을까? 입력 포트 : 입력 포트의 맨 왼쪽 상자와 출력 포트의 맨 오른쪽 상자로서, 라우터로 들어오는 입력 링크의 물리 계층 기능을 수행한다. 가장 중요한 검색기능은 입력 포트의 가장 오른쪽 상자에서 수행한다. 여기서 포워딩 테이블을 참조하여 도착된 패킷이, 스위칭 구조를 통해 전달되는 라우터 출력 포트를 결정한다. '포트'라는 의미는 물리적인 입출력 라우터 인터페이스(전선)를 의미한다. 애플리케이션과 트랜스포트 계층 사이에서의 소켓과 관련된 포트와는 완전히 다른 의미이다. 스위치 구조 : 라우터의 입력 포트와 출력 포트를 연결한다. 출력 포트 : 스위칭 구조로부터 수신한 패킷을 저장하고 필요한 링크 계층(헤더 확인) 및 물리적 계층 기능(패킷 전송)을 수행해서 출력 링크로 패킷..

    [Network] 네트워크 계층 : 개요와 서비스 모델

    [Network] 네트워크 계층 : 개요와 서비스 모델

    위 그림은 H1 호스트와 H2 사이를 이루는 간단한 네트워크를 보여 준다. H1에서 H2로 정보를 보낸다고 가정하고, 호스트와 중계 라우터에서 네트워크 계층의 역할을 생각해 보자. H1 네트워크 계층은 H1의 트랜스포트 계층으로부터 세그먼트를 받아 각 세그먼트를 데이터그램으로 캡슐화하고, 인접한 라우터 R1에게 데이터그램을 보낸다. 수신 호스트 H2의 네트워크 계층은, 세그먼트를 추출하여 H2의 트랜스포트 계층으로 전달한다. 각 라우터의 데이터 평면 역할은 입력 링크에서 출력 링크로 데이터그램을 전달하는 것이다. 네트워크 제어 평면의 근본적 역할은 데이터그램이 송신 호스트에서 목적지 호스트까지 잘 전달되게끔 로컬과 퍼 라우터 포워딩을 조정하는 것이다. 포워딩과 라우팅 개념 아래는 네트워크 계층의 중요한 ..

    [Network] 트랜스포트 계층 : 흐름제어, TCP 연결

    [Network] 트랜스포트 계층 : 흐름제어, TCP 연결

    흐름제어 수신 호스트는 여러 작업을 하기 때문에 자신에게 들어오는 메시지를 바로바로 읽지 못한다. 이 점을 인지하지 못하고 송신 호스트가 계속해서 메시지를 보내게 된다면 수신 버퍼가 가득차게 되어 오버플로우가 일어나게 된다. TCP는 수신 버퍼의 오버플로우를 방지하기 위해서 수신호스트가 메시지를 읽는 속도와 송신 호스트가 메시지를 보내는 속도를 일치시키는 작업을 하게 된다. 이를 '흐름제어'라고 한다. TCP는 송신 호스트가 수신 윈도우 라는 세그먼트 변수를 유지하여 흐름제어를 제공한다. 파일 전송 환경에서 수신 윈도우를 알아보자. TCP 연결 상에서 A호스트가 B호스트에서 큰 파일을 전송한다고 가정해보자. B호스트는 이 TCP 연결에 수신 버퍼를 할당한다. 이를 RcvBuffer 라고 한다. B호스트는..

    [Network] 트랜트포트 계층 : TCP 연결 (연결 지향형)

    [Network] 트랜트포트 계층 : TCP 연결 (연결 지향형)

    TCP 연결 TCP의 특징 TCP는 애플리케이션 프로세스가 데이터를 다른 프로세스에게 보내기 전에, 두 프로세스가 서로 "핸드셰이크"를 먼저 해서 연결을 시키는 사전 작업이 필요하다. 따라서 TCP는 연결을 성공시킨 뒤 데이터를 확실하게 주고 받는 연결 지향형이다. 즉, 데이터 전송을 보장하는 파라미터들을 각자 설정하기 위한 사전 세그먼트들을 보내야 한다. 파라미터로는 송수신 포트번호 등이 있다. TCP 프로토콜은 오직 종단 시스템에서만 동작하고 중간의 네트워크 계층의 요소들(라우터, 스위치) 에서는 동작하지 않는다. 따라서 중간의 네트워크 계층의 요소들은 TCP 연결상태를 유지하지 않고, 현재 전송되는 데이터가 TCP 방식인지도 알 수 없다. TCP 연결은 전이중(full-duplex)서비스를 제공한다..

    [Network] 트랜스포트 계층 : 다중화와 역다중화

    트랜스포트 계층의 다중화와 역다중화에 대해서 알아보자 다중화와 역다중화 애플리케이션의 한 부분으로서 프로세스는 소켓을 가지고 있다. 소켓을 통해서 프로세스와 프로세스가 네트워크를 통해 데이터를 주고받을 수 있다. 위 그림을 보면 트랜스포트와 애플리케이션 계층 사이에 소켓(초록 네모 박스)이 있고 소켓과 프로세스가 연결되어 있음을 볼 수 있다. 따라서 트랜스포트 계층은 메시지를 직접 프로세스로 전달하지 않고 중간 매개자인 소켓에게 전달한다. 이때 애플리케이션이 메시지를 받을 다양한 소켓을 가지고 있을 수 있으므로 각 소켓은 TCP 소켓인지 UDP 소켓인지를 구분하는 식별자를 가지게 된다. 역다중화 트랜트포트 계층에 상대 프로세스로부터 수신된 세그먼트 필드 집합이 있다. 이들은 사전에 설정된 트랜스포트 프로..

    [Network] 트랜스포트 계층 : 개요(Intro)

    [Network] 트랜스포트 계층 : 개요(Intro)

    인터넷 5계층에서 애플리케이션 계층과 네트워크 계층 사이에 있는 '트랜트포트 계층'의 프로토콜에 대해서 알아보자 트랜스포트 계층 개요 트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공한다. 논리적 통신은 애플리케이션의 관점에서 보면 프로세스들이 동작하는 다양한 호스트들이 직접 연결된 것처럼 보인다는 의미이다. 하지만 실제로 호스트들은 수많은 라우터와 다양한 형태의 물리 링크를 통해 연결된 지구상의 다른 지역에 있을 수 있다. 트랜스포트 계층 프로토콜은 네트워크 엣지에서 구현된다. 송신 측의 트랜스포트계층은 애플리케이션 프로세스로부터 받은 메시지를 세그먼트 패킷으로 변환한다. 세그먼트는 트랜스포트 계층의 헤더와 애플리케이션 계층의 메시지를 캡슐화 한 ..