분류 전체보기 235

LAN(Local area network), WAN(Wide area Network)의 차이점

네트워크는 크게 LAN과 WAN으로 나뉜다. LAN (Local Area Network) LAN은 사용자가 포함된 지역 네트워크를 말한다. 쉽게 말하자면 학교, 회사, 집에서 컴퓨터, IP전화기 등의 장비를 서로 연결한 것이다. 이때 컴퓨터끼리 1대1로 직접 연결한 것이 아니라 공유기나 스위치등을 이용해서 아래와 같이 연결하는 것이다 . LAN의 특징은 다음과 같다. 1. 좁은 지역으로 제한되기 때문에 네트워크 비용이 상대적으로 낮다. 2. 네트워크의 특성상 오류 및 연결 문제가 상대적으로 낮다. 3. 문제 발생시의 해결이 비교적 더 쉽다. 4. 이더넷 및 Wi-Fi 프로토콜을 주로 사용한다. WAN (Wide Area Network) WAN은 LAN과 LAN사이를 광범위한 지역 단위로 구성하는 네트워크..

Network 2021.12.11

(네트워크 장비) 스위치 허브와 공유기의 차이점?

1. 스위치 허브 스위치 허브의 경우는 간단하게 길을 만들어주는 역할을 한다. 그렇기 때문에 일반 가정에 들어온 인터넷 회선에 허브만 연결하고 컴퓨터를 연결한 경우 1대의 컴퓨터만 인터넷을 사용가능 하다. 할당받은 IP가 하나이기 때문이다. 2. 공유기 공유기는 스위치의 기능에 라우터의 기능 일부가 추가된 것이다. 공유기를 인터넷 회선에 연결하고 컴퓨터를 여러 대 연결한 경우 공유기 내부의 DHCP 서버에서 각 PC에 사설 IP를 할당한다. 연결된 모든 컴퓨터는 IP를 할당받았기 때문에 모두 인터넷이 가능하다. 공유기 내부의 라우터 (NAT기능: 네트워크 주소 변환 기능)에서는 이 사설 IP와 외부 회선의 IP를 분배해서 연결한다. 공유기는 외부 인터넷 회선(WAN: Wide area network)과 ..

Network 2021.12.11

리눅스 에러 Could not get lock /var/lib/dpkg/lock-frontend

1. 개요 리눅스 운영체제에서 apt로 패키지 설치시 간혹 발생하는 에러이다. sudo apt install [PACKAGE_NAME] 나는 우분투 이미지로 VirtualBox에서 VM 생성 후 각종 패키지 설치 한 뒤에 이 에러가 종종 발생했다. 해당 원인은 'Synaptic Package Manager' 또는 'Software Updater' 가 열려있거나 일부 api 명령이 터미널에서 실행중일때 일부 apt 프로세스가 백그라운드에서 실행 중일때 위의 경우는 프로세스가 완료될때까지 기다린다. 그렇지않은 경우는 아래와 같이 해결한다. 2. 해결방법 터미널에서 apt와 apt-get을 모두 중지한다. sudo killall apt apt-get 위의 경우가 먹히지 않는다면, 터미널에서 커맨드로 lock파..

Server/Linux 2021.12.07

VM생성 후 초기 필수 패키지 설치, 고정IP 설정 [Ubuntu 18.04 desktop 기준]

VM 네트워크 설정 VM 상단 설정 > 네트워크 > 어댑터 1 다음에 연결됨: 어댑터에 브리지 이름: [사용중인 네트워크 인터페이스] 패키지 설치 sudo apt install -y net-tools sudo apt install -y ssh sudo apt install -y vim sudo apt install -y curl static IP 설정 우측상단의 네트워크 아이콘 클릭 Network설정에서 Wired 섹션의 우측 톱니바퀴 아이콘 클릭 설정에서 "IPv4" 탭 클릭, 아래와 같이 설정한 후, 우측상단의 Apply를 눌러 적용해준다. 이후 네트워크를 OFF 시킨 후, 다시 ON 시켜 적용시킨다. 이후 터미널에서 ifconfig 명령어로 적용 확인

Server 2021.12.01

포트(Port)에 대해 + 잘 알려진 포트

1. 포트(Port)란? 포트는 보통 항구나 공항을 나타낸다. 이러한 항구와 공항은 외부세계와 접속할 수 있는 관문이 된다. 컴퓨터에서도 마찬가지다. 컴퓨터에서의 포트란 외부의 다른 장비와 접속하기 위한 플러그와 같은 것을 의미한다. 예를 들어 하나의 서버가 있을 때 이 서버는 다양한 역할을 하게 되는 경우가 있다. 웹사이트를 전달해주는 역할, 파일을 요청하는 역할, 이럴경우 클라이언트가 서버에 요청을 보냈을때, 웹사이트 요청인지 파일 요청인지 구분할 수 있는 방법이 필요하게 된다. 이때 바로 Port를 사용하게 된다. 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 포트번호는 어떤 프로그램에 접속 할 것인지 컴퓨터에게 알려준다. 아래 그림과 같이 웹 브라우저로 서버에 접속을 ..

Network 2021.11.30

리눅스 네트워크 포트 상태 확인

만일 웹 서버를 생성하고, 데몬(Daemon)프로세스로 실행하여 웹 서비스를 개시하려고 할때, 현재 시스템의 네트워크 포트 상태를 확인할 필요가 있다. (만약 서버의 포트로 지정된 번호가 이미 사용중인 포트라면, 지정한 포트를 변경하거나, 현재 해당 포트를 사용하는 프로세스를 종료시켜야 한다.) 현재 사용하고 있는 TCP포트(Port)를 조회하는 리눅스 명령어는 netstat이다. netstat 명령어로 TCP 통신을 진행중인 서비스의 연결 상태를 확인할 수 있다. (netstat은 Network Statistics의 약자로, 네트워크의 문제를 찾아내고 성능 측정으로서 네트워크상의 트래픽(Traffic)양을 결정하기 위해 사용한다. ) netstat 옵션: a 모든 소켓을 출력 -l listen 상태인 ..

Server/Linux 2021.11.30

[Python] 모듈이 있는데 No module named XXX 에러가 뜰때 점검사항

어제 오후에 있었던 일이다. 'docker'라는 디렉터리 하위에 있는 'Client' 모듈을 import해야하는 상황이었다. import Client from docker 위와 같은 형식으로 모둘을 import하는 과정에서, 내가 구성한 docker라는 디렉터리 내에 Client모듈이 있었음에도 불구하고, "No module named XXX" 에러가 발생하게 되었다 그 원인은 python의 sys.path경로에 여러 디렉터리가 잡혀있었는데, 그중 다른 경로의 docker 디렉터리를 가져와놓고서는, 'Client'모듈이 없다고 에러를 뱉은 것이다. 예를들어, [ /tmp/dir_A/docker ] temp.py [ /tmp/dir_B/docker ] Client.py 위와 같이 두 디렉터리가 있고, sy..

Language/Python 2021.11.23

[Python] sys.path에 관해

파이썬의 sys.path는 모듈을 import할 때 모듈을 찾아야 할 경로들을 저장해둔 list이다. 예를 들어 sys.path가 ['dir_A', 'dir_B', 'dir_C'] 라고 가정했을때, import client이라는 코드를 만나면 Python은 먼저 dir_A 디렉터리 내에서 client 모듈을 찾는다. 찾으면 import를 하고, 없으면 dir_B, dir_C를 검색해보고, 그래도 없으면 ModuleNotFoundError 예외를 발생시킨다. sys.path는 언제 만들어질까? - 먼저 최초 실행된 Python 스크립트가 위치한 디렉토리를 더한다. 이때 interactive shell(python or python3)으로 실행된 경우는 ''(빈 스트링)을 사용한다. - 환경 변수중 PYTH..

Language/Python 2021.11.23

(@angular/material/dialog) MatDialogRef에 관해

로드할 컴포넌트와 선택적인 config object를 파라미터로 주어 open 메서드를 호출하면 다이얼로그가 열린다. 이 open 메서드는 MatDialogRef의 인스턴스로 반환된다. let dialogRef = dialog.open(UserProfileComponent, { height: '400px', width: '600px', }); MatDialogRef는 열린 다이얼로그를 조작할 수 있게 제공한다. 이는 dialog를 닫고 다이얼로그가 닫혔을때 알림을 받을수 있도록 사용할 수 있다. 모든 알림 Observables는 다이얼로그가 닫힐때 발생된다. dialogRef.afterClosed().subscribe(result => { console.log(`Dialog result: ${result..

반응형