목록네트워크 (7)
삶 가운데 남긴 기록 AACII.TISTORY.COM
허브(L1) / UTP 크로스 케이블물리 계층(Layer 1) 장비UTP 크로스 케이블은 LAN카드 사이 1:1로 연결 할 때 사용.한 포트로 신호(프레임)가 오면 다른 모든 포트로 신호를 보내기 때문에 하나의 신호가 전송되는 도중에 다른 단말에서 신호를 보내면 충돌이 일어나고 때문에 동시에 여러 신호가 오면 충돌이 자주 발생하여 느려질 수 있음.허브는 리피터(신호증폭) 기능도 가지고 있어서 UTP 의 한계치인 100m를 연장 할 수 있음. 브리지 / L2스위치데이터링크 계층(Layer 2) 장비콜루젼(충돌) 도메인을 관리하여 맥어드레스 기반으로 목적 포트로만 신호를 전송하여 충돌로 인한 속도 저하가 거의 일어나지 않음.브리지는 소프트웨어적으로 기능이 구현되었으며 포트의 한계가 10 여개 언저리인 반면 ..
windows10 에서는 종종 네트워크에서 내 PC 포함 네트워크 상의 PC들이 검색이 되지 않을 때가 있습니다. 여러 가지 원인이 있을 수 있겠지만 폴더 공유를 켜 놓고, 작업 그룹도 등록하고, 네트워크도 연결되어 있고, 방화벽도 점검하고, 등등.... 많은 세팅들을 뒤적거렸지만 알 수 없었습니다. 결국 문제의 원인을 찾았는데 windows10에서는 아래의 서비스가 수동이어서 검색이 되지 않았던 것입니다. >제어판>관리도구>서비스>Function Discovery Resource Publication 이 서비스를 수동에서 자동으로 바꾸고 서비스를 시작하니 예전처럼 네트워크에 해당 PC가 검색됩니다.
네트워크 장치 이름 확인 centOS 7은 네트워크 장치(랜카드) 이름을 ens32 또는 ens33 으로 인식합니다. ifconfing ens33 nmtui 이 명령어는 Network Manager Text User Interface로 네트워크 작업 대부분을 할 수 있습니다. ip설정, 서브넷 마스크, 게이트웨이, dns 정보 들을 편집 할 수 있습니다. systemctl start/stop/restart/status network nmtui 명령을 통해 편집할 내용을 적용할 때 쓰는 명령어 입니다. ifup 장치이름 여기서 장치이름은 위에서 언급했던 ens32 또는 ens33을 말합니다. 해당 네트워크 장치를 작동시켜주는 명령어 입니다. ifdown 장치이름 ifup과 반대로 해당 네트워크 장치를 끄는..
비동기 채널 비동기 채널은 non-blocking 방식으로 동작하는데 차이점은 스레드 풀에게 작업 처리를 요청하고 즉시 리턴한뒤 콜백 메소드를 호출하여 작업 완료 후 실행되는 코드들은 콜백 메소드에 담아서 처리하는 방식입니다. 비동기 채널 그룹 비동기 채널 그룹은 같은 스레드 풀을 공유하는 비동기 채널들의 모음이라고 할수 있습니다. 하나의 스레드 풀을 사용한다면 모든 비동기 채널은 같은 채널 그룹에 속해야 합니다. 채팅 서버(비동기 채널 방식) import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousChannelGroup; impor..
Non-Blocking 블로킹 방식은 accept()에서 블로킹 되고, read() 메소드도 데이터를 읽을 준비를 위해 블로킹 됩니다. 그래서 연결된 SocketChannel당 하나의 스레드가 할당되어야 합니다. 그래서 연결된 클라이언트 수가 많으면 스레드 풀(ExecutorService)를 사용했었습니다. 그런데 non-blocking 방식에서는 connect(), accept(), read(), write() 메소드에서 블로킹을 하지 않습니다. non-blocking방식에서는 요청이 없거나 데이터를 보내지 않으면 null이나 0을 즉시 리턴하며 버퍼에는 아무 데이터도 저장되지 않습니다. 그래서 Selector를 사용해서 이벤트 리스너 역할을 합니다. Non-blocking 채팅 서버 import ja..
TCP 블로킹 채널 NIO에서는 non-blocking과 blocking 동기와 비동기 모두 제공하고 있습니다. ServerSocketChannel은 클라이언트의 SockeChannel의 연결 요청을 수락하고 SocketChannel을 생성 한 후에 서버와 클라이언트간 통신을 수행합니다. 소켓 채널 연결 및 데이터 전송 서버측 예제 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; p..
NIO java.nio: 다양한 버퍼 클래스들 java.nio.channels: 파일채널, TCP채널, UDP채널 등 java.nio.charset: 문자셋, 인코더, 디코더 java.nio.file: 파일 IO/NIO 차이점 IO는 입출력을 스트림 방식(단방향 입출력)이지만 NIO는 채널 방식(양방향 입출력)입니다. IO는 버퍼가 없으나 NIO는 버퍼를 제공합니다. IO는 비동기방식을 지원하지 않지만 NIO는 비동기 방식을 지원합니다. IO는 블로킹방식이지만 NIO는 블로킹과 논블로킹 모두 지원합니다. NIO는 불특정 다수의 클라이언트 연결을 비동기로 처리할 수 있어서 과도한 스레드 생성을 피할 수 있습니다. 그래서 NIO는 클라이언트 수가 많고 하나의 입출력이 오래 걸리지 않는 작업에 적합합니다. 반..