😸신우섭의 도서관 v2Tistory Blog ↗Tistory Blog ↗ (opens in a new tab)Old Github Blog ↗Old Github Blog ↗ (opens in a new tab)
GitHubGitHub (opens in a new tab)DiscordDiscord (opens in a new tab)
  • 👋 Introduction
  • 🧑🏻‍💻 My Profile
    • 📃 2025년 만석거 새빛축제 불꽃놀이 명당 기록

      • 👋 Introduction
      • 👋 Introduction
      • 📃 Usage
      • 👋 Introduction
      • 📃 Usage
      • 👋 Introduction
      • 📃 Usage
      • 👋 Introduction
      • 📃 Usage
      • 👋 Introduction

    • 📃 멀티 바이트와 유니코드
    • 📃 UTF-8 인코딩시 MSB의 역할
    • 📃 컴퓨터에서 용량 단위를 0xFF와같이 16진수 두개로 표시하는 이유
    • 📃 Github 공개 레포 생성시 초기에 해야하는 것들
    • 📃 Base64
    • 📃 URL의 구조
    • 📃 Java Cpp JavaScript Async Object Internal Implementation in Each Language
    • 📃 p2p에서 udp 홀 펀칭(hole punching)
    • 📃 linux service별 기본 log 저장 경로 변경 및 로그 적재 기간 설정
    • 📃 Centos7 에서 tcpdump를 이용하여 특정 포트를 통한 패킷 발신 여부 확인하기
    • 📃 리눅스에서의 장치 이름
    • 📃 리눅스 페이지 캐시
      • 📃 ldd 프로그램의 라이브러리 의존성 확인 명령어
    • 📃 서비스 디스커버리란?
    • 📃 istio에 jwt 검증 proxy 추가하기
    • 📃 istio에서 ssl/tls 통신하기 위한 방법
    • 📃 istio에서 grpc 사용 시 path 기반 jwt 인증 또는 인증 예외 처리 방법
    • 📃 Docker에서 자주 쓰는 명령어 모음
    • 📃 우분투에 도커 설치하는 방법
    • 📃 도커 빌드 캐시가 계속 증가할 때 어떻게 해결하나
    • 📃 minikube 사용한 로컬(온프라미스) 테스트 환경 만들기
    • 📃 도커 이미지를 registry 에서 pull 했을때의 캐시없이 항상 pull 하는 방법 (pull policy)
    • 📃 k8s pod간의 통신시에 사용되는 port
    • 📃 랜처에서 디플로이먼트 로그볼 때 failed to create fsnotify watcher: too many open files 에러가 발생하는 이유
    • 📃 두개 이상의 pod가 하나의 pv를 마운트하는 방법
    • 📃 C++ 컴파일에서 심볼은 무슨 말일까?
    • 📃 C++의 컴파일 과정
    • 📃 C++ 에서 virtual 키워드의 용도
    • 📃 C++ 에서의 순수 가상함수와 추상클래스
    • 📃 함수 포인터
    • 📃 c++ 와 java의 대입연산자 차이
    • 📃 Elasticsearch에서 deep paging
    • 📃 elasticsearch bulk insert를 너무 작게 쪼개면 안된다
    • 📃 Elasticsearch의 기본개념
    • 📃 elasticsearch 에서 slm 을 이용한 snapshot 자동 생성 및 복구 방법
    • 📃 elasticsearch index가 읽기전용이 되었을 때
    • 📃 Elasticsearch too many buckets exception 문제
    • 📃 Elasticsearch의 must(and)와 should(or) 쉽게 이해하기
    • 📃 elasticsearch 에서 사용하는 캐시들을 알아보자
    • 📃 Elasticsearch Solo System to Db and General System Change Db Selection Process
    • 📃 JAVA 메모리 누수 이슈 분석
    • 📃 JDBC, DataSource, Connection, Statement, Savepoint
    • 📃 자바에서 말하는 Servlet 이란?
    • 📃 JAVA 프로젝트에서 의존성 충돌 테스트
    • 📃 Gradle 의존성에서 version을 명시 하지 않았을 경우에 어떻게 되나
    • 📃 java open source 라이브러리 프로젝트를 maven central 에 배포하기 (with gradle)
    • 📃 base64와 base64UrlSafe를 구분해서 사용하자
    • 📃 Gradle build 시 Test 코드 인코딩이 UTF-8로 인코딩 되지 않는 이유(실제 빌드시와 디버깅 시 테스트 결과가 다른 이유)
    • 📃 gradle에서 javadoc생성시 private 제한자에 대한 문서 생성하기
    • 📃 자바의 Predicate
    • 📃 grpc-java 라이브러리를 사용해보자
    • 📃 스네이크 케이스를 카멜 케이스로 Mapping 시키는 방법
    • 📃 java httpClient connection pool 초과로 무한 대기 발생하는 문제
    • 📃 String, StringBuilder, StringBuffer
    • 📃 gradle 에서 BOM(Bill of Materials) 와 의존성 버전명시의 관계
    • 📃 Promise.withResolvers 사용법
    • 📃 AbortCotnroller를 이용한 Promise 즉시 중단
    • 📃 일반 함수의 this, 화살표 함수의 this
    • 📃 RDB Sequence 와 Auto Increment
    • 📃 리눅스에서 MY-SQL DB 덤프 뜨는 방법
    • 📃 nginx 에서 WebSocket Proxy 설정하기
    • 📃 Nginx 를 이용하여 URL Path 기반으로 여러개의 SPA 페이지를 제공하는 방법
    • 📃 SSL과 TLS
    • 📃 SSH(Secure Shell Protocol) 란?
    • 📃 oauth에 대해서 알아보자
    • 📃 CORS 란?
    • 📃 kafka 기본개념 정리
    • 📃 Kafka 컨슈밍이 안될때는 advertised.listeners 설정을 확인하라
    • 📃 리눅스에서 카프카 기본 경로 /tmp 를 그대로 쓰는건 위험하다
    • 📃 젠킨스 빌드 원격으로 유발 사용 시 HTTP ERROR 403 No valid crumb was included in the request 가 발생하는 이유
    • 📃 문자열 리터럴 타입
    • 📃 this type 정의
    • 📃 앰비언트 선언 - declare var
    • 📃 vue project build시에 발생한 BABEL관련 오류 해결해보기
    • 📃 CommonJs vs ES Module
    • 📃 재빌드 없이 외부 config.js 파일로 부터 config 주입 받는 방법
    • 📃 nextjs프로젝트를 도커로 배포하고 nginx로 서비스하는 방법
    • 📃 스테일 클로저(Stale Closure) 문제
    • 📃 nextjs를 output: 'standalone', distDir: 'dist' 로 빌드하여 배포했을 때 resource 들을 못찾는 현상
    • 📃 zustand 상태관리에서 localStorage 사용하는 방법
    • 📃 BroadcastChannel 을 사용하여 브라우저 탭간의 데이터 공유
    • 📃 필요할 때 복붙을 위한 Spring Boot Logback 을 이용하여 log level별 파일 만들기 샘플
    • 📃 jar 내부의 manifest 본문 읽어오기
      • 📃 Flux의 flatMap()과 map()의 차이점
        • 📃 R2DBC-MYSQL 사용 시 The server timezone is unknown ~ 문제 해결 방법
    • 📃 spring security 에서 form말고 json body를 받는 REST API login 구현하기 (1) - Filter
    • 📃 spring security 에서 form말고 json body를 받는 REST API login 구현하기 (2) - SecurityConfig
    • 📃 local에서 문제없던 oauth2 인증이 k8s에 배포된 이후에 인증에 실패하는 현상
    • 📃 Try Using Oauth2 in Spring Security 6x
    • 📃 자바 ORM 표준 JPA 프로그래밍 (1) - JPA 시작하기
    • 📃 자바 ORM 표준 JPA 프로그래밍 (2) - 영속성 관리 내부 동작 방식
    • 📃 자바 ORM 표준 JPA 프로그래밍 (3) - 엔티티 매핑
    • 📃 자바 ORM 표준 JPA 프로그래밍 (4) - 연관관계 매핑 기초
    • 📃 자바 ORM 표준 JPA 프로그래밍 (5) - 다양한 연관관계 매핑
    • 📃 jpa 사용시 계층형 데이터 조회하기
    • 📃 양방향 맵핑의 의존관계 주인에 대해서 알아보자
    • 📃 JPA 고유 제약 조건(Unique Constraint) 지정 방법
    • 📃 protocol buffer의 기본 개념
    • 📃 webRTC 기본 개념
    • 📃 webRTC TURN 서버 사용 시 방화벽 UDP 인바운드도 허용해야할까
    • 📃 내가 이해한 ICE Candidate
    • 📃 화면 공유 서비스로 WebRTC 공부하기 1장 - peer 구현
    • 📃 webRTC 아웃바운드만 열어도 되는 이유
    • 📃 일렉트론의 Main 프로세스, Renderer 프로세스, Preload 스크립트
    • 📃 출근 체크 자동화를 위한 하이웍스 서비스 분석
    • 📃 npm install 시 self signed certificate error 무시하기
Question? Give us feedback → (opens in a new tab)Edit this page
webRTC
webRTC 아웃바운드만 열어도 되는 이유

webRTC 아웃바운드만 열어도 되는 이유

UDP 홀펀칭으로 NAT(+방화벽) 가 응답 패킷으로 인식하게 하여, 자연스럽게 통과 일반적으로 요청 패킷이면 차단될텐대 응답 패킷이라 가능함

picture 0

화면 공유 서비스로 WebRTC 공부하기 1장 - peer 구현일렉트론의 Main 프로세스, Renderer 프로세스, Preload 스크립트

📧 mainmethod0126@gmail.com