Learn business/Network

    Packet Switching을 사용하면 왜 Loss나 Delay가 발생할까?

    컴퓨터가 없는 세상은 상상도 못할 만큼 우리 생활 깊숙히 자리잡고 있습니다. 컴퓨터를 통해 다른 사람과 소통하는건 너무나도 자연스럽고 당연한 일입니다. 이렇게 컴퓨터를 통해 각지의 세계 사람들과 소통하고 수 많은 정보를 습득할 수 있는 것도 바로 네트워크 덕분입니다. 네트워크란 무엇일까요? 네트워크는 net과 work가 합쳐진 말입니다. 하드웨어끼리 마치 그물망 처럼 연결되어 데이터들을 주고 받는 집단 이라고 볼 수 있습니다. Network-Core / Network-Edge / Link 위 그림을 보면 수많은 점들이 연걸되어있습니다. 위 그림을 크게 Network-Core / Network-Edge / Link로 나눠볼 수 있습니다. Network-Core 흔히 말하는 Router들이 존재합니다. (R..

    Java Socket Server/Client (TCP 통신)

    HTTP 스터디 과제로 Client로부터 요청 받은 내용을 그대로 출력하는 Echo Server를 만드는 과제를 진행하였다. 인터넷 검색을 하면 자료가 워낙 많아서 쉽게 찾아할 수 있었지만, 역시나 내 것으로 만드려면 포스팅이 제맛이다. HTTP는 OSI에서 Application 계층에서 동작하는 프로토콜이다. 이미 학부 시절 네트워크 수업에서 배웠겠지만 Client와 Server의 네트워크 통신은 OSI 계층 구조를 가지고 있으며 Client 프로세스와 Server 프로세스의 통신이라고 보면 된다. 데이터를 보내는 경우 상위 계층에서 하위 계층으로 데이터는 멀티플렉싱되며, 데이터를 받는 입장에서는 하위 계층에서 상위 계층으로 디멀티플렉싱된다. java.net.* 패키지에서 제공해주는 인터페이스를 통해서..

    CORS 이슈 해결 :: Spring Security

    프로젝트를 진행하면서 CORS 이슈가 발생하여 포스팅을 하면서 정확히 이해하였다. 그러나 스프링 시큐리티를 쓰는 프로젝트에서 Preflight 방식에 이슈가 생겨서 그 내용을 공유하고자 한다. 이전 포스팅의 방식대로 CORS 정책에 맞게 코딩을 하였다. 그러나 Spring Security를 사용하는 서비스에서 Preflight Request 방식으로 요청을 할 때, OPTIONS 메소드 방식으로 요청을 하면 Spring Security에서 권한이 없다고 AccessDeniedExeption을 발생시키는 이슈였다. 이번 포스팅에서 Spring Security에서 Preflight Request 방식을 어떻게 해결하였는지 공유하고자 한다. 문제의 시작 위 코드를 보면, Filter를 상속 받아서 CORS 정..

    CORS 이슈 해결

    CORS 이슈가 발생한 상황을 예제 코드를 통해서 확인하고 서버 사이드에서 해당 이슈를 어떻게 해결하는지 확인해도록 하자. 이전 포스팅은 CORS에 대한 개념에 대한 전반적인 내용 설명이었다면, 이번엔 예제 코드를 통해서 눈으로 직접 확인해보자. 참고로 웹 브라우저는 Firefox를 사용하였다. 그 이유는 Chrome에서는 기본적으로 Access-Control-Max-Age의 최소 값을 10분(600초)으로 설정해놔서 테스트를 하면서 계속 기다려야했기 때문이다. Chrome에서 Access-Control-Max-Age를 설정한 이유는 이전 포스팅에서도 언급하였지만, Preflight Request는 많은 리소스를 소비하기 때문이다. 예제 테스트는 UI서버와 API서버를 포트를 다르게 로컬에서 띄운 상태에..

    CORS 정책

    어드민의 GNB(Global Navigation Bar) 영역을 개발하면서 script 태그 내에서 Cross-Origin 으로 요청을 보내야하는 상황이 있었는데, 구글링을 통해서 해결책을 찾았지만 원하는 대로 되지 않아서 고생한 적이 있다. 앞으로 같은 상황일 때 삽질하는 시간을 줄일 수 있도록 포스팅을 한다. CORS은 Cross-Origin Resource Sharing 의 약자로 W3C에서 내놓은 정책이다. 의미를 해석을 해보면 Cross-Origin의 Resrouce를 공유하는 정책이라고 볼 수 있을 것 같다. 모질라에 있는 CORS의 정의를 빌려오자면 CORS는 특정 헤더를 통해서 브라우저에게 한 출처(origin) 에서 실행되고 있는 웹 애플리케이션이 다른 출처(cross-origin)에 원..