Network
[Network] 네트워크 계층 : SDN(Software-Defined Networking)
SDN 제어평면에서의 패킷 포워딩은 목적지 기반 포워딩이 아닌 일반적인 포워딩을 사용한다. 즉 출발지/목적지의 IP주소만 가지고 패킷을 알맞게 포워딩하는것이 아니다. 네트워크 계층, 링크 계층에서의 출발지/목적지 주소에 이어서 트랜스포트, 네트워크, 링크 계층에 있는 패킷 헤더의 많은 다른 값에 기반해서 포워딩이 이루어진다. SDN 구조의 네가지 특징 플로우 기반 포워딩 : SDN으로 제어되는 패킷 스위치(라우터, 링크계층 스위치)에서 패킷 포워딩은 세그먼트, 데이터그램, 링크 프레임의 헤더의 다양한 값을 가지고 포워딩을 한다. (OpenFlow 1.0그림의 11가지 헤더 참고) 이러한 패킷 포워딩 규칙은 각 스위치의 플로우 테이블에 기록된다. 그래서 SDN 제어평면 에서는 모든 네트워크 스위치들의 플로..
[Network] 네트워크 계층 : 라우터(Router)
라우터 내부에는 무엇이 있을까? 입력 포트 : 입력 포트의 맨 왼쪽 상자와 출력 포트의 맨 오른쪽 상자로서, 라우터로 들어오는 입력 링크의 물리 계층 기능을 수행한다. 가장 중요한 검색기능은 입력 포트의 가장 오른쪽 상자에서 수행한다. 여기서 포워딩 테이블을 참조하여 도착된 패킷이, 스위칭 구조를 통해 전달되는 라우터 출력 포트를 결정한다. '포트'라는 의미는 물리적인 입출력 라우터 인터페이스(전선)를 의미한다. 애플리케이션과 트랜스포트 계층 사이에서의 소켓과 관련된 포트와는 완전히 다른 의미이다. 스위치 구조 : 라우터의 입력 포트와 출력 포트를 연결한다. 출력 포트 : 스위칭 구조로부터 수신한 패킷을 저장하고 필요한 링크 계층(헤더 확인) 및 물리적 계층 기능(패킷 전송)을 수행해서 출력 링크로 패킷..
[Network] 네트워크 계층 : 개요와 서비스 모델
위 그림은 H1 호스트와 H2 사이를 이루는 간단한 네트워크를 보여 준다. H1에서 H2로 정보를 보낸다고 가정하고, 호스트와 중계 라우터에서 네트워크 계층의 역할을 생각해 보자. H1 네트워크 계층은 H1의 트랜스포트 계층으로부터 세그먼트를 받아 각 세그먼트를 데이터그램으로 캡슐화하고, 인접한 라우터 R1에게 데이터그램을 보낸다. 수신 호스트 H2의 네트워크 계층은, 세그먼트를 추출하여 H2의 트랜스포트 계층으로 전달한다. 각 라우터의 데이터 평면 역할은 입력 링크에서 출력 링크로 데이터그램을 전달하는 것이다. 네트워크 제어 평면의 근본적 역할은 데이터그램이 송신 호스트에서 목적지 호스트까지 잘 전달되게끔 로컬과 퍼 라우터 포워딩을 조정하는 것이다. 포워딩과 라우팅 개념 아래는 네트워크 계층의 중요한 ..
[Network] 트랜스포트 계층 : 흐름제어, TCP 연결
흐름제어 수신 호스트는 여러 작업을 하기 때문에 자신에게 들어오는 메시지를 바로바로 읽지 못한다. 이 점을 인지하지 못하고 송신 호스트가 계속해서 메시지를 보내게 된다면 수신 버퍼가 가득차게 되어 오버플로우가 일어나게 된다. TCP는 수신 버퍼의 오버플로우를 방지하기 위해서 수신호스트가 메시지를 읽는 속도와 송신 호스트가 메시지를 보내는 속도를 일치시키는 작업을 하게 된다. 이를 '흐름제어'라고 한다. TCP는 송신 호스트가 수신 윈도우 라는 세그먼트 변수를 유지하여 흐름제어를 제공한다. 파일 전송 환경에서 수신 윈도우를 알아보자. TCP 연결 상에서 A호스트가 B호스트에서 큰 파일을 전송한다고 가정해보자. B호스트는 이 TCP 연결에 수신 버퍼를 할당한다. 이를 RcvBuffer 라고 한다. B호스트는..
[Network] 트랜트포트 계층 : TCP 연결 (연결 지향형)
TCP 연결 TCP의 특징 TCP는 애플리케이션 프로세스가 데이터를 다른 프로세스에게 보내기 전에, 두 프로세스가 서로 "핸드셰이크"를 먼저 해서 연결을 시키는 사전 작업이 필요하다. 따라서 TCP는 연결을 성공시킨 뒤 데이터를 확실하게 주고 받는 연결 지향형이다. 즉, 데이터 전송을 보장하는 파라미터들을 각자 설정하기 위한 사전 세그먼트들을 보내야 한다. 파라미터로는 송수신 포트번호 등이 있다. TCP 프로토콜은 오직 종단 시스템에서만 동작하고 중간의 네트워크 계층의 요소들(라우터, 스위치) 에서는 동작하지 않는다. 따라서 중간의 네트워크 계층의 요소들은 TCP 연결상태를 유지하지 않고, 현재 전송되는 데이터가 TCP 방식인지도 알 수 없다. TCP 연결은 전이중(full-duplex)서비스를 제공한다..
[Network] 트랜스포트 계층 : 다중화와 역다중화
트랜스포트 계층의 다중화와 역다중화에 대해서 알아보자 다중화와 역다중화 애플리케이션의 한 부분으로서 프로세스는 소켓을 가지고 있다. 소켓을 통해서 프로세스와 프로세스가 네트워크를 통해 데이터를 주고받을 수 있다. 위 그림을 보면 트랜스포트와 애플리케이션 계층 사이에 소켓(초록 네모 박스)이 있고 소켓과 프로세스가 연결되어 있음을 볼 수 있다. 따라서 트랜스포트 계층은 메시지를 직접 프로세스로 전달하지 않고 중간 매개자인 소켓에게 전달한다. 이때 애플리케이션이 메시지를 받을 다양한 소켓을 가지고 있을 수 있으므로 각 소켓은 TCP 소켓인지 UDP 소켓인지를 구분하는 식별자를 가지게 된다. 역다중화 트랜트포트 계층에 상대 프로세스로부터 수신된 세그먼트 필드 집합이 있다. 이들은 사전에 설정된 트랜스포트 프로..
[Network] 인터넷 프로토콜 계층과 캡슐화
인터넷은 매우 복잡하다. 하지만 이렇게 복잡한 인터넷 네트워크 구조도 결국 조직화 되었다. 우리가 이용하는 항공 시스템을 생각해보자. 비행기에 수하물을 보내서 이동시키는 과정은 다음과 같다. 네트워크에서 우리가 전송하려는 메시지를 수하물이라고 생각하면 될 것 같다. 수하물을 공항에서 검사 후 비행기에 태운다. == 호스트에서 데이터를 접속 네트워크에 보낸다. 비행기가 이륙한다. == 데이터가 통신 링크를 통해서 다음 라우팅 지점으로 향한다. 비행기가 관제탑의 지시를 받아 방향을 전환 한다. == 데이터의 헤더에 있는 정보를 통해서 라우터는 데이터의 다음 링크를 정해준다. 비행기가 착륙해서 수하물을 내려준다. == 도착지 호스트가 데이터를 받는다. 위와 같이 우리가 사용하는 시스템이 네트워크에도 비슷하게 ..
[Network] 인터넷이란? Intro
인터넷은 전 세계적으로 수십억 개의 컴퓨팅 장치를 연결하는 컴퓨터 네트워크이다. 네트워크 가장자리 인터넷의 모든 장치(데스크톱 PC, 리눅스 서버, 스마트폰, 태플릿, TV, 게임 콘솔 등)은 호스트 혹은 종단 시스템이라고 불린다. 데이터 전송 기초 종단 시스템은 통신 링크와 패킷 스위치가 있는 네트워크로 연결된다. 통신 링크에서는 다양한 전송률을 이용해서 패킷을 전송한다. 전송할 데이터가 만들어지면 종단 시스템에서 해당 데이터를 세그먼트로 나누고, 각 세그먼트에 헤더를 붙인다. 이렇게 만들어진 정보는 '패킷' 이라고 불리며 목적지까지 전송된다. 패킷 스위치는 라우터와 링크 계층 스위치를 가장 널리 사용한다. 스위치는 최종 목적지 방향에 있는 통신 링크로 패킷을 전달한다. 링크 계층 스위치는 보통 엑세스..
[Docker] Django 개발 환경 세팅 #2
[Docker] Django개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이너.. 들어봤는데 무엇인지 잘 모르겠.. hyeo-noo.tistory.com 지난 포스팅에 이어서 mariadb 컨테이너를 만들고 네트워크를 통해서 둘을 연결해보자 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이너.. 들어봤는데 무엇..