Network

    Ubuntu IP 설정하기 (Virtual Box)

    Ubuntu IP 설정하기 (Virtual Box)

    Virtual Box를 사용하면 서버 네트워크를 설정해야할 경우가 많다. Ubuntu로 서버를 설치했을 때, 고정 IP를 설정하는 방법을 알아보자 ifconfig를 입력해서 네트워크 상태를 보면 위처럼 네트워크 어댑터들이 있음을 볼 수 있다. 별다른 설정을 안했으면 위에 보이는 enp0s3, enp0s8 같은 것들이 없을 것이다. Virtual Box에서 enp0s3는 NAT 네트워크를 의미하고, enp0s8은 호스트 전용 어댑터를 의미한다. 네트워크 어댑터를 설정하기 위해서 cd /etc/netplan 으로 이동한 후 보이는 yaml 파일에 sudo vi로 접속하자. ## 00-installer-config.yaml # This is the network config written by 'subiqui..

    [Network] 네트워크 계층 : 라우팅(Link-State Routing)

    [Network] 네트워크 계층 : 라우팅(Link-State Routing)

    라우팅 알고리즘의 목표는 송신자로부터 수신자까지 라우터의 네트워크를 통과하는 좋은 경로를 결정하는 것이다. 일반적으로 좋은 '경로'란 최소 비용 경로를 의미한다. 그러나 현실적으로는 네트워크 정책('Y'기관에 속해있는 라우터 x는 'Z'기관이 보낸 패킷을 전달해서는 안된다.)과 같은 실제 문제가 고려된다. 라우팅 알고리즘을 분류하는 일반적인 방법 1. 중앙 집중형 vs 분산형 중앙 집중형 네트워크 전체에 대한 완전한 정보를 가지고 출발지와 목적지 사이의 최소 비용 경로를 계산하는 알고리즘이다. 이러한 정보는 알고리즘이 실제로 계산을 수행하기 전에 어떠한 방법을 통해서라도 얻어야 한다. 계산 자체는 한 장소에서 수행하거나 각각의 라우팅 모듈로 복사될 수 있다. 이 알고리즘의 핵심은 연결과 링크 비용에 대한..

    [Network] 트랜스포트 계층 : 혼잡제어

    [Network] 트랜스포트 계층 : 혼잡제어

    '혼잡' 이란? 너무 많은 전송자가 너무 많은 데이터를 너무 빠르게 전송해서 네트워크가 감당하지 못하는 그런 현상 혼잡제어가 흐름제어와 다른점 흐름제어는 Sender와 Receiver간의 1:1 문제이다. 하지만 혼잡제어는 네트워크를 공유하고 있는 모든 node들이 서로 양보를 해야하는 문제이다. 양보를 해야 네트워크 트래픽 양이 줄어들면서 원활하게 문제를 해결할 수 있기 때문에 이것은 전체 노드가 관련 된 글로벌한 이슈에 해당된다. 혼잡제어에 대한 방식 1. network-assisted - 라우터가 관여해서 호스트들에게 '지금 혼잡하니 네트워크양을 얼마만큼 줄이세요'라고 정보를 알려주는 방식 - 여러 복잡한 문제가 있기 때문에 잘 사용하지 않는다고 한다. 2. end-to-end - 라우터가 전혀 관..

    [Network] 네트워크 계층 : DHCP(Dynaminc Host Config Protocol)

    [Network] 네트워크 계층 : DHCP(Dynaminc Host Config Protocol)

    DHCP(Dynaminc Host Config Protocol) 호스트의 주소를 자동으로 설정해주는 프로토콜이다. 2-30년전 컴퓨터를 사용할 때는 직접 컴퓨터의 IP 주소를 설정하고 여러가지 세팅을 해야만 인터넷에 접속할 수 있었다. 그런데 요즘 컴퓨터들은 전원만 꽂으면 사용할 수 있는데 이것이 DHCP 라는 프로토콜 덕분이다. DHCP의 목적은 호스트가 자신의 IP주소를 네트워크에 있는 서버로부터 자동으로 얻는 것이다. 장점 주소의 재사용이 가능하다 예를 들어 한 학과에 300명의 학생이 있다고 하자. 이 학생들이 학교에서 컴퓨터를 사용하기 위해서 인터넷에 접속하고 싶다면 300대의 컴퓨터 모두 IP주소가 할당되어야 할 것이다. 결국 300개의 IP주소가 필요하다는 것이다. 하지만 300명이 동시에 ..

    [Network] 가상 근거리 네트워크(VLAN)

    [Network] 가상 근거리 네트워크(VLAN)

    VLAN(Virtual Local Area Network)는 하나의 물리적 근거리 네트워크 구조에서 여러 개의 가상 근거리 네트워크들을 정의할 수 있게 한다. 특정 VLAN에 속한 호스트들은 마치 하나의 물리 스위치에 자신들만 서로 연결된 것으로 인식한다. 포트 기반 VLAN에서는 네트워크 관리자가 스위치 포트를 그룹으로 나눈다. 각 그룹은 하나의 VLAN을 구성하며, 한 VLAN의 포트들은 하나의 브로드캐스트 도메인을 형성한다. 위 그림은 16개의 포트를 가진 단일 스위치이다. 포트 2~8은 전기공학과(이하 EE)에 속하고, 포트 9~15는 컴퓨터과학과(이하 CS)에 속한다. 이렇게 학과 마다 각기 다른 네트워크를 구축함으로서 트래픽을 효율적으로 처리할 수 있게 되었다. 그런데 이들은 사실상 하나의 스..

    [Network] 링크 계층 스위치

    1장에서 가장 먼저 공부했던 접속 네트워크에 속하며 라우터와 어떻게 다른지 감을 잡기 어려웠던 링크 계층 스위치가 드디어 나왔다. 스위치는 투명하다. 이 말은 호스트/라우터는 목적지로 보내는 도중에 자신의 프레임이 스위치에 도착하는걸 알지 못한다는 뜻이다. 스위치의 동작 방식 - 플러그 앤 플레이 1. 전달 및 여과 여과 : 프레임을 인터페이스로 전달할지 또는 폐기(drop)할지 결정함 전달 : 프레임이 전송될 인터페이스를 결정하고 프레임을 해당 인터페이스로 내보냄 스위치의 여과와 전달은 스위치 테이블을 이용한다. 스위치 테이블에는 랜상의 일부 호스트와 라우터에 대한 엔트리가 포함되어있다. 스위치 테이블의 엔트리에는 1) MAC주소, 2) MAC 주소로 가게 하는 스위치 어댑터, 3) 해당 엔트리가 테이..

    [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주..

    [Nginx] 웹 서버 Nginx 에 대해서...

    [Nginx] 웹 서버 Nginx 에 대해서...

    최근 수정일: 2022/05/24 Django로 구축한 API 서버와 React를 연결하고 배포하기 위해서 Nginx를 사용해보았다. Django와 React를 연결하기 위해서 웹 서버와 Nginx에 대한 이해가 반드시 필요했고, 앞으로 Nginx를 공부하며 알게 되는 지식들을 최대한 자세히 이 포스팅에 담을 예정이다. 그리고 Nginx만 다루는 게 아니라 웹 서버의 전반적인 이해를 위해서 조금이라도 궁금한 점이 생기면 옆길로 계속 새어나갈 예정이다. Nginx란? #1 간단히 말해서 경량화된 소프트웨어 웹 서버이다. Nginx는 Single-thread로 동작하며 비동기 non-blocking I/O 이벤트 기반으로 요청을 처리한다. 따라서 적은 자원으로 효율적인 트래픽 처리가 가능하다. (멀티 스레드..

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

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

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