2016년 7월 20일 수요일

원도우 netstat 명령어 정리

netstat
  • 네트워크 인터페이스 카드의 네트워크 통계치와 현재의 TCP/IP 네트워크의 연결상황을 나타내는 프로그램
  • 이를 통하여
    • 현재 발생하고 있는 Collision Rate 계산
    • 접속 케이블/인터페이스의 양호 상태
    • Broadcast 율, Discard 율, 네트워크 I/O 트래픽 율
    • 라우팅 데이블 등을 알 수 있음
    • 또한, 현재 접속되어 있는 호스트의 어드레스와 포트 번호를 알 수 있음.
참고 : 브로드캐스트(broadcast)
  • 영역안에 모든 노드에 동일한 신호를 보내는 것
  • 비교
    • 유니캐스트 : 특정 수신자(대부분의 전자우편이 그렇다)에게만 전송
    • 멀티캐스트 : 다중 수신자(전자우편 메일링 리스트 또는 MBone네트웍을 통한 웹전송 등)들에게 전송
    • 애니캐스트 : 라우터들의 그룹에서 가장 가까이 있는 것들에게 전송

Netstat 출력 양식
  • Proto: 연결된 네트워크의 프로토콜 이름
  • Local Address : 연결에 사용되는 로컬 단말의 IP주소와 포트번호 표시 (포트 지정이 안된 경우 * 표시)
  • Foreign Address : 연결된 원격 컴퓨터의 호스트 이름이나 IP 주소 표시
  • State : 연결 TCP 프로토콜의 연결 상태 표시
    • 연결 시 : established
    • 연결 대기 중인 경우 : listening

netstat 옵션 사용예
  • 현재 이더넷 환경에서 해당 단말의 broadcast와 unicast 패킷 비율, 폐기되는 패킷 율, 에러등의 통계치를 알고 싶은 경우
    ::netstat -e
  • 네트워크 연결 상황을 IP주소와 패킷 번호 별로 나타내고자 하는 경우
    ::netstat -a -n  (결과에 이상한 포트번호가 (12345,1245 등) 나타나면 트로이의 목마에 감염된 것임.
  • 해당 단말의 라우팅 형태와 연결 접속 사황을 보고자 하는 경우 (라우팅 테이블을 보여줌)
    ::netstat -r
라우팅 테이블

설명
Network Address
Netmask
Gateway
Interface
Metric
Default
Route
0.0.0.0
0.0.0.0
192.168.1.1
192.168.1.100
20
Loop Back
127.0.0.0
255.0.0.0
127.0.0.1
127.0.0.1
1
Subnet
network
192.168.1.0
255.255.255.0
192.168.1.100
192.168.1.100
20
Lan Card
192.168.1.100
255.255.255.255
127.0.0.1
127.0.0.1
20
Subnet
Boradcast
192.168.1.255
255.255.255.255
192.168.1.100
192.168.1.100
20
Multicast
224.0.0.0
240.0.0.0
192.168.1.100
192.168.1.100
20
Limited
broadcast
255.255.255.255
255.255.255.255
192.168.1.100
192.168.1.100
1

Routing Table 보는 법
  • default route
    • 여러 라우팅 데이블을 확인해서 일치하지 않을 경우, default route의 gateway로 보낸다
    • 일반적으로 라우터의 주소에 해당
  • loopback
    • 127.0.0.1은 software loopback 주소로서, 자기 자신을 가리킨다.
  • subnet network
    • ip 주소의 subnet network 주소를 가르킨다.
    • ip 주소가 192.168.1.100 이고 subnet mask가 255.255.255.0 인 경우 AND 연산을 통해 192.168.1.0이 network 주소가 된다.
  • LAN card : 자신의 IP주소를 의미한다.
  • subnet broadcast : 위의 subnet mask 연산결과 나온 192.168.1.0 의 마지막 주소인 192.168.1.255를 broadcast로 사용.
  • multicast
    • D class의 multicast를 나타내는 행이다.
    • 특정한 그룹에게 메시지를 전달 할 때 사용되는 주소
  • limited broadcast
    • 라우터를 통과하지 못하는 broadcast 주소
    • 같은 subnet 상의 모든 host에 전달

열려진 포트 번호와 프로세스 ID 보기
nestat -ano
>netstat -ano -p TCP

활성 연결

 프로토콜  로컬 주소              외부 주소              상태            PID
 TCP    0.0.0.0:7              0.0.0.0:0              LISTENING       2900
 TCP    0.0.0.0:9              0.0.0.0:0              LISTENING       2900
 TCP    0.0.0.0:13             0.0.0.0:0              LISTENING       2900
 TCP    0.0.0.0:17             0.0.0.0:0              LISTENING       2900
 TCP    0.0.0.0:19             0.0.0.0:0              LISTENING       2900
 TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
 TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       456
 TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       4024
 TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
 TCP    0.0.0.0:554            0.0.0.0:0              LISTENING       4108
 TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       3680
 TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       3680
 TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING       876
 TCP    0.0.0.0:1026           0.0.0.0:0              LISTENING       1100
 TCP    0.0.0.0:1027           0.0.0.0:0              LISTENING       1236
 TCP    0.0.0.0:1039           0.0.0.0:0              LISTENING       1680
 TCP    0.0.0.0:1041           0.0.0.0:0              LISTENING       944
 TCP    0.0.0.0:1045           0.0.0.0:0              LISTENING       1832

PID를 이용하여 프로세스 조사 하기
tasklist /V /FI "PID eq 2900" /FO LIST
>tasklist /V /FI "PID eq 2900" /FO LIST

이미지 이름: TCPSVCS.EXE
PID:         2900
세션 이름:   Services
세션#:       0
메모리 사용: 6,796 K
상태:        Unknown
사용자 이름: NT AUTHORITY\LOCAL SERVICE
CPU 시간:    0:00:00
창 제목:     N/A

2016년 7월 15일 금요일

JDK 1.4 튜토리얼 - 2장 고급 NIO(New Input/Output) : Charset

CHAPTER 2 - 고급 NIO(New Input/Output) : Charset

2.3 Charset을 이용한 인코딩과 디코딩

Charset는 ByteBuffer <-> CharBuffer에 대한 encoding 와 decoding를 제공 한다.
encoding 과 decoding (** 의미가 반대 느껴 질 수 있음)
  • decoding : 바이트들을 캐릭터로 변환하는 것
  • encoding : 캐릭터을 바이트들로 변환하는 것  
모든 Java 버젼에서 사용 가능한 Charset
이름
정의
US-ASCII
7비트 아스키
ISO-8859-1
ISO 라틴 알파벳, latin-1
UTF-8
8비트 UCS 변환 포맷
UTF-16BE
16비트 UCS 변환 포맷(big-endian)
UTF-16LE
16비트 UCS 변환 포맷(little-endian)
UTF-16
16비트 UCS 변환 포맷(바이트 순서 byte-order 마크 옵션에 의해 결정)
EUC-KR
한글 완성형 인코딩


// 시스템에 가용한 Charset 집합 가져오기
Charset.availableCharsets();
// 별명 집합 가져오기
charset.aliases();
// Charset 객체 생성
Charset charset = Charset.forName("EUC-KR");
인코더 와 디코더 이용
  • CharsetEncoder, CharsetDecoder 클래스 사용
    • newEncoder() , newDecoder() 메소도 호출하여 생성
    • encode(), decode() 사용하여 변환 (ByteBuffer <-> CharBuffer)
  • 다른 charset에서 다른 charset으로도 변환 가능 함.
Charset charset = Charset.forName("EUC-KR");
//디코더 생성
CharsetDecoder decoder = charset.newDecoder();
//ByteBuffer -> CharBuffer (디코딩)
CharBuffer charBuffer = decoder.decode(byteBuffer);
//인코더 생성
CharsetEncoder encoder = charset.newEncoder();
//CharBuffer -> ByteBuffer (인코딩)
ByteBuffer byteBuffer = encoder.encode(charBuffer);
출처 : 인포북 JDK 1.4 Tutorial

2016년 7월 14일 목요일

디자인 패턴 - #5 Integration Tier Patterns

#5 Integration Tier Patterns

  • Data Access Object
  • Service Activator


Data Access Object

  • 패턴명 : Data Access Object
  • 적용 문제
    • 일반적으로 Data자원이라고 하면 RDBMS, Flat 파일, 레거시 시스템등과 같은 다양한 자원을 포함
    • 다양한 자원을 접근하기 위한 방법은 벤더마다 다르다 이것을 사용하는 자원 종류에 따라 코드에 영향을 줄 수 있음
  • 해결방안
    • 데이터를 사용하는 코드의 변화에 영향을 덜 받게 하기 위해 데이터 접근 메커니즘을 분리
    • DB 벤더 중립적
  • 적용 결과
    • 쉬운 마이그레션이 가능
    • 비지니스 객체를 접근하는 코드 복잡성 감소
    • 모든 데이터 접근의 일원화

Service Activator

  • 패턴명 : Service Activator
  • 적용 문제
    • EJB 2.0의 비동기 통신 방법으로 MessageDrivenDean이 제공된다. 하지만 Stateful
      세션빈과 EntityBean은 여전히 사용되어질 수 있다.
  • 해결방안
    • 클라이언트의 비동기 통신을 지원
  • 적용 결과
    • 모든 Enterprise beans의 비동기 처리 가능

출처 - OJTKOREA(링크)