본문 바로가기
  • 🦄 창민이 개발일지

분류 전체보기50

[BUCL 프로젝트] React와 React Native 간 브릿지 통신을 통한 WebView에 Stack Navigation 구현 👀 Intro상황React로 웹개발하고 Webview로 띄우는 방식인 하이브리드 앱 방식으로 진행했습니다.하이브리드 앱 장점장점: 웹으로 개발하기 때문에 유지보수가 쉽고 IOS 와 안드로이드를 동시에 개발할 수 있다.단점: Webview로 띄우는 방식이기 때문에, 네이티브 방식 보다 느리고 밑의 그림같은 앱 내 효과를 사용하기 어렵다.하이브리드 사용한 이유네이티브 보다 느리지만, 이커머스 서비스는 다른 앱 서비스에 비해 상대적으로 사용자 경험을 많이 요구하지 않음벤치마킹: 무신사, 온더룩, 캐치테이블 등 이미 많은 기업들이 하이브리드 앱 방식으로 개발을 진행요구사항서비스 기획 상 앱처럼 보여야 됐기 때문에 WebView 안에서 Stack Navigation 구현이 필요WebView 특성상 하나의 Sre.. 2024. 5. 30.
AWS ECS 정리 VM (Virtual Machine) VS Container 구조Container는 VM 처럼 Guest OS가 필요하지 않으므로 가볍고 빠른데 비해 Host OS에 종속 된다. 이때 Window Host는 지원하지 않고 Linux에서만 생성 가능 Docker 구조Client가 Host(Server)에 접속하여 Docker명령어를 실행하면 Host(Server)와 통신되는 Repository(ECR, Docker Hub 등)을 이용하여 Docker 이미지를 다운로드 받아서 Cotainer를 구동시킨다. container runtime컨테이너를 실행시키는 엔진으로, OS위에 컨테이너를 실행하기 위한 소프트웨어 구성 요소이다. 리포지토리에 컨테이너 로드, 컨테이너 수명주기, 로컬 리소스 모니터링 및 컨테이너.. 2024. 5. 29.
[BUCL 프로젝트] 프론트 서버와 API 서버를 분리로 인한 CORS 문제 및 로그인 갱신 문제 해결 BUCL 쇼핑몰 프로젝트를 진행하면서 클라이언트와 서버 연결할 때 CORS 문제가 발생 했고, 또한 CORS로 인해 로그인 갱신 문제도 발생했습니다.1. CORS 문제 원인 및 해결오류 원인: 서브 도메인이 달라 CORS 발생S3로 프론트 서버 구축, EC2에는 API 서버를 구축하게 되었는 데, 이로 인해 서브 도메인을 기준으로 두개의 URL를 만들어지 게 되고 그로인해 출처가 달라지게 되어 CORS 문제가 발생하게 되었습니다.CORS 에러는 웹 개발을 할때도 자주 발생하는 문제 중 하나 인데, 출처 즉 도메인이 다른 경우 브라우저가  XSS(Cross-Site Scripting) 같은 보안 문제를 자동으로 막게 됩니다.  CORS란CORS는 Cross Origin Resource Sharing의 약자.. 2024. 5. 24.
[BUCL 프로젝트] 프론트엔드와 백엔드 동시에 개발하는 방법 개요보통 개발 프로젝트를 할때, 백엔드 개발을 다하고 그 다음에 프론트엔드 개발을 진행합니다. 이런 방식의 경우, 개발 기간이 늘어나는 문제도 있고, 이로인해 팀 전체의 사기도 저하되는 문제도 있습니다. 저도 이런 경험을 많이 겪어봤고, 주변에서도 생각보다 자주 발생해요.개발 팀원을 모집하고 BUCL 프로젝트를 진행했을 때, 이 부분에 대해서 많이 생각을 했습니다.Mock ServerMock Server는 실제 서버처럼 요청과 응답을 주고 받는 가짜 서버를 의미합니다.백엔드 api 기능이 개발 되지 않는 상황에서 프론트엔드 개발을 할 수 있도록 도와줍니다.Post ManMock Server 종류는 JSON-Server 등 대게 다양한 데, 이 중에 저는 Post Man를 사용했습니다.JSONPost Ma.. 2024. 5. 22.
[BUCL 프로젝트] Full Text Search를 활용한 검색 엔진 성능 개선 기존 방식검색 페이지(/search)에 들어가 상품 이름(”productName”)를 검색시, %LIKE% 사용해 productName과 겹치는 상품 리스트를 클라이언트에게 전달@Query("SELECT p FROM Product p " +"WHERE p.name LIKE %:productName% " +"AND p.deletedAt IS NULL " +"AND p.isExposed = true " +"AND p.productStatus = com.freeder.buclserver.domain.product.vo.ProductStatus.ACTIVE " +"ORDER BY p.productPriority DESC")Page findProductsBySearchByConditions( @Param(".. 2024. 5. 22.
Git Stash 복구 사연- Github Desktop으로 브랜치 관리중 실수로 Git Stash Overwrite를 눌러 기존에 해왔던 Stash 데이터 날라 갔습니다 ㅋㅋㅋ git stash 복구git fsck --no-reflog | awk '/dangling commit/ {print $3}' | xargs -L 1 git --no-pager show -s --format="%ci %H" | sort- 맨 아래에 있는 해시값이 최근 stash 해시값 입니다. git stash 적용git stash apply 해시값EX) git stash apply 034dd83db919389d4fba5c60fdf1ad24c2e677b3 2024. 5. 14.
Mysql 풀텍스트인덱스(Full-Text Index) LIKE 문을 통한 검색 기능의 문제점// Index 스캔 가능SELECT * FROM table WHERE name LIKE 'something%';// 풀 스캔 때려 버림SELECT * FROM table WHERE name LIKE '%something%';SELECT * FROM table WHERE name LIKE '%something';%something% 연산은 DB 인덱스의 B+ Tree의 장점을 활용할 수 없고 Full Scan할 수 있는 문제가 있습니다. B+Tree 인덱스 LIKE 연산시 Full Scan 하는 이유B+ 트리 특성상 리프 노드의 데이터는 사전첨 순차적으로 저장됩니다. 그렇기 때문 %연산이 좌측에 있을 경우 결국 처음 리프노드부터 순차적으로 찾아봐야 되기 때문에 결국 .. 2024. 5. 8.
B Tree, B+ Tree 그리고 DB Index B Tree- 트리 자료구조의 일종으로 이진트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조- 이진트리에서 발전되어 모든 리프노드들이 같은 레벨을 가질 수 있도록 자동으로 벨런스를 맞추는 트리- 이진트리와 달리 하나의 노드에 많은 수의 정보를 가질 수 있고 최대 M개의 자식을 가질 수 있다 하여 M차 B 트리라고도 함- 데이터베이스와 파이 시스템에서 널리 사용 Key 검색 과정  key 삽입 과정삽입과정은 다음과 같은 과정이 이루어집니다.요소 삽입에 적절한 리프 노드를 검색필요한 경우 노드를 분할 - 삽입 과정에서 노드 분할은 리프노드 검색과 달리 하향식이 아니 상향식으로 이루어집니다. 분할이 일어나지 않는 경우 분할이 일어나는 경우   B+ Tree- B+ 트리는.. 2024. 4. 24.
클로저(Closure) MDN 클로저클로저는 주변 상태(어휘적 환경,렉시컬 환경(Lexical Enivronment))에 대한 참조와 함께 묶인(포함된) 함수의 조합클로저는 내부 함수에서 외부 함수의 범위에 대한 접근을 제공합니다클로저는 자신이 생성될 때의 환경(Lexical environment)을 기억하는 함수 스코프 범위스코프는 해당 함수를 실행시키는 환경을 의미하며, 스코프는 함수를 호출할 때가 아니라 함수를 어디에 선언하였는지에 따라 결정됩니다. 이를 결정하는 것을 렉시컬 스코핑(Lexical Scoping)이라고합니다. function outerFunction () { var x = 10; var innerFunc = function () { console.log(x); }; innerFunc();}outerF.. 2024. 4. 24.
코루틴(Coroutine) 코루틴- Co-Routine :동시 실행 루틴- Routine: 하나의 태스크로 함수 실행 단위이며, 경량 스레드라고 부름- 정리하면 코루틴은 스레드안에서 실행되는 일시 중단 가능한 작업의 단위 스레드(Thread)를 사용하는 이유위의 작업 화면 그리기, 네트워크 작업, 터치하기를 하나의 작업(스레드, 함수에서) 이루어지면 각 프로세스가 처리된 다음에 처리 되기 때문에 사용자 입장에서는 서비스가 멈추어 있는 거 처럼 보인다. 그래서 2개 이상의 작업을 사용해 동시에 실행시켜 실시간으로 동시에 처리되겠끔 보이도록 한다. 스레드의 문제점- Thread1 처리에 대해서 Thread2의 처리 결과를 필요할 시, Thread1의 작업은 그 즉시 실행이 멈추고 Thread2의 실행이 완료될 때 까지 기달린다. 이때.. 2024. 4. 24.
순수함수(Pure Function) 순수함수란?순수함수는 부수효과(side Effects)가 발생하지 않는 함수 부수함수(Side Effects)란?함수가 만들어진 목적과는 다른 효과 또는 부작용으로 함수에 예상할 수 없는 일이 생길 가능성이 존재한다면 이 함수는 부수 효과를 가질 수 있는 함수함수 안팎에서 뭔가 예기치 않은 일이 생길 가능성이 있는 함수는 순수 함수가 될 수 없습니다.불순 함수 예)비동기 요청을 보내는 함수: 요청이 실패할 수 있기 때문에 순수함수가 안됨입력을 포함하는 함수: 입력에 따라 출력이 달라질 가능성이 있기 때문에 안됨매개변수로 들어온 값을 직접 변경하는 함수: 반환값이 달라지기 때문에 안됨 불순 함수(impure funct) 코드// http 요청을 보내는 함수 : 순수함수 될 수 없음const getData .. 2024. 4. 10.
코틀린(Kotlin) 코틀린이란?JetBrain 사(IntelliJ 개발사)가 만든 JVM 언어로, 만들 게 된 계기는 자바의 발전이 느려졌고 유용한 기능이 자바에 없기 때문에 개발 코틀린의 주목적코틀린의 주목적은 현재 자바가 사용되고 있는 몯느 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공합니다. 함수형 프로그래밍함수형 프로그래밍 패러다임은 함수를 기존 다른 값(int, boolean, float, Object 등)과 마찬가지로 다룬다는 생각에서 비롯된 패러다임특징- 함수를 다른 하수의 인수로 넘길 수 있음- 지역적으로 함수를 선언할 수 있습니다.- 변수에 저장할 수 있습니다.- 함수가 함수를 반환할 수 있습니다.=> 부수 효과가 없는 순수함수를 의미하며, 순수함수를 1급 객체로 간주하여 파라미터나 반.. 2024. 4. 7.
스프링 Data JPA 정리 스프링 데이터 JPA 정리프로젝트 환경 설정프로젝트 생성스프링 부트 스타터에서 프로젝트 초기 설정을 합니다. Spring Web, Spring Data JPA, H2 Database, Lombok 의존성을 추가하여 다운 받은 zip 파일을 IDE로 열어서 동작 확인을 합니다.최근 InteliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이어서 실행 속도가 느립니다. Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle 목록에서 Build and run using과 Run tests using을 InteliJ IDEA로 변경합니다.그리고 롬복을 적용하기 위해, Preferences -> plugin -> lombok 검색 실행을 한.. 2024. 4. 7.
AWS 간단 정리 아마존(글로벌 최강 이커머스)의 클라우드 서비스클라우드란내가 직접 컴퓨터를 사서 프로그램을 돌리는 것이 아니라 인터넷을 통해 원격으로 외부 컴퓨터의 프로그램을 돌리는 서비스일반적으로 사용량(시간) 대비 비용을 냅니다.넷플릭스, 삼성, Shopify, 크래프톤, AMD 등 세계 굴지의 스타트업과 대기업들이 AWS의 고객AWS에서 제공하는 서비스백엔드 서비스, 머신러닝 서비스, 고객 관리 서비스등 너무 많습니다.일반적으로 초기 스타트업이 쓰는 서비스는 한정 되어 있습니다.서버용 서비스: EC2, Lambda스토리지 서비스: S3DB 서비스: RDS, DynamoDBAWS 서비스 기본 단위: IaaS, PaaS, SaaSIaaS(Infrastructure as a S.. 2024. 4. 6.
스프링 Data JPA 프로젝트 환경 설정프로젝트 생성스프링 부트 스타터에서 프로젝트 초기 설정을 합니다. Spring Web, Spring Data JPA, H2 Database, Lombok 의존성을 추가하여 다운 받은 zip 파일을 IDE로 열어서 동작 확인을 합니다.최근 InteliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이어서 실행 속도가 느립니다. Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle 목록에서 Build and run using과 Run tests using을 InteliJ IDEA로 변경합니다.그리고 롬복을 적용하기 위해, Preferences -> plugin -> lombok 검색 실행을 한 후, Preference.. 2023. 5. 17.
스프링 부트와 JPA 활용 프로젝트 환경설정프로젝트 생성Spring Web: 기본적인 Web에 필요한 dependency를 가져옵니다Spring Data JPA: 주로 Spring Data와 Hibernate를 이용하여 JPA Data를 처리Thymeleaf: Spring에서 밀고있는 server-side template으로, 해당 형식의 문서를 별도의 수정 작업없이 HTML로 바로 볼 수 있다는 점이 강점Validation: @NotNull, @Min과 같이 도메인에 대한 검증을 하는 Bean Validation의 구현체로써 Hibernate를 사용Lombok: 다양한 annotation library로, 주로 Getter와 Setter를 편리하게 세팅할 때 사용DB 설정spring: datasource:.. 2023. 5. 12.
Spring boot 란 스프링 부트(Spring Boot) 웹 프로그램(웹 애플리케이션)을 쉽고 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크스프링 부트는 스프링(Spring) 프레임워크에 톰캣(Tomcat)이라는 서버를 내장하고 여러 편의 기능들을 추가.톰캣은 클라이언트의 요청을 해석하여 그에 맞는 자바 프로그램을 실행한 후 그 결과를 응답해 주는 웹 애플리케이션 서버 웹 프레임워크란?웹 프레임워크를 사용하면 쿠키나 세션 처리, 로그인/로그아웃 처리, 권한 처리, 데이터베이스 처리 등 웹 프로그램을 완성하기 위해 만들어야 할 기능들을 만들 필요가 없는데, 왜냐하면 웹 프레임워크에는 그런 기능들이 이미 만들어져 있기 때문자바로 만든 웹 프레임워크 중 하나가 바로 스프링 부트스프링 부트의 몇 가지 .. 2023. 5. 11.
Spring 정리 스프링 프레임워크란?자바 엔터프라이즈 개발을 위한 오픈 소스 애플리케이션 프레임워크동적인 웹 사이트를 개발하기 위한 서비스를 제공 스프링 프레임워크의 특징경량 컨테이너자바 객체를 직접 관리각각의 객체 생성, 소멸과 같은 생명주기를 관리하며 스프링으로부터 필요한 객체를 얻음제어의 역전 IOC(Inversion of control)일반적으로 사용자가 코드의 흐름을 주도하며 객체를 구성하고 모든 작업을 제어했다면, IOC는 사용자가 아닌 특별한 객체가 제어 권한을 위임받아 각 객체와 흐름을 제어하는 것.코드 간의 중복을 줄여 무거운 서버 배치의 부담을 줄이며, 유연한 코드 작성과 유지 보수 등을 편하게 할 수 있음DI(Dependency In.. 2023. 5. 10.
병렬처리(Parallel Processing) 병렬처리(Parrelel Processing)란?병렬처리란 여러 개의 작업을 동시에 실행하여서 효율을 높이는 것을 의미.현재 멀티 코어로 인해 성능이 매우 좋아짐병렬처리는 여러 쓰레드를 활용하는 방법이 있고, 여러 개의 프로세스를 활용하는 방법이 있으며 각각 멀티 쓰레드, 멀티 프로세싱이라고 부름.순차 처리 와 병렬 처리순차처리문제가 일련(순차)의 개별 명령어로 나누어져 있음.명령어들은 순차적으로 단일 프로세서에서 실행.어떤 한 순간에는 한 명령어만 실행. 병렬처리문제는 동시에 해결할 수 있는 개별적인 부분 문제로 나누어 짐.각 부분 문제는 일련(순차)의 명령어들로 세분화각 부분 문제의 명령어는 서로 다른 프로세서(코어-쓰레드)에서 동시에 실행된다.동시에 작업하는 과정 항상 제어와 조저의 알고리즘이 필요.. 2023. 4. 6.
GAN개념과 DCGAN 구현 GAN 개념생성적 적대 신경망(GAN)GAN(Generative Adversarial Network)기존 CNN은 가장 높은 probability 혹은 likelihood만 찾아 낼수 있었다.GAN은 여기서 한발 더 나아가, '데이터의 형태' 를 만들어내고자 한다.데이터의 형태라는 것은 분포 혹은 분산을 의미한다.이미지의 형태를 예로 들어보자. 우리는 픽셀들의 분포에 따라 이 모양은 코, 이 모양은 눈이라는 것을 인식한다. (명암이나 사진의 전체적인 채도와는 큰 상관이 없다.) 분포를 만들어낸다는 것은, 단순히 결과값을 도출해내는 함수를 만드는 것을 넘어서 '실제적인 형태' 를 갖춘 데이터를 만들어낸다는 것이다. 적대적 생성지폐 위조범에게 Generator라는 역할을 부여하자. 그리고 경찰은 Discri.. 2022. 7. 12.
개인 서버 채굴 해킹 사례 및 분석 올해 2022년 6월 5일 서버의 GPU가 100% 가동되는 상황 목격했습니다. nvidia-smi 명령어로 어떤 프로세스가 돌아가고 있는 지 확인 해 보왔습니다. 참고 [Linux] GPU 채굴 방지 회사에서 일하다가 GPU를 쓰려고 보니 100%로 사용되고 있어서 글을 쓰게 되었습니다. 처음보는 sshd라는 프로세스가 GPU를 계속 사용하고 있어서 sshd 문제인가 싶어서 sshd 관련된 설정을 잡았는데 tw0226.tistory.com 서버 침해사고 사례: root 계정 SSH 무작위대입공격과 채굴 스크립트 2019년 11월 3일 (일) 부터 딥러닝 서버의 모든 GPU가 100% 가동되는 현상 이 보고되었습니다. 연구실의 동료로부터 유선상으로 전화를 받았는데, 처음에는 train script가 백그.. 2022. 7. 8.
BOAZ 19기 데이터 분석 합격 소감 BOAZ는 제가 전역하면 들어가고 싶은 동아리 였는데, 이번에 운 좋게도 BOAZ 데이터 분석 구분에 합격 됐어요😁!! BOAZ 동아리에 관심이 있었던 이유가 우리나라 최초의 빅데이터 동아리 이고 BOAZ에서 하는 프로젝트 들이 하나 같이 뛰어났기 때문입니다. 19기 BOAZ 인원 모집하는 공고가 뜨고 저는 지원서에 제가 해왔던 공부나 프로젝트를 적고 제출 했습니다. 그리고 서류 합격 발표날 제가 서류에 합격 되었다는 문자가 왔습니다. 기쁨도 잠시 저는 면접에 대한 준비를 했습니다. 면접은 크게 공통 질문 2개(자기소개 및 지원 동기, BOAZ에서 해보고 싶은 프로젝트), 개인 질문(이전에 해본 프로젝트, BOAZ에서 해보고 싶은 프로젝트에 사용된 기술등)2개로 물어 보게 됩니다. 면접은 지원서를 기준으.. 2022. 7. 8.
K 평균 클러스터링 구현 K 평균 클러스터링 주어진 데이터를 k개의 클러스터(군집)로 묶는 알고리즘으로, 각 클러스터의 중심과 데이터들간의 평균 거리를 최소화하는 방식 군집이란 비슷한 특성을 지닌 데이터들을 모아놓은 그룹이다. 군집화는 이러한 데이터를 군집으로 묶는 것. 비지도학습의 일종 K mean Clustering 알고리즘 데이터를 입력받아 이를 소수의 그룹으로 묶는 알고리즘 비지도 학습(label이 없는 데이터) loss_function: K mean Clustering 알고리즘 원리 참조 [머신러닝] K-평균(K-Means) 알고리즘 머신러닝 비지도학습에 속하는 K-means 알고리즘은 K개의 군집(Cluster)로 묶는(Clusting) 알고리즘이다. velog.io K Mean Clustering 구현 import .. 2022. 6. 28.
stanford dogs 분석 및 학습하기 stanford dogs 분석 및 학습하기import numpy as np import osimport cv2import seaborn as snsimport tensorflow as tffrom tensorflow.keras import models, layersimport matplotlib.pyplot as pltfrom tensorflow.keras.preprocessing.image import ImageDataGeneratorfrom tensorflow.keras import regularizersstanford dogs 데이터 셋 다운 Stanford Dogs DatasetOver 20,000 images of 120 dog breedswww.kaggle.com해당 데이터 셋을 다운 받으려면.. 2022. 6. 23.
클래스 활성화의 히트맵 시각화 클래스 활성화의 히트맵 시각화클래스 활성화 맵(CAM)Claa Activation Map해당 기법을 사용하면 이미지의 어느 부분이 컨브넷의 최종 분류 결정에 기여하는지 이해할 수 있다.클래스 활성화 히트맵은 특정 출력 ㅍ클래스에 대해 입력 이미지의 모든 위치를 계산한 2D 그리드로, 클래스에 대해 각 위치가 얼마나 중요한지 알려줌.이미지에 특정 물체가 있는 위치를 파악하는 데 사용. -> Object Detection 응용 가능.Grad-CAM입력이미지가 주어지면 합성곱 층에 있는 특성 맵의 출력 추출하고 그다음 특성 맵의 모든 채널 출력에 대한 클래스의 그래디언트 평균을 곱한다.입력 이미지가 각  채널을 활성화하는 정도에 대한 공간적인 맵을 클래스에 대한 각 채널의 중요도로 가중치를 부여.컨브넷 필터 .. 2022. 6. 23.
컨브넷 필터 시각화 컨브넷 핕터 시각화 입력: 빈이미지 -> 특정 필터의 응답을 최대화 하기 위해 컨브넷 이미지에 경사 상승법 적용 출력 이미지는 선택된 필터가 최대로 응답하는 이미지 from tensorflow import keras from tensorflow.keras import layers, models import tensorflow as tf import numpy as np import matplotlib.pyplot as plt 예시) 컨브넷 경사 상승법 적용 In [2]: f=[[-1, -2, -1], [0, 0, 0], [1, 2, 1], ] In [3]: model = tf.keras.Sequential([ tf.keras.layers.Conv2D(1, 3, activation='relu'), ]) m.. 2022. 6. 23.
파이썬으로 소켓프로그래밍 구현 UDP User Datagram Protocol 데이터그램: 비연결 지향형 SOCK_DGRAM UDP 메소드 recvfrom(int length): byte의 길이 만큼 다른 소켓에서 보낸 값을 받아온다.(하지만 length의 길이 만큼 가져온다는 보장은 없다.) sendto(byte[] packet, clientAddress): 해당 주소를 가진 client에게 byte[]을 보낸다. Client Socket from socket import socket host = "192.168.1.112" # 접속할 호스트 IP port = 12000 # 접속할 프로세스 port clientSocket = socket(AF_INET, SOCK_DGRAM) try: message = input("Input lowe.. 2022. 6. 22.
소켓프로그래밍 소켓 an end-point in the IP networking protocol. 1989년 미국의 UC 버클리 대학에서 C기반으로 처음 계발됨. 네트워크 상에서 돌아가는 두 개의 프로그램 간 양방향 통신의 하나의 엔트 포인트. endpoint: 아이피 주소와 포트 번호의 조합을 가진 소프트웨어 장치. TCP 연결은 2개의 앤드 포인트로 유일하게 식별되어질 수 있음(클라이언트와 서버 간 여러 개의 연결이 맺어질 수 있음) 두 소겟이 연결되면 서로 다른 프로세스끼리 데이터를 전달할 수 있다. TCP/IP 4계층에서 응용계층 바로 아래에 소켓 계층을 만들어서 응용계층 하위단계의 자세한 내용을 모른다 하더라도 소켓을 이용하면 응용계층만 신경쓰고 네트워크 프로그램을 개발 할 수 있음. Client 소켓과 Se.. 2022. 6. 22.
공인IP/사설IP 와 고정IP/유동IP 내부 IP/외부 IP 내부 IP 집 안 또는 회사(하나의 wifi or 허브)에 형성된 네트워크가 내부 네트워크이며, 이 네트워크 안에 있는 기기가 할당받은 ip가 내부 ip이다. 사설ip 내부ip라고 할 수 있다. 사설 ip는 공인 ip처럼 외부에서 해당 네트워크에 접속할 수 없는 내부 네트워크에서만 쓸수 있는 ip이다.(해당 ip에 접속하려는 해당 네트워크에 있어야 된다.) 외부 IP 집 밖(케이블 모뎀 ex) kt홈허브:유무선공유기)에 형성되어 있는 네트워크가 외부 네트워크이며, 이 외부 네트워크로 나갈 수 있도록 통로가 되어 주는 기기의 ip가 외부 ip이다. 외부 ip는 고정ip가 아니라 거의 바뀌지 않는 유동 ip이다. 외부 ip는 ISP(Internet Service Provider ex) .. 2022. 6. 22.
인터넷과 네트워크 주소(IP, PORT, MAC) 인터넷 인터넷(Internet)이란 여러 통신망을 하나로 연결한다는 의미의 ‘인터 네트워크(inter-network)’라는 말에서 시작되었으며, 이제는 전 세계 컴퓨터들을 하나로 연결하는 거대한 컴퓨터 통신망 라우터에 의해 연결된 네트워크 네트워크 통신은 호스트와 호스트간의 통신이 아니라 호스트내의 프로세스와 다른 호스트내의 프로세스간의 통신이다. IP IP(Internet Protocol)은 신뢰성 없는 비연결형(전화같은 연결형이 아닌 이메일처럼 현재 연결상태필요 없는)프로토콜로서 신뢰성을 보장은 하지 않으며, 복구, 추적도 없고 데이터손실이나 뒤섞인 상태전송이 있다는 가정을 하고 주고 받는 통신규정 이러한 IP 신뢰성 및 효율성 문제를 해결하기 위해 protocol를 계발 -> TCP/IP, UDP/.. 2022. 6. 22.