본문 바로가기

컴퓨터 기초, 개념/TCP IP6

포트상태 대략정리 네트워크 통신시 필요한 정보는 아이피와 포트번호다. 이글에서 다룰건 포트 상태에 따른 접속 가능 여부인데 윈도우, 리눅스에서 커맨드 창으로 확인가능한데 listening, establish, time_wait, sync 상태로 분류할 수 있고 하나의 포트가 두개 이상의 상태를 가질 수 없다. listening 은 포트가 열린 상태로, 클라이언트가 접속 가능한 상태의 포트다. establish 는 연결이 된 포트로, 서버와 클라이언트가 연결된 상태를 의미한다. 이때 서버에서는 포트에서 또 다른 클라이언트를 접속 받을 수 있다. time_wait의 상태는 연결이 종료되고 포트가 닫히기를 기다리는 상태이며 이상태는 설정마다 다르지만 대부분 60초라고 생각하면된다. sync 의 상태는 클라이언트가 서버에 연결요.. 2021. 12. 21.
wireshark capture 안뜸 오류 와이어샤크를 자주사용하지 않고 사용해야할 빈도가 높은 시기에만 사용하는 터라 자주 잊어먹는다. 1. 위와 같이 보통 실행하게 되는데 이때 실행하게되면 2. 위의 화면 처럼 패킷캡쳐가 가능한 부분이 나와야하는데 간혹 나오지 않는 경우가 있다. 3. 바로가기나 실행파일을 shift + 우클릭을 통해 관리자 권한으로 실행이 필요하다. 관리자 권한이 없다면 관리자의 허가를 받아 실행해야한다. 2021. 8. 24.
[Netty/JAVA] 재접속 오류 확인 리스너클래스가 접속시 사용하는 클래스에서 제대로 생성된다면 연결 종료시 정확하게 동작하지만 문제는 클래스 생성이 제대로 돼지 않아서 생기는 문제였다. 무슨말이냐면 연결 시도시 연결 종료시 사용하는 리스너 클래스를 구분하여 connect리스너, closed connect 리스너라는 클래스로 구분하여 사용하고있었는데 설마 자바 클래스 생성이 안되서 생기는 문제겠냐며 일단 이놈들이 제대로 시작하는 시점이 언제고 언제등록됐는지 알아보기위해 생성자를 이용해서 생성자 작동시 바로 로그를 출력하도록 했는데 설마하던 일이 일어났음. 연결 시도시 사용하는 connect 리스너는 항상 잘 작동함. 잘 작동하는 놈은 conenct 리스너는 대체로 항상 작동하는데 (작동이 안되면 바로 티가 나겠지) close 리스너 클래스가.. 2021. 7. 21.
자바 TCP/IP 통신 (Netty, 네티) - 3 송신 항상 늘 그랬듯이 아무것도 모를 미래의 나에게 설명한다. 이전 글에서 사용했던 부트스트랩을 연결할 때 핸들러를 등록할때 사용했던 ChannelInitializer클래스를 이용해 설명할 수 있다. clientBootstrap.group(e) .option(ChannelOption.AUTO_READ, true) .handler(new ChannelInitializer()); ChannelInitializer클래스는 ChannelInitializer 을 상속받았는데 ( import io.netty.channel.ChannelInitializer ) ChannelInitializer안의 initChannel 메소드를 오버라이딩하여 아래와 같이 정의되었다. @Override protected void initCh.. 2021. 5. 21.
자바 TCP/IP 통신 (Netty, 네티) - 2 수신 스스로에게 하는 설명은 여기까지하고 좀 더 자세하게 소스코드를 적자면 이렇게 할 수 있다. Netty에서는 소켓통신을 이용하기 때문에 아이피뿐만이 아니라 접속할 포트번호까지도 필요하다. 웹 주소의 아이피도 자바에서 지원하는 URI 클래스를 이용해서 획득할 수 있고, http인지 https 인지 에 따라서 포트번호도 이미 정의가 되어있으니 80, 443 으로 파악할 수 있다. 클라이언트에서는 Bootstrap clientBootstrap = null; clientBootstrap = new Bootstrap(); EventLoopGroup e = new NioEventLoopGroup(Integer.valueOf(workerThread)); clientBootstrap.group(e) .option(Cha.. 2021. 5. 11.
자바 TCP/IP 통신 (Netty, 네티) 라이브러리로 Netty를 사용함. 자바의 socket 클래스를 이용해서 구현도 가능하지만 회사에서 소켓통신에 대한 부분을 네티를 이용해서 처리하고있어 이부분을 정리해보려고한다. 네티에서는 소켓 통신을 이용하여 클라이언트와 서버와 연결을 유지하고 BootStrap, channel, channelContextHandler 등의 클래스들을 이용하여 통신을 한다. 초기 연결시 BootStrap을 이용하여 서버와 클라이언트간 연결을 시도한다. 다만 이때 네티에서는 클라이언트와 서버는 초기 설정시 BootStrap, 이벤트처리 스레드 설정이 다르다. 서버는 serverBootstrap이라는것을 사용하고 이벤트 처리 스레드도 2개를 생성하여 클라이언트에 대한 연결과 데이터처리용으로 2개를 생성하고 클라이언트는 Boo.. 2021. 5. 11.