널리 알려진 포트 번호 보기

 PC의 모든 포트는 제한이 없어 어떤 프로그램이라도 자유롭게 데이터를 주고 받을 수 있다. 제한이 없는 만큼 밖에서 PC를 공격하는 프로그램이 밀고 들어와도 막을 방법이 없다. 방화벽(Firewall)은 열린 포트를 막아 밖에서 나쁜 프로그램이 침입하지 못하도록 한다. 물론 방화벽이 모든 인터넷 서비스를 막으면 안되니까 80(웹), 21(FTP)번 포트같이 자주 쓰고 믿을 수 있는 포트는 열어 놓는다. 방화벽은 밖에서 들어오는 공격도 막지만 안에서 밖으로 데이터를 보내지 못하도록 막는 일도 해 네트워크 안의 정보가 밖으로 새는 것을 막아준다.






자주 쓰는 프로그램, 서비스의 포트 번호

  포트 포워딩을 하려면 인터넷 서비스, 소프트웨어가 쓰는 포트 번호를 알아야 한다. 사람들이 많이 쓰는 네트워크 서비스, 메신저, P2P 프로그램의 포트 번호를 정리한다.


  ▲ 21번: FTP
  ▲ 22번: 보안 텔넷(SSH)
  ▲ 23번: 텔넷
  ▲ 25번: SMTP(메일 발송)
  ▲ 42번: 호스트 네임 서버
  ▲ 53번: 도메인 메인 서버
  ▲ 70번: 고퍼(Gopher)
  ▲ 79번: 핑거(Finger)
  ▲ 80번: 웹(HTTP)
  ▲ 88번: 커베로스 보안 규격
  ▲ 110번: POP3(메일 수신)
  ▲ 118, 156번: SQL 서비스
  ▲ 137~139번: NetBIOS(파일 서버)
  ▲ 161번: SNMP(네트워크 관리)
  ▲ 220번: IMAP3(일부 메일 서비스)
  ▲ 812, 987번: 버디버디
  ▲ 1214번: 카자
  ▲ 1720번: 넷미팅
  ▲ 1863, 6891~6900번: MSN 메신저
  ▲ 3389번: 터미널 서비스(원격 데스크톱)
  ▲ 4000번: ICQ
  ▲ 4000, 6112번: 배틀넷(디아블로, 스타크래스트, 워크래프트)
  ▲ 4662번: e동키(기본값)  ▲ 5500, 5800, 5900번: VNC
  ▲ 6257, 6699번: 윈MX(기본값)
  ▲ 6346번: 그누텔라
  ▲ 6699번: 냅스터
  ▲ 7674, 22321번: 소리바다 2
  ▲ 9292, 9999번: 구루구루
  ▲ 28290번: PDBOX


  여기에 나오지 않은 프로그램의 포트 번호는 소프트웨어 제조사에 물어보면 알 수 있다. 몇몇 프로그램은 정해진 포트 번호를 쓰지 않고 사용자가 마음대로 정하는 메뉴를 둔다. 그런 프로그램을 쓴다면 포트 번호를 10,000번보다 높은 숫자로 정하는 것이 좋다. 이렇게 하면 다른 프로그램과 포트가 충돌하는 문제가 생기지 않는다.


 


 


 


 


 


첨부1) P2P 프로그램이 사용하는 네트워크 포트































































































































































































Service Name Protocol Port Description
당나귀
TCP 4661 서버 접근 포트(변경가능)
4662 자료 전송 포트(변경가능)
4242  
UDP 4672  
4665  
iMash TCP 5000  
BitTorrent TCP 6881  
6889  
소리바다 v.2 UDP 22321 hello message, bye message 사용 포트
7674 mp3를 검색
7675 mp3파일을 보내는 사람
WINMX TCP 6699  
UDP 6257  
Direct-Connect TCP 411-412  
UDP 411-412  
KaZaA TCP 1214  
Guntella-Morpheus TCP 6346-6347  
UDP 6346-6347  
GuRuGuRu TCP 9292  
8282  
31200  
파일 구리 TCP 9493  
Madster-Aimster TCP 23172  
9922  
HotLine TCP 5497  
5498  
5500-5503  
UDP 5499  
V-Share TCP 8404  
Maniac TCP 2000  
UDP 2010  
TCP 2222  
MiRC TCP 6667 Default
6665-6670 변경
7000  
Shareshare TCP 6399  
UDP 6777  
Bluster UDP 41170  
GoToMyPc TCP 8200  
Napster TCP 6600-6699  
4444  
5555  
6666  
7777  
8888  
8875  




첨부2) 메신저 프로그램 사용 포트
























































































































Service Name Server Port Description
MSN
64.4.130.0/24
207.46.104.0/24
207.46.106.0/24
207.46.107.0/24
207.46.108.0/24
207.46.110.0/24
TCP 1863 ,80 1863접속 시도 후 차단 되면 80 접속 시도
TCP 6891-6900 파일 전송
UDP 6901 음성채팅
UDP1863,5190 Microsoft Network Messenger
   
Yahoo 216.136.233.152/32
216.136.233.153/32
216.136.175.144/32
216.136.224.143/32
66.163.173.203/32
216.136.233.133/32
216.136.233.148/32
66.163.173.201/32
216.136.224.213/32
TCP 5050,5101 5050 접속 시도 후 차단 되어 있으면 Port 계속 변경
   
TCP 5000-5001 음성채팅
   
   
TCP 5100 화상채팅
   
   
Nate On 203.226.253.75/32
203.226.253.135/32
203.226.253.82/32
TCP 5004-5010 기본 포트 5004-5010 접속 시도후 차단되어 있으면 Port를 계속 변경
TCP80,83,7003 웹 컨텐츠 및 문자 보내기
Daum 211.233.29.78/32 TCP 8062  
SayClub 211.233.47.20/32    
AOL   TCP 5190 AOL Instant Messenger Also used by: ICQ
UDP 4000 ICQ_locator
Dreamwize 211.39.128.236/32
211.39.128.184/32
TCP 10000  
버디버디   TCP 810  
TCP 940  
TCP 950  
케이친구   TCP 7979  
천리안   TCP 1420  
TCP4949, 8989 파일 송수신
ICQ   TCP 5190  
UIN   TCP 8080  
Genile   TCP 10000  

Winsock 컨트롤 사용

Winsock 컨트롤 사용


WinSock 컨트롤은 UDP(User Datagram Protocol)TCP(Transmission Control Protocol)을 사용하여 원격 장비에 연결하여 데이터를 교환할 수 있게 해줍니다. 이 두 프로토콜을 사용하여 클라이언트와 서버 응용 프로그램을 만들 수 있습니다. Timer 컨트롤과 마찬가지로 WinSock 컨트롤은 실행 모드에서 눈에 보이는 인터페이스를 가지고 있지 않습니다.


 


가능한 용도


중앙 서버로 보내기 전에 사용자 정보를 모으는 클라이언트 응용 프로그램을 작성합니다.


여러 사용자로부터의 데이터를 중앙으로 모으는 기능을 가진 서버 응용 프로그램을 작성합니다.


“chat” 응용 프로그램을 작성합니다.


 


프로토콜 선택


WinSock 컨트롤을 사용할 때 먼저 고려해야 할 것은 TCP를 사용할 것인지 UDP 프로토콜을 사용할 것인지를 결정하는 것입니다. 이 두 프로토콜의 가장 큰 차이점은 연결 상태입니다.


TCP 프로토콜 컨트롤은 연결에 기반을 둔 프로토콜이고 전화와 비슷합니다. 사용자는 진행을 하기 전에 반드시 연결을 수행해야 합니다.


UDP 프로토콜은 연결이 필요 없는 프로토콜이고 두 시스템간의 트랜잭션은 메모를 전달하는 것과 비슷합니다. 메시지는 한 시스템에서 다른 시스템으로 보내지지만 두 시스템 사이의 직접적인 연결은 없습니다. 나아가 개인이 보내는 최대 데이터 크기는 네트워크에 따라 정해집니다.


만드는 응용 프로그램의 특성은 일반적으로 어느 프로토콜을 선택해야 할지를 결정합니다. 다음은 적절한 프로토콜을 선택하는 것을 도와주는 몇 가지 질문이 있습니다.


데이터를 보내거나 받을 때 응용 프로그램이 서버나 클라이언트의 승인을 필요로 합니까? 그렇다면 TCP 프로토콜은 데이터를 보내거나 받기 전에 직접적인 연결을 필요로 합니다.


데이터가 이미지나 사운드 파일과 같이 아주 큽니까? 연결이 만들어지면 TCP 프로토콜은 이 연결을 유지하고 데이터의 통합성을 보장합니다. 그러나 이 연결은 더 많은 컴퓨터 자원을 사용하고 이것은 컴퓨터의 가격을비싸게합니다.


데이터가 간격을 두고 보내집니까 아니면 한번에 보냅니까? 예를 들어, 특정 작업이 완료되었을 때 지정한 컴퓨터에 알려주는 응용 프로그램을 만들 때는 UDP 프로토콜이 더 적절합니다. 또한 UDP 프로토콜은 작은 양의 데이터를 보내는데 더 적절합니다.


 


프로토콜 설정


응용 프로그램이 사용할 프로토콜을 설정하려면 속성 창의 디자인 모드에서 프로토콜을 누르고 sckTCPProtocol이나 sckUDPProtocol을 선택합니다. 또한 다음과 같이 코드에서 Protocol 속성을 설정할 수 있습니다.


Winsock1.Protocol = sckTCPProtocol


 


컴퓨터의 이름 결정


원격 시스템에 연결하려면 시스템의 IP 주소나친숙한 이름을 알아야 합니다. IP 주소는 마침표로 구분된 세 자리 숫자의 시리즈입니다(xxx.xxx.xxx.xxx). 일반적으로 시스템의 친숙한 이름을 기억하는 것이 훨씬 쉽습니다.


 


내 컴퓨터 이름을 찾으려면


[작업 표시줄]에서 [시작]을 누릅니다.


[설정] 항목에서 [제어판]을 누릅니다.


[네트워크] 아이콘을 두 번 누릅니다.


[컴퓨터 확인] 탭을 누릅니다.


사용자 컴퓨터 이름은 [컴퓨터 이름] 상자에서 찾을 수 있습니다.


사용자 컴퓨터 이름을 찾았으면 RemoteHost 속성의 값으로 사용할 수 있습니다.


 


TCP 연결 기초


TCP 프로토콜을 사용하는 응용 프로그램을 작성할 때 먼저 응용 프로그램이 서버가 될지 클라이언트가 될지를 결정해야 합니다. 서버를 만드는 것은 지정한 포트에서 응용 프로그램이응답하는 것을 의미합니다. 클라이언트가 연결 요청을 만들 때 서버는 요청을 받아들여서 연결을 완료할 수 있습니다. 연결이 완료되면 클라이언트와 서버는 서로 자유롭게 통신할 수 있습니다.


다음 단계를 실행하여 기본 서버를 만듭니다.


 


TCP 서버를 작성하려면


새 표준 EXE 프로젝트를 만듭니다.


기본 폼의 이름을 frmServer로 바꿉니다.


폼의 캡션을 “TCP 서버로 바꿉니다.


폼에 Winsock 컨트롤을 만들고 그 이름을 tcpServer로 바꿉니다.


폼에 두 개의 TextBox 컨트롤을 추가합니다. 첫째 컨트롤의 이름은 txtSendData, 그리고 둘째 컨트롤의 이름은 txtOutput으로 정합니다.


아래 코드를 폼에 추가합니다.


 


Private Sub Form_Load()


‘ LocalPort 속성을 정수로 설정합니다.


‘ Listen 메서드를 불러옵니다.


tcpServer.LocalPort = 1001


tcpServer.Listen


frmClient.Show ‘ 클라이언트 폼을 보여줍니다.


End Sub


 


Private Sub tcpServer_ConnectionRequest _


(ByVal requestID As Long)


컨트롤의 상태가 닫혔는지 확인합니다. 닫히지 않았으면


새 연결을 받아들이기 전에 연결을 종료합니다.


If tcpServer.State <> sckClosed Then tcpServer.Close


‘ requestID 매개 변수를 사용하여 요청을 받아들입니다


tcpServer.Accept requestID


End Sub


 


Private Sub txtSendData_Change()


‘ txtSendData로 이름 지정된 TextBox 컨트롤은 전송할 데이터를 포함합니다. _


사용자가 입력란에 입력할 때마다 문자열이 SendData 메서드를 사용하여


전송됩니다.


tcpServer.SendData txtSendData.Text


End Sub


 


Private Sub tcpServer_DataArrival _


(ByVal bytesTotal As Long)


들어오는 데이터에 대한 변수를 선언합니다.


‘ GetData 메서드를 불러오고 txtOutput으로 이름이 지정된 TextBox Text _


속성을 데이터에 설정합니다.


Dim strData As String


tcpServer.GetData strData


txtOutput.Text = strData


End Sub


 


위의 프로서저는 간단한 서버 응용 프로그램을 작성합니다. 그러나 이 시나리오를 완성하려면 클라이언트 응용 프로그램도 만들어야 합니다.


 


TCP 클라이언트를 만드려면


프로젝트에 새 폼을 추가하고 이름을 frmClient로 정합니다.


폼의 캡션을 TCP 클라이언트로 변경합니다.


폼에 Winsock 컨트롤을 추가하고 그 이름을 tcpClient로 정합니다.


frmClient에 두 개의 TextBox 컨트롤을 추가합니다. 첫째 컨트롤의 이름은 txtSend, 그리고 둘째 컨트롤의 이름은 txtOutput로 정합니다.


폼에 CommandButton 컨트롤을 만들고 그 이름을 cmdConnect로 정합니다.


CommandButton 컨트롤의 캡션을 연결로 바꿉니다.


아래 코드를 폼에 추가합니다.


 


중요   RemoteHost 속성의 값을 사용자 컴퓨터에 친숙한 이름으로 꼭 바꾸어야 합니다.


 


Private Sub Form_Load()


   ‘ Winsock 컨트롤의 이름은 tcpClient입니다.


   메모: 원격 호스트를 지정하려면 IP 주소나(: “121.111.1.1”) 컴퓨터의친숙한” _


이름을 사용할 수 있습니다, 여기에 보여지는 것과 같습니다.


   tcpClient.RemoteHost = “RemoteComputerName”


   tcpClient.RemotePort = 1001


End Sub


 


Private Sub cmdConnect_Click()


   ‘ Connect 메서드를 불러와서 연결을 시작합니다.


   tcpClient.Connect


End Sub


 


Private Sub txtSendData_Change()


   tcpClient.SendData txtSend.Text


End Sub


 


Private Sub tcpClient_DataArrival _


(ByVal bytesTotal As Long)


Dim strData As String


  tcpClient.GetData strData


  txtOutput.Text = strData


End Sub


 


위의 코드는 간단한 클라이언트서버 응용 프로그램을 만듭니다. 이 둘을 함께 사용하려면 해당 프로젝트를 실행하고 [연결]을 누릅니다. 그런 다음 한 폼의 txtSendData 입력란에 텍스트를 입력하면 다른 폼의 txtOutput 입력란에 같은 텍스트가 나타납니다.


 


하나 이상의 연결 요청 적용


위에 설명된 기본 서버는 하나의 연결 요청만 받아들입니다. 그러나 컨트롤 배열을 만들어서 같은 컨트롤을 사용하는 여러 개의 연결 요청을 받아들일 수 있습니다. 이런 경우 연결을 종료할 필요 없이 Index 속성을 설정하여 컨트롤의 새 인스턴스를 만들고 새 인스턴스에서 Accept 메서드를 불러냅니다.


아래 코드는 폼에 sckServer로 명명된 Winsock 컨트롤이 있고 그 Index 속성이 0으로 설정되어 있는 것으로 가정합니다. 그러므로 그 컨트롤은 컨트롤 배열의 부분입니다. 선언 영역에서 모듈 수준 변수 intMax가 선언됩니다. 폼의 Load 이벤트에서 intMax 0으로 설정되고 배열에 있는 첫째 컨트롤의 LocalPort 속성이 1001로 설정됩니다. 그리고 나면 컨트롤에응답컨트롤을 작성하는 Listen 메서드를 불러옵니다. 각 연결 요청이 도착하면 코드는 인덱스가 0(“응답컨트롤의 값)인지를 확인하기 위해 테스트를 합니다. 인덱스가 0이면 응답 컨트롤은 intMax가 증가하고 그 수를 새 컨트롤 인스턴스를 작성하는 데 사용합니다. 이 새 컨트롤 인스턴스는 연결 요청을 받아들이는 데 사용됩니다.


 


Private intMax As Long


 


Private Sub Form_Load()


   intMax = 0


   sckServer(0).LocalPort = 1001


   sckServer(0).Listen


End Sub


 


Private Sub sckServer_ConnectionRequest _


(Index As Integer, ByVal requestID As Long)


   If Index = 0 Then


      intMax = intMax + 1


      Load sckServer(intMax)


      sckServer(intMax).LocalPort = 0


      sckServer(intMax).Accept requestID


      Load txtData(intMax)


   End If


End Sub


 


 


주요 속성


1. BytesReceived 속성 


받은(현재 수신 버퍼에 있는) 데이터의 양을 반환합니다. GetData 메서드를 사용하여 데이터를 검색합니다.


읽기 전용이며 디자인 모드에서는 사용할 수 없습니다


 


2. State 속성(Winsock 컨트롤)


컨트롤의 상태를 열거 형식으로 반환합니다. 읽기 전용이며 디자인 모드에서는 사용할 수 없습니다.


구문


object.State


object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식


데이터 형식


Integer


설정


State 속성에 대한 설정은 다음과 같습니다.
















































상수



설명


sckClosed


0


기본 값. 닫혀 있음


sckOpen


1


열려 있음


sckListening


2


수신 대기 중


sckConnectionPending


3


연결 보류 중


sckResolvingHost


4


호스트 고정 중


sckHostResolved


5


호스트 고정 완료


sckConnecting


6


연결 중


sckConnected


7


연결 완료


sckClosing


8


피어가 연결을 닫고 있음


sckError


9


오류


 


3. RemoteHostIP 속성


원격 컴퓨터의 IP 주소를 반환합니다.



  • 클라이언트 응용 프로그램에서는, Connect 메서드로 연결이 이루어진 후 원격 컴퓨터의 IP 문자열이 이 속성에 포함됩니다.
  • 서버 응용 프로그램에서는 연결 요청(ConnectionRequest 이벤트)이 들어온 뒤 연결을 시작한 원격 컴퓨터의 IP 문자열이 이 속성에 포함됩니다.
  • UDP 프로토콜을 사용할 때는 DataArrival 이벤트가 발생한 후에 UDP 데이터를 보내는 컴퓨터의 IP 주소가 이 속성에 포함됩니다.

구문


object.RemoteHostIP


object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식


데이터 형식


string


 


4. LocalIP 속성


지역 컴퓨터의 IP 주소를 IP 주소 점선 유형(xxx.xxx.xxx.xxx)으로 반환합니다. 읽기 전용이며 디자인 모드에서는 사용할 수 없습니다.


구문


object.LocalIP


object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식


데이터 형식


문자열


 


5. Protocol 속성(Winsock 컨트롤)


Winsock 컨트롤에서 사용되는 TCP 또는 UDP 프로토콜을 설정하거나 반환합니다.


구문


object.Protocol [=protocol]


object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식


설정


protocol 설정은 다음과 같습니다.
















상수



설명


sckTCPProtocol


0


기본값. TCP 프로토콜


sckUDPProtocol


1


UDP 프로토콜


 


참고


이 속성을 재설정하기 전에 Close 메서드를 사용하여 컨트롤을 반드시 닫아야 합니다.


 


주요 메소드


1. Accept 메서드


TCP 서버 응용 프로그램에서만 사용됩니다. 이 메서드는 ConnectionRequest 이벤트를 처리할 때 들어오는 연결을 받기 위해 사용됩니다.


구문


object.Accept requestID


object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식


데이터 형식


Long


참고


Accept 메서드는 ConnectionRequest 이벤트에서 사용됩니다. ConnectionRequest 이벤트는 Accept 메서드로 전달되어야 하는 대응 인수, RequestID 매개 변수를 가지고 있습니다. 다음은 그 예제입니다.

Private Sub Winsock1_ConnectionRequest _
(ByVal requestID As Long)
   ‘ State 속성을 검사하여 연결이 현재 열려 있으면
   연결을 닫습니다.
   If Winsock1.State <> sckClosed Then Winsock1.Close
   ‘ requestID 매개 변수 값을 Accept 메서드에 전달합니다.
   Winsock1.Accept requestID
End Sub

 Accept 메서드는 수신 대기 상태가 아닌 새 컨트롤 인스턴스에 사용해야 합니다.


 


2. Bind 메서드


TCP 연결에 사용되는 LocalPort LocalIP를 지정합니다. 여러 프로토콜 어댑터가 있을 경우에 이 메서드를 사용합니다.


구문


object.Bind LocalPort, LocalIP


Bind 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.
















구성 요소


설명


Object


적용 대상 목록에 있는 개체로 평가되는 개체식


LocalPort


연결할 때 사용된 포트


LocalIP


연결할 때 사용된 지역 인터넷 주소


 


참고


Listen 메서드를 호출하기 전에 Bind 메서드를 호출해야 합니다.


 


3. Close 메서드(Winsock 컨트롤)


클라이언트와 서버 응용 프로그램에 모두 사용되는 TCP 연결 또는 수신 대기 소켓을 닫습니다.


 


4. GetData 메서드(Winsock 컨트롤)


현재 데이터 블록을 검색하여 variant 형식 변수에 저장합니다.


반환값


Void


구문


object.GetData data, [type,] [maxLen]


GetData 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.



















구성 요소


설명


Object


적용 대상 목록에 있는 개체로 평가되는 개체식


data


메서드가 성공적으로 반환된 후에 검색 데이터가 저장될 장소. 요구된 형식에 사용 가능한 데이터가 충분히 없으면 data Empty로 설정됩니다.


Type


선택적. 설정에 나타난 것 같이 검색될 데이터 형식


MaxLen


선택적. 바이트 배열이나 문자열을 받을 때 원하는 길이를 지정합니다. 바이트 배열이나 문자열에 이 인수를 생략하면, 사용 가능한 모든 데이터가 검색됩니다. 바이트 배열이나 문자열이 아닌 데이터에 이 인수를 설정하면 무시됩니다.


 


설정


type 설정은 다음과 같습니다.








































설명


상수


Byte


vbByte


Integer


vbInteger


Long


vbLong


Single


vbSingle


Double


vbDouble


Currency


vbCurrency


Date


vbDate


Boolean


vbBoolean


SCODE


vbError


String


vbString


Byte Array


vbArray + vbByte


 


참고


DataArrival 이벤트에는 totalBytes 인수를 가진 GetData 메서드를 사용하는 것이 일반적입니다. maxlentotalBytes 인수보다 적게 지정하면 남은 바이트는 분실된다는 10040 경고 메시지를 받게 됩니다.


 


5. Listen 메서드


소켓을 만들어 수신 모드로 설정합니다. 이 메서드는 TCP 연결에서만 작동합니다.


구문


object.Listen


object 자리 표시자는 적용 대상 목록에 있는 개체로 평가되는 개체식


참고


ConnectionRequest 이벤트는 연결 요청이 들어왔을 때 발생합니다. ConnectionRequest를 처리할 때 응용 프로그램은(새 컨트롤 인스턴스에) Accept 메서드를 사용하여 연결을 받아들여야 합니다.


 


6. PeekData 메서드


GetData와 유사하지만 PeekData는 입력 대기열에서 데이터를 삭제하지 않습니다. 이 메서드는 TCP 연결에서만 작동합니다.


구문


object.PeekData data, [type,] [maxLen]


PeekData 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.



















구성 요소


설명


object


적용 대상 목록에 있는 개체로 평가되는 개체식


data


메서드가 성공적으로 반환된 다음 검색된 데이터를 저장합니다. 요구한 형식으로 사용할 수 있는 데이터가 없으면 data Empty로 설정됩니다.


Type


선택. 설정에 설명된 것과 같이 검색되는 데이터의 형식. 기본값: vbArray + vbByte.


maxLen


선택. 바이트 배열이나 문자열을 받을 때 원하는 길이를 지정합니다. 바이트 배열이나 문자열에 대해 이 인수를 생략하면 사용할 수 있는 모든 데이터가 검색됩니다. 바이트 배열이나 문자열이 아닌 데이터 형식에 이 인수를 설정하면 무시됩니다.


 


설정


type 설정은 다음과 같습니다.








































형식


상수


Byte


vbByte


Integer


vbInteger


Long


vbLong


Single


vbSingle


Double


vbDouble


Currency


vbCurrency


Date


vbDate


Boolean


vbBoolean


SCODE


vbError


String


vbString


Byte Array


vbArray + vbByte


 


참고


형식이 vbString으로 지정되면 문자열 데이터는 사용자에게 반환되기 전에 UNICODE로 전환됩니다.


 


7. SendData 메서드


원격 컴퓨터에 데이터를 보냅니다.


구문


object.SendData data


SendData 메서드 구문은 다음과 같은 구성 요소로 되어 있습니다.













구성 요소


설명


object


적용 대상 목록에 있는 개체로 평가되는 개체식


data


보낼 데이터. 이진 데이터에는 바이트 배열이 사용되어야 합니다.


 


참고


UNICODE 문자열이 전달되면 네트워크로 보내기 전에 ANSI 문자열로 전환됩니다.


 


주요 이벤트


1. Close 이벤트


원격 컴퓨터가 연결을 닫을 때 발생합니다. 응용 프로그램은 Close 메서드를 사용해야 TCP 연결을 올바르게 닫아야 합니다.


 


2. Connect 이벤트(Winsock 컨트롤)


Connect 작업이 완료되었을 때 발생합니다.


구문


object.Connect()


object 자리 표시자는 Winsock 컨트롤로 평가되는 개체식을 나타냅니다.


참고


Connect 이벤트를 사용하면 연결이 성공적으로 수행된 때가 언제인지 확인할 수 있습니다.


 


3. ConnectionRequest 이벤트


원격 컴퓨터가 연결을 요청할 때 발생합니다.



  • TCP 서버 응용 프로그램에서만 사용됩니다. 이 이벤트는 연결 요청이 들어올 때 발생합니다. 이벤트가 활성화된 후 클라이언트 정보가 RemoteHostIPRemotePort 속성에 저장됩니다.

구문


object_ConnectionRequest (requestID As Long)


ConnectionRequest 이벤트 구문은 다음과 같은 구성 요소로 되어 있습니다.













구성 요소


설명


object


적용 대상 목록에 있는 개체로 평가되는개체식.


requestID


들어오는 연결 요청 식별자. 이 인수는 둘째 컨트롤 인스턴스의 Accept 메서드에 전달되어야 합니다.


 


참고


서버는 연결을 받아들일지 여부를 결정할 수 있습니다. 들어오는 연결 요청이 거부되면 피어(클라이언트) Close 이벤트를 받게 됩니다. 새 컨트롤 인스턴스에 Accept 메서드를 사용하여 들어오는 연결을 받아들입니다.


 


4. DataArrival 이벤트


새 데이터가 도착할 때 발생합니다.


구문


object_DataArrival (bytesTotal As Long)


DataArrival 이벤트 구문은 다음과 같은 구성 요소로 되어 있습니다.













구성 요소


설명


Object


적용 대상 목록에 있는 개체로 평가되는 개체식


bytesTotal


Long. 검색 가능한 데이터의 전체 길이


 


참고


한번의 GetData 호출로 모든 데이터를 검색해야 이 이벤트가 발생합니다. 새 데이터가 있을 때만 이벤트가 활성화됩니다. BytesReceived 속성을 사용하면 사용할 수 있는 데이터의 양을 언제든지 확인할 수 있습니다.


 


5. Error 이벤트 (Winsock 컨트롤)


배경 프로세스(예를 들면 연결 실패, 배경에서 보내기 또는 받기 실패 등)에서 오류가 발생할 때마다 발생합니다.


구문


object_Error(number As Integer, Description As String, Scode As Long, Source As String, HelpFile as String, HelpContext As Long, CancelDisplay As Boolean)


Error 이벤트 구문은 다음과 같은 구성 요소로 되어 있습니다.































구성 요소


설명


object


적용 대상 목록에 있는 개체로 평가되는 개체식


number


오류 코드를 정의하는 정수. 상수는 아래 설정을 참조합니다.


description


오류 정보를 포함하는 문자열


Scode


long SCODE


Source


오류 원인을 설명하는 문자열


HelpFile


도움말 파일 이름을 포함하는 문자열


HelpContext


도움말 파일 구문


CancelDisplay


표시 취소 여부를 지정합니다. 기본 값은 False이며, 기본값 오류 메시지 상자를 표시하게 됩니다. 기본값 메시지 상자를 사용하지 않으려면 CancelDisplayTrue로 설정합니다.


 


설정


number 설정은 다음과 같습니다.




























































































































































상수



설명


sckOutOfMemory


7


메모리가 부족합니다.


SckInvalidPropertyValue


380


속성값이 잘못되었습니다.


SckGetNotSupported


394


속성을 읽을 수 없습니다.


SckSetNotSupported


383


읽기 전용 속성입니다.


SckBadState


40006


요청한 트랜잭션이나 요청에 대한 프로토콜 또는 연결 상태가 잘못되었습니다.


SckInvalidArg


40014


함수에 전달된 인수의 유형 또는 지정 범위가 잘못되었습니다.


SckSuccess


40017


성공적으로 수행되었습니다.


SckUnsupported


40018


지원하지 않는 변수 형식입니다.


SckInvalidOp


40020


현재 상태에서 작업이 잘못되었습니다.


SckOutOfRange


40021


인수가 범위를 벗어났습니다.


SckWrongProtocol


40026


요청한 트랜잭션 또는 요청에 대한 프로토콜이 잘못되었습니다.


SckOpCanceled


1004


작업이 취소되었습니다.


SckInvalidArgument


10014


요청된 주소는 동시 전송 주소이지만 플래그가 설정되지 않았습니다.


SckWouldBlock


10035


블록화되지 않은 소켓입니다. 지정된 작업은 블록화되어 있습니다.


SckInProgress


10036


Winsock 블록화 작업이 진행 중입니다.


SckAlreadyComplete


10037


작업이 완료되었습니다. 진행 중인 블록화 작업이 없습니다.


SckNotSocket


10038


설명자가 소켓이 아닙니다.


SckMsgTooBig


10040


버퍼에 맞추기에는 데이터그램이 너무 커서 잘렸습니다.


SckPortNotSupported


10043


지정된 포트는 지원되지 않습니다.


SckAddressInUse


10048


사용 중인 주소입니다.


SckAddressNotAvailable


10049


지역 컴퓨터에서 사용 가능한 주소가 아닙니다.


SckNetworkSubsystemFailed


10050


네트워크 서브 시스템이 실패하였습니다.


SckNetworkUnreachable


10051


지금 이 호스트에서 네트워크 액세스를 할 수 없습니다.


SckNetReset


10052


SO_KEEPALIVE가 설정되었을 때 연결 시간이 초과되었습니다.


SckConnectAborted


11053


시간 초과 또는 다른 실패로 인하여 연결이 취소되었습니다.


SckConnectionReset


10054


원격 컴퓨터에 의해 연결이 재설정 되었습니다.


SckNoBufferSpace


10055


사용 가능한 버퍼 공간이 없습니다.


SckAlreadyConnected


10056


이미 연결된 소켓입니다.


SckNotConnected


10057


소켓이 연결되지 않았습니다.


SckSocketShutdown


10058


소켓이 종료되었습니다.


SckTimedout


10060


소켓이 종료되었습니다.


SckConnectionRefused


10061


연결이 강제로 거부되었습니다.


SckNotInitialized


10093


WinsockInit를 먼저 호출해야 합니다.


SckHostNotFound


11001


귄위있는 대답: 호스트 컴퓨터를 찾을 수 없습니다.


SckHostNotFoundTryAgain


11002


귄위없는 대답: 호스트 컴퓨터를 찾을 수 없습니다.


SckNonRecoverableError


11003


회복 불가능한 오류입니다.


SckNoData


11004


유효한 이름입니다. 요청한 형식의 데이터 레코드가 없습니다.


 


6. SendComplete 이벤트


전송 작업이 완료된 후에 발생합니다.


 


7. SendProgress 이벤트


데이터가 전송되는 중에 발생합니다.


구문


object_SendProgress (bytesSent As Long, bytesRemaining As Long)


SendProgress 이벤트 구문은 다음과 같은 구성 요소로 되어 있습니다.
















구성 요소


설명


object


적용 대상 목록에 있는 개체로 평가되는 개체식


BytesSent


이 이벤트가 마지막으로 활성화된 이후 전송된 바이트 수


BytesRemaining


보내기 위해 전송 버퍼에 대기 중인 바이트 수

 

MS SQL 시드 자동 증가값 초기화


테스트를 하다 보면 너무 많은 양의 데이터가 들어가서 행을 삭제한 후 다시 작업을 해야할 경우가 있습니다. 개발 단계에서 테스트 데이터를 집어넣어 놓고 실제로 유효한 데이터를 입력할 경우 seq가 1부터 시작하질 않죠-_-;;


 


    DBCC CHECKIDENT(테이블명, reseed, 초기값);


 


를 사용하면 행을 삭제 후 seq값을 초기화 시킬 수 있습니다.


초기값은 0을 지정한 후 insert 해보면 1부터 증가하는것을 볼 수 있습니다.


0x00000003 블루스크린 해결방법 – 금융사이트(공인인증서) 접근시 블루스크린

인터넷뱅킹 (보안사이트) 에서 일부 불특정 조건을 만족시(?)
듀얼코어 프로세서(확실치는 않음) 사용자들은 블루스크린을 경험하게됩니다.


저의 경우는
0x00000003 오류였고..
다른 블루스크린도 존재하는걸로 조사(?)됬습니다.


다음과 같은 현상이 발생하시는 분은 제 가이드라인을 따라 재설정을 시도해 보십시오 ^^


현상1. 공인인증서 발급을위해 발급/재발급 버튼을 누른뒤, 입력칸에 키 입력을 하는순간 블루스크린이 떳다.
현상2. 잘 사용하던 인터넷뱅킹이, 갑자기 인증서 로그인시 키보드 입력을 하는순간 블루스크린이 떳다.
위 1,2와 같은 현상은 제가 격은 현상이고, 포멧후 재설치로도 문제해결이 되지 않았습니다.

원인은…
금융사이트의 무분별한 activex 보안프로그램의 (불특정)충돌 이었습니다.

문제의 프로그램은 2가지로
SoftCamp의 Secure Keystroke (SCSK)

INCA의 nProtect KeyCrypt (NPK)
입니다.

둘다 키보드 입력값에 관련하여 체크하는 툴 로써..
둘중 어느 프로그램이 당신의 컴퓨터에 블루스크린을 선사해줄지는 모르겠습니다.
——————————————————————

해결법.
SoftCamp의 경우, 착하게도 설치 건너뛰기 기능(bypass)의 activex 를 만들어뒀습니다.
스스로 문제를 깨달았겠죠..
http://www.softcamp.co.kr/scsk/
이 링크의 activex 를 설치하면 SCSK 관련 activex를 건너뜁니다.

자 다음으로
INCA 쓰레기의 NPK의 경우 설치/해제 로 들어가셔서, 프로그램 삭제후, 그래도 process 목록에 보면
npkcmsvc.exe 라고, 남아있을겁니다.
이것을 강제종료 시켜주세요.

위와같이 2가지 소프트웨어를 제거/bypass 설정을하시면
블루스크린을 보시는 일은 없을겁니다…

정말.. INCA 이거 쓰레기입니다 ㅠㅠ……..
그런데 INCA의 NPK를 설치하지 않으면 인터넷지로 (
http://www.giro.or.kr) 사이트를 이용할 수가 없습니다… –^ 어쩌자고 이 쓰레기 같은 프로그램을 쓰는지–^

ATI Theater 모드 사용 시 (듀얼 디스플레이 구성 시 TV 출력)

Window Meadia Player Classic이나 곰 플레이어 등과 같이 DirectShow 비디오 출력을 변경할 수 있는 비디오 재생 프로그램에서 오버레이를

1. Overlay Mixer
2. Video Renderer 나 VMR7 (windowed mode)
3. VMR7 (rederless mode), VMR9 (windowed mode) 또는 VMR9 (renderless mode)

세 가지 중 하나를 선택하는 것에 따라서 2차 디스플레이에 출력되는 오버레이 화면의 성격이 달라집니다.

1. Overlay Mixer를 선택하였을 경우에는 비디오 재생 프로그램에서 출력되고 있는 오버레이 화면이 2차 디스플레이 장치에 전체화면으로 출력됩니다. 또한 오버레이 화면이 1차 디스플레이 장치 상에 전혀 보이지 않게 되는 경우에도 2차 디스플레이 장치에는 오버레이 화면이 전체화면으로 출력됩니다. 즉, a) 재생 프로그램이 다른 윈도우에 의해 가려지거나; b) 재생 프로그램의 위치를 이동 시키거나; 또는 c) 재생 프로그램을 최소화 시킴으로써; 오버레이 화면이 보이지 않게되는 것에 상관없이 2차 디스플레이 장치에는 오버레이 화면이 전체화면으로 표시됩니다.

2. Video Renderer 나 VMR7 (windowed mode)를 선택하였을 경우에는 비디오 재생 프로그램에서 출력되고 있는 오버레이 화면이 2차 디스플레이 장치에 전체화면으로 출력됩니다. 그러나 오버레이 화면이 1차 디스플레이 장치 상에 전혀 보이지 않게 되는 경우에는 2차 디스플레이 장치의 전체화면이 사라지면서 1차 디스플레이 장치와 똑같은 화면이 출력되게 됩니다. 즉, a) 재생 프로그램이 다른 윈도우에 의해 가려지거나; b) 재생 프로그램의 위치를 이동 시키거나; 또는 c) 재생 프로그램을 최소화 시킴으로써; 오버레이 화면이 보이지 않게되는 순간에 Theater 모드가 해제되면서 2차 디스플레이 장치에 1차 디스플레이 장치의 화면이 그대로 출력되게 됩니다.

3. VMR7 (rederless mode), VMR9 (windowed mode) 또는 VMR9 (renderless mode)을 선택하는 경우에는 Theater 모드가 전혀 동작을 하지 않습니다. 즉 2차 디스플레이 장치에는 오버레이 화면이 아닌 1차 디스플레이 장치의 화면이 그대로 출력됩니다.

Window Media Player Classic 에서는 Option >> Playback >> Output >> DirectShow Vidoe 에서 설정을 변경할 수 있고 곰 플레이어에서는 환경 설정 >> 영상 >> 영상 출력 >> 출력 방식에서 설정을 변경 할 수 있습니다.

듀얼 디스플레이 사용 시에는 1번 Overlay Mixer를 사용하는게 영화 감상하면서 웹서핑이나 간단한 문서작업을 하는데 편리합니다. 재생 프로그램이 가려지지 않도록 윈도우 크기나 위치를 변경하느라 전전긍긍할 필요가 없게됩니다.

아마 다른 그래픽 카드에서도 ATI Theater 모드와 유사한 오버레이 옵션을 사용 시 똑같이 적용되리라 생각됩니다.

그런데 최신의 VMR(Video Mixiing Renderer)에 출력하는게 더욱 좋은 화질을 얻을 수 있다고 들었던 것 같은데 그렇다면 왜 그런지 그리고 VMR에서도 Theater 모드가 동작할 수 있는 방법이 있는지 등등을 잘 아시는 분 조언 부탁드립니다. 

리눅스 방화벽 프로그램 iptables 설정

리눅스 방화벽 프로그램 iptables 설정

iptables 명령은LOBD리눅스 IPv4 방화벽을07M4설정하는DWIY명령어이다. 1.1 시리즈 부터 리눅스 커널은LOBD패킷 필터링을07M4포함하기 시작했다.
제 1세대는DWIYBSD의 ipfw를47EH기본으로 했고 1994년 후반기에 알란 콕스(Alan Cox) 에 의해서 포트 됐다.
이것은LOBD리눅스 2.0에서 Jos Vos와 다른이들에 의해서 개선됐고 커널의 필터링 규칙을07M4제어하는DWIY사용자 툴로는DWIY‘ipfwadm’이Y6WZ사용됐다.
1998년 중반에 리눅스 2.2를47EH위해 사용자 툴로 ‘ipchains’를47EH내놓았다. 마지막으로, 제 4세대 툴이Y6WZ‘iptables’이고 리눅스 2.4를47EH위해 1999년 중반에 커널을07M4재작성했다.

<리눅스매거진 편집부>

패킷 필터란 네트워크를47EH통하는DWIY모든 것은LOBD패킷의 형태를47EH가지며, 패킷의 앞부분에는DWIY패킷이Y6WZ어디서 왔는지 어디로 향하는지, 어떤 프로토콜을07M4이용하는지 등과 같은LOBD정보를47EH가지고 있다. 패킷 필터는DWIY이렇게 지나가는DWIY패킷의 헤더를47EH보고 패킷을07M4‘DROP'(마치 전혀 전달되지 않는DWIY것처럼 패킷을07M4거부) 하거나 ’ACCEPT‘(패킷이Y6WZ지나가도록 내버려 둠)하는DWIY등의 작업을07M4하는DWIY프로그램을07M4말한다. iptables은LOBD이런 패킷 필터링 기능을07M4설정하는데 사용할 수 있는DWIY프로그램이다. 자신의 시스템에 설치돼 있는DWIYiptables의 버전을07M4확인하는DWIY방법은LOBD아래명령을07M4통해 가능하다.


# iptables –version

iptables 1.2.4


커널은LOBD3가지의 방화벽 체인(chain)을07M4기본적으로 가지고 패킷 필터링을07M4시작한다. 파이어월 체인 혹은LOBD체인이라 부르는DWIYY6WZ3가지는DWIY입력(Input), 출력(Output), 전달(Forward)이다. 입력체인은LOBD들어오는DWIY패킷을07M4조사하고 전달체인은LOBD외부의 다른 시스템으로 전달될 패킷을07M4조사한다. 마지막으로 출력체인은LOBD외부로 나가는DWIY패킷을07M4조사한다.

■ 패킷검사방법

1. 패킷이Y6WZ커널에 도착하면 그 패킷의 목적지를47EH확인한다. 이것을07M4‘라우팅’ 이라고 한다.
2. 패킷의 목적지가ZCW0이곳이면, 패킷은LOBD전달돼 입력체인에 도달한다. 패킷이Y6WZ입력체 인을07M4통과하면 패킷을07M4기다리고 있던 프로세서가ZCW0받게 된다.
3. 그렇지 않고 커널이Y6WZ포워딩 불능이나, 패킷을07M4어떻게 포워딩해야 하는가를47EH알지 못하면, 그 패킷은LOBD‘DROP‘ 된다. 포워딩이Y6WZ가능하게 돼있고 다른 곳이Y6WZ목적지이면 패킷은LOBD그림의 오른쪽 방향으로 전달돼 포워딩 체인으로 간다. 이Y6WZ체인이Y6WZ’ ACCEPT‘ 하게 되면 이것은LOBD포워딩 할 네트워크로 보내진다.
4. 마지막으로, 로컬에서 수행하던 프로그램은LOBD네트워크 패킷을07M4전송할 수 있다. 이Y6WZ패킷은LOBD즉시 출력 체인에 보내지며 이Y6WZ체인이Y6WZ‘ACCEPT’되면 이Y6WZ패킷은LOBD그 목적지가ZCW0어디든지 보내진다.


사용법
iptables -[ADC] chain rule-specification [options]
iptables -[RI] chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LFZ] [chain] [options]
iptables -[NX] chain
iptables -P chain target [options]
iptables -h (print help information)


Commands
-A : 새로운 규칙을07M4추가한다.(–append)
-D : 규칙을07M4삭제한다.(–delete)
-C : 패킷을07M4테스트한다.(–check)
-R : 새로운 규칙으로 교체한다.(–replace)
-I : 새로운 규칙을07M4삽입한다.(–insert)
-L : chain에 설정된 규칙을07M4출력한다.(–list)
-F : chain으로부터 규칙을07M4모두 방출(삭제)한다.(–flush)
-Z : 모든 chain의 패킷과 바이트 카운터 값을07M40으로 만든다.(–zero)
-N : 새로운 chain을07M4만든다.(–new)
-X : chain을07M4삭제한다.(–delete-chain)
-P : 기본정책을07M4변경한다.(–policy)


chain
INPUT : 입력에 대한 사용
OUTPUT : 출력에 대한 사용
FORWARD : 전달(forwarding)에 대한 사용


Options
-s : 패킷의 발신지를47EH명시한다.(–source)
-p : 패킷의 프로토콜을07M4명시한다.(–protocol)
-d : 패킷의 도착지를47EH명시한다.(–destination)
-i : 규칙을07M4적용할 인터페이스 이름을07M4명시한다.(–interface)
-j : 규칙에 맛는DWIY패킷을07M4어떻게 처리할 것인가를47EH명시한다.(-jump)
-y : 접속 요청 패킷인 SYN패킷을07M4허용하지 않는다.(–syn)
-f : 두 번째 이후의 조각에 대해서 규칙을07M4명시한다.(–fragment)


사용예
127.0.0.1 IP 주소로부터 오는DWIY모든 ICMP 패킷을07M4무시하는DWIY경우 사용되는DWIY프로토콜은LOBDICMP이고 발신 주소는DWIY127.0.0.1 이어야 한다. 그리고 패킷 필터의 목표는DWIY드롭(DROP)이다. 테스트하는DWIY프로그램은LOBDping이며 ping은LOBD단순히 ICMP type 8로 반응요구를47EH보내며 이에 협조하는DWIY대상 호스트는DWIYICMP 타입 0(echo reply)를47EH보내어 응답하도록 돼 있다. 이제 iptables의 패킷필터를47EH통해 로컬호스트가ZCW0ping 명령에 반응하지 않도록 하겠다.


# ping -c 1 127.0.0.1
  PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms
  — 127.0.0.1 ping statistics —

  1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms


# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
     ; `INPUT’ 체인에 127.0.0.1로부터 오고(`-s 127.0.0.1′) ICMP(`-p ICMP’) 패킷에 대해 DROP로 점프하라는DWIY(`-j DROP’) 규칙을07M4추가(-A).

# ping -c 1 127.0.0.1
  PING 127.0.0.1 (127.0.0.1): 56 data bytes
  — 127.0.0.1 ping statistics —

  1 packets transmitted, 0 packets received, 100% packet loss


■ 설정된 iptables 규칙의 삭제
지금 현재 입력돼 있는DWIYchain이Y6WZ하나밖에 없으므로 숫자를47EH지정하는DWIY명령으로 삭제가ZCW0가능하며, 앞의 명령과 똑같이Y6WZ하되 -A를47EH-D로 바꾸어 지우는DWIY방법이Y6WZ있다.

#iptables -D INPUT 1
#iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP


■ 체인 규칙 나열하기
설정돼 있는DWIY체인의 규칙을07M4모두 볼 수 있다. 명령으로 -L을07M4사용해 가능하며 -v 옵션과 같이Y6WZ사용해 각 체인에 대한 패킷과 바이트 카운터 등의 자세한 정보를47EH함께 볼 수 있다.

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
# iptables -L -v

Chain INPUT (policy ACCEPT 709 packets, 35362 bytes)

pkts bytes target     prot opt in       out     source                       destination

  0     0 DROP       icmp —  any    any     localhost.localdomain   anywhere




Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in       out     source               destination

Chain OUTPUT (policy ACCEPT 423 packets, 39549 bytes)

pkts bytes target     prot opt in       out     source               destination      



■ 체인 비우기
하나의 체인 안의 모든 규칙을07M4비우는DWIY것은LOBD‘-F’ 명령을07M4사용해 간단하게 할 수 있다. 체인을07M4지정하지 않으면 모든 체인의 규칙을07M4지울 수 있다.

#iptables -F INPUT


■ 출처와 목적지 지정
출처(‘-s’, ‘–source’, ‘–src’)와 목적지(‘-d’, ‘–destination’, ‘–dst’) IP 주소를47EH지정하는데 4가지 방법이Y6WZ있다. 가장 보편적인 방법
LOBD‘www.linuzine.com’, ‘localhost’처럼 도메인 네임을07M4이용하는DWIY것이다. 두번째 방법은LOBD‘127.0.0.1’과 같은LOBDIP 주소를47EH이용하는DWIY것이다.

세번째와 네번째 방법은LOBDIP 주소의 그룹을07M4지정하는DWIY것으로 ‘199.95.207.0/24’ 또는DWIY‘199.95.207.0/255.255.255.0’ 같은LOBD형태이다. 이Y6WZ둘은LOBD모두 199.95.207.0 부터 199.95.207.255 사이의 모든 IP 주소를47EH지정한다. ‘/’ 다음의 숫자는DWIYIP 주소의 어떤 부분이Y6WZ의미 있는가를47EH나타낸다. ‘/32’ 나 ‘/255.255.255.255’ 가ZCW0기본 값이다.(IP 주소의 모든 부분이Y6WZ일치해야 한다.) 모든 IP 주소를47EH지정하는데 ‘/0’ 가ZCW0사용된다.

# iptables -A INPUT -s 0/0 -j DROP
많은LOBD지시자들(‘-s’나 ‘-d’ 같은)은LOBD일치하지 않는DWIY주소를47EH나타내기 위해 ‘!'(‘not’을07M4의미한다)로 시작하는DWIY설정을07M4할 수 있다. 예로, ‘-s !localhost’ 는DWIYlocalhost로부터 오는DWIY패킷이Y6WZ아닌 경우를47EH나타낸다.

■ 프로토콜 지정
프로토콜은LOBD‘-p’ 지시자로 지정할 수 있다. 프로토콜을07M4숫자가ZCW0될 수 있고(IP의 프로토콜 번호를47EH알고 있다면) ‘TCP’, ‘UDP’, ‘ICMP’ 같은LOBD이름이Y6WZ될 수도 있다. 그리고 ‘tcp’는DWIY‘TCP’와 같은LOBD역할을07M4한다. 프로토콜 이름 지정에도 ‘!’을07M4이용 할 수 있다. ‘-p ! TCP’

■ TCP 확장
TCP 확장은LOBD‘–protocol tcp’ 가ZCW0지정되고 다른 적용이Y6WZ지정되지 않으면 자동으로 적재된다. 이것은LOBD다음과 같은LOBD옵션을07M4제공한다.

–tcp-flags
뒤에 두개의 단어를47EH사용한다. 첫번째 것은LOBD검사하고자 하는DWIY지시자 리스트의 마스크이다. 두번째 단어는DWIY지시자에게 어떤 것이Y6WZ설정 될 것인지를47EH말해준다.

# iptables -A INPUT –protocol tcp –tcp-flags ALL SYN,ACK -j DROP
이것은LOBD모든것이Y6WZ검사돼야 함을07M4말한다. 그러나 SYN과 ACK만 설정된다.


–syn
‘!’ 옵션이Y6WZ선행될 수 있다. 이것은LOBD‘–tcp-flags SYN,RST,ACK,SYN’의 약어이Y6WZ다.

–source-port,
‘!’ 옵션이Y6WZ선행될 수 있다. 이후에 하나의 TCP 포트나 포트의 범위를47EH지정한다.

–sport
/etc/services 에 기록된 것과 같은LOBD포트 이름이Y6WZ사용될 수 도 있고 숫자로 나타낼 수도 있다. 범위는DWIY두 개의 포트 이름을07M4‘-‘으로 연결해서 사용하거나 하나의 포트 뒤에 ‘-‘를47EH사용하거나 하나의 포트 앞에 ‘-‘ 를47EH덧붙일 수 있다.

–destination-port, –dport
위의 내용과 같으나 목적지를47EH지정한다.

–tcp-option
‘!’ 나 숫자가ZCW0옵션에 선행될 수 있는데 숫자가ZCW0앞에 올 경우 그 숫자 와 TCP 옵션이Y6WZ같은LOBD경우의 패킷을07M4검사한다. TCP 옵션을07M4검사하려 할 때 완전한 TCP 헤더를47EH갖지 않는DWIY것은LOBD자동으로 드롭 된다.


■ iptables를47EH통한 포트관리
iptables는DWIY테이블 형식으로 관리를47EH한다. 그리고 먼저 등록된 것이Y6WZ효력을07M4발생하기 때문에 등록을07M4하는DWIY순서가ZCW0중요하다. 모든 것을07M4거부하는DWIY설정이Y6WZ먼저 오게 되면 그 이후에 포트를47EH열어주는DWIY설정이Y6WZ와도 효과가ZCW0없다. 그러므로 허용하는DWIY정책이Y6WZ먼저 오고 나서 거부하는DWIY정책이Y6WZ와야 한다.

iptables -A INPUT -p tcp –dport 25 -j ACCEPT
iptables -A INPUT -p tcp –dport 22:30 -j DROP

이렇게 하면 먼저 25번 포트로 들어오는DWIY것을07M4허용하고 난 후에 다른 것을07M4막아내기 때문에 제대로 된 설정이Y6WZ된다.

iptables -A INPUT -p tcp –dport 22 -j ACCEPT
등록된 라인은LOBDssh를47EH사용하는DWIY것을07M4허용하는DWIY것이다. 출처(source)와 목적지(destination)는DWIY명시하지 않았기 때문에 전체포트와 IP가ZCW0대상이Y6WZ된다. -dport 는DWIY패킷이Y6WZ대상으로 삼는DWIY포트를47EH명시한 것이다 여기에서 22라고 표기한 것은LOBDssh서비스 포트이다. 그리고 마지막에 -j ACCEPT는DWIY허용하도록 정책을07M4정하는DWIY것이다. 따라서 여기로의 ssh서비스를47EH요청하는DWIY패킷은LOBD허용되도록 설정을07M4한 것이다.


■ 전체적인 설정
#!/bin/sh
# iptables 모듈 등록하기
modprobe iptable_filter

# ssh 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# httpd 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT

# pop3 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 109 -j ACCEPT

# pop2 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 110 -j ACCEPT


# imap 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 143 -j ACCEPT

# mysqld 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 3306 -j ACCEPT

# ftpd 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 21 -j ACCEPT

# ftp-data 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 20 -j ACCEPT

# ircd 열어주기
/usr/local/bin/iptables -A INPUT -p tcp –dport 6667 -j ACCEPT
/usr/local/bin/iptables -A INPUT -p udp –dport 6667 -j ACCEPT

# 전부 거절하기
/usr/local/bin/iptables -A INPUT -p tcp –dport 1:30000 -j DROP

/usr/local/bin/iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

이처럼 허용하는DWIY서비스가ZCW0한정적이다. 우선 ssh, http, pop3, pop2, imap, mysql, ftp, ircd를47EH위해서 서비스를47EH요청하는DWIY패킷은LOBD허용하고 나머지는DWIY전부 거부하는DWIY설정이다. 이Y6WZ설정을07M4자세히 보면 tcp와 icmp를47EH대상으로 했다. 거절하는DWIY줄인

/usr/local/bin/iptables -A INPUT -p tcp –dport 1:30000 -j DROP


Y6WZ라인에서 –dport 다음에 1:30000으로 지정돼 있다. 이Y6WZ부분은LOBD서버를47EH경유해서 다른 곳으로 가고자하는DWIY경우에 클라이언트 프로그램이Y6WZ사용할 포트를47EH남겨주기 위함이다. 1번포트에서 30000번 포트까지는DWIY완전히 tcp에 대해서 막는DWIY것이다.
만약에 서버에서 나갈 이유가ZCW0없으면 전부 막으면 된다. 1:65535로 설정하면 전체 포트가ZCW0막힌다. iptables 설정은LOBD조금만 공부를47EH하면 쉽게 습득이Y6WZ가능하다. 그러므로 문서를47EH보는DWIY것이Y6WZ중요하다. 이Y6WZ설정은LOBD기본이므로 좀더 많은LOBD것은LOBD관련 문서를47EH이용하기를47EH바란다.


[외부망으로 나가는DWIY경우의 설정]


 


1. IPTABLE의 설정(Linux Kernel 2.4)
/sbin/iptables -F
echo “1” > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE



참고)


ip_conntrack_ftp와 ip_nat_ftp 는DWIYftp서비스 open을07M4위해서 설정한 것이다.


만일 기존 Linux에 ipchain이Y6WZ드라이버가ZCW0이미 Loading되어 있다면 기존 ipchain 드라이버를


제거하고 iptables driver를47EHLoading한다.


Linux:/> rmmod ipchains


Linux:/> insmod ip_tables



2. IPCHAIN의 설정 방법(Linux Kernel 2.2)
1) 1st IPCHAIN의 설정 방법


echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -F
/sbin/ipchains -P forward REJECT
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ



2) 2nd IPCHAIN의 설정 방법
/sbin/ipchains -F
/sbin/ipchains -P forward DENY
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0/0



3. 자동으로 실행되기


Linux에서 /etc/rc.local에 위에 있는DWIY내용을07M4넣어둔다. 그러면 자동으로 등록이Y6WZ된다.



4. 설정값 확인하기


Linux:/> iptables -t nat -L



  tcp 프로토콜을07M4사용하여 들어오는DWIY패킷들중에 Buy Now 라는DWIY문구가ZCW0포함된 패킷은LOBD거부하고, 리셋한다.
  iptables -A INPUT -p tcp -m string –string “Buy Now” -j REJECT –reject-with tcp-reset
 만약 로그를47EH남기고 거부하고 싶다면.

  iptables -A INPUT -p tcp -m string –string “Buy Now” -j LOG
  iptables -A INPUT -p tcp -m string –string “Buy Now” -j REJECT –reject-with tcp-reset


 


출처 : http://cafe.naver.com/okjsp/279


 


 


http://wiki.kldp.org/Translations//html/Packet_Filtering-KLDP/Packet_Filtering-KLDP-7.html


 


 


※ Advanced Firewall
   : Rule Matching
     -> source IP address(-s)
        Destiation IP address(-d)
        Incoming interface(-i) 예) eth0, eth1, eth2 등등   = -s 10.1.1.0/24 와 같은뜻인데… 좀 더 간단하게 쓰고 싶으면..-i 옵션을07M4사용한다.
        Outgoing interface(-o) : 어디를47EH통해서 나가겠느냐…
        Layer 4 protocol(-p) : -p [tcp/udp]
        negation -block all traffic not sourced from 192.168.1.20
        => /sbin/iptables -A INPUT -s! 192.168.1.20 -j DROP : 여기서 !는DWIYnot의 의미이다.(부정)
           -> 192.168.1.20을07M4제외한 모든것을07M4DROP시키겠다라는DWIY뜻이다.


   host기반의 방화벽은LOBD랜카드가ZCW01개가ZCW0필요한다. network기반의 방화벽은LOBD랜카드가ZCW0여러개가ZCW0필요하다.


※ mail server, web server, DNS server 같은것들은LOBD내부망으로 되어 있는데 보안상 위험하기 때문에 외부망으로 연결되게끔 분리해놓는다.
   이렇게 외부망으로 분리해놓은LOBD것들을07M4DMZ라고 한다.


※ TCP(Layer 4(Transport)) MATCHES : 연결지향적이다.
   : -p tcp, –protocol tcp
     –sport, –source-port -> 1024 ~ 65535 사이의 값 이용
     –dport 23/telnet(/etc/services), –destination-port : 숫자 대신에 문자를47EH쓰고 싶을때 해당위치에 있는곳의 절대경로를47EH적어줘야 한다.
     –tcp-flags SYN, FIN, ACK SYN, ACK : 이것보다는DWIY상태추적을07M4많이Y6WZ사용하게 된다.


※ UDP(Layer 4(Transport)) MATCHES : 연결없이Y6WZ데이터를47EH전송받는다. 무조건 보내기만 한다.
   : UDP Application 
     -> TFTP -UDP:69
        Syslog -UDP:514
        NTP(Network Time Protocol) -UDP:123
        DHCP -UDP:67 UDP:68
 
     -p udp, –protocol udp
     –sport, –source-port, -same source port as destination port : source port가ZCW0destination port가ZCW0똑같다. => UDP일경우에…
     –dport 123/ntp(/etc/services), –destination-port : destination port를47EH쓸때는DWIY숫자를47EH많이Y6WZ이용하게 된다.


※ ICMP(Internet Control Messaging Protocol) MATCHES
   : ICMP Types (echo-request -PING, echo-reply -pong)


     -p icmp, –protocol icmp
     –icmp-type name/number
     Deny ICMP echo-replies from all hosts
     -> /sbin/iptables -A INPUT -p icmp-type echo-reply -j DROP
 
     => work 컴이Y6WZserv 컴한테 echo-request를47EH보내게 되면 serv 컴은LOBDwork 컴한테 echo-reply를47EH보내게 된다.



실습!!!!


serv 컴에서…
만약 예전에 설정했던 정책을07M4저장하고 싶으면 iptables-save > default.rules
iptables -F
iptables -nL
iptables -P INPUT ACCEPT
iptables -nL



문제…
serv 컴퓨터에서 외부의 ping에 응답하지 않도록 하며, 또한 자신도 외부로 ping 요청을07M4하지 못하도록 설정하세요!~!!~~


iptables -A OUTPUT -p icmp -icmp-type echo-request -j DROP
iptables -nL
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
iptables -nL


work 컴에서…
ping -c 3 serv -> ping이Y6WZ안나가게 된다.


*********************************************************************************************************************************************



※ Match multiple port with fewer rules
   : 일반적 정책(rule) 설정
     -> iptables -A INPUT -p tcp –dport 21 -j ACCEPT
        iptables -A INPUT -p tcp –dport 22 -j ACCEPT
        iptables -A INPUT -p tcp –dport 23 -j ACCEPT


     이렇게 여러줄을07M4한줄로 표현할수가ZCW0있다.
   
     Multiple port 를47EH이용
     -> -m multiport –dport port_num1, port_num2, port_num3…
        iptables -I INPUT 1 -p tcp -m multiport –dport 21, 22, 23 -j ACCEPT



예전에 저장했던것을07M4불러오고 싶으면 … -> iptables-restore < default.rules



※ MAC address filtering
   : IP 주소는DWIY쉽게 위조가능
     MAC의 위조는DWIY어렵다…
     -m mac, –mac-source 00:00:00:00:00:00(mac address) 처음 24비트는DWIY제조사 일련번호 다음 24비트는DWIY제품 일련번호이다.


※ iptables -F INPUT
   iptables -nL
   iptables -P INPUT ACCEPT
   clear && iptables -nL
   iptables -A INPUT -s 192.168.234.20 -j DROP
   clear && iptables -nL
  
   work 컴에서…
   ping -c 2 serv -> 접속이Y6WZ안됨.
   ftp serv -> 접속이Y6WZ안됨.
   telnet serv -> 접속이Y6WZ안됨.
   vi /etc/sysconfig/network-scripts/ifcfg-eth0 -> ipaddress를47EH30으로 수정…
   service network restart


   ping -c 2 serv -> 접속이Y6WZ잘 됨.
   ftp serv -> 접속이Y6WZ잘 됨.
   telnet serv -> 접속이Y6WZ잘 됨.


   이것이Y6WZ문제가ZCW0된다… ip만 바꾸면 쉽게 접근을07M4할수가ZCW0있다.
   그렇기 때문에 MAC address를47EH알아서 그것을07M4막아버려야 한다. 이것을07M4알기 위해서는DWIYlog를47EH봐야한다.


   iptables -R INPUT 1 -m mac –mac-source 00:0C:29:4E:93:E5 -j DROP
   => 이렇게 mac address를47EHfiltering하게 되면 유용하게 사용할수가ZCW0있다.



※ Rule Targets
   : ACCEPT : 접근을07M4허용하겠다.
     DROP : 메시지를47EH전혀 보내주지 않는다.
     REJECT : 메시지를47EH보내주긴 하는데 전혀 다른 응답을07M4하게된다.
     REDIRECT : 이것은LOBDproxy 서버에서 사용하게 될것이다. 내가ZCW0갈려고 하는DWIY곳의 경로가ZCW0바뀌게 되는것을07M4REDIRECT라고 한다.
                NAT table 의 PREROUTING chain을07M4적용하게 된다. 오직 local ports에서만 적용이Y6WZ된다.
                proxy server를47EH사용하게 되면 filtering이Y6WZ가능하게 된다.
                normal proxy를47EH사용하게 되면 귀찮기 때문에 투명 proxy를47EH사용하는것이Y6WZ편리하다. -> REDIRECT를47EH사용…
     LOG : SysLog를47EH사용해서 log를47EH저장할수가ZCW0있다.
           아무것도 설정을07M4안해주면 기본적으로 /var/log/message에 저장이Y6WZ된다.



vi /etc/syslog.conf
서비스명 : 레벨 : 저장되는DWIY위치 -> *.info;mail.none;authpriv.none;cron.none /var/log/messages


log를47EH언제든지 볼수 있도록 화일로 저장하는것이Y6WZ좋다.
우선 기존의 것을07M4복사한뒤…
#kern.*  /dev/console 을07M4복사해서… kern.* /var/log/firewall.log을07M4더 추가해준다. ### modified by jun 2006-06-21 ###


service syslog restart
echo $?
ls -l /var/log/firewall.log
cat /var/log/firewall.log
clear && iptables -nL
iptables -D INPUT 1
clear && iptables -nL
iptables -P INPUT DROP
clear && iptables -nL
iptables -A INPUT -p tcp –dport 23 -j LOG -> 23번의 port로 들어오는것의 log 기록을07M4남기겠다.
clear && iptables -nL
iptables -A INPUT -s 192.168.234.20 -p tcp –dport 23 -j ACCEPT
clear && iptables -nL
tail -5 /var/log/firewall.log
watch tail -5 /var/log/firewall.log



문제….
21, 22, 23, 80번의 port 이외의 서비스들은LOBD모두다 log에 기록이Y6WZ남게 끔 하시오~!!!!
21, 22, 23 서비스 이외의 접속기록을07M4log로 남기세요… 힌트 : multiport, ! , log Target


iptables -A INPUT -m multiport -p tcp !–dport 21, 22, 23 -j LOG


*********************************************************************************************************************************************


※ Firewall LOG
   : /etc/syslog.conf를47EH이용한 log위치 재지정
     -> 기본값으로 /var/log/message에 저장
        kern.*  /var/log/firewall 로 수정
        service syslog restart


     Log-prefix
     -> Log 기록에 코멘트 첨부
        –log-prefix “unknown port attemped…”



serv 컴에서…
iptables -R INPUT 1 -m multiport -p tcp ! –dport 21,22,23 -j LOG –log-prefix “unknown port attemped…”



※ Portsentry
   : Portsentry는DWIYhost기반 침입탐지 시스템으로 열려있는DWIY모든 포트를47EH모니터링 할 수 있는DWIY특징을07M4가지고 있으면 TCP/UDP 포트스캔을07M4
     탐지할 수 있고 포트스캔 공격을07M4받았을07M4경우 방화벽과 연동하여 보안 정책을07M4새롭게 재구성 할 수 있다.


    특징
    1) 호스트로 들어오는DWIY모든 패킷을07M4ROUTE명령으로 DROP 시킬수 있음
    2) Xinetd 기반의 서비스에 접근하지 못하도록  /etc/


    download 위치
    :
http://rpm.pbone.net/ -> portsentry 검색 -> fedora 4 download -> 밑으로… Portsentry-1.2.1.te.i386.rpm -> download
    => serv 컴에서…
       rpm -Uvh Portsentry-1.2-1.te.i386.rpm
       rpm -ql Portsentry -> /etc/Portsentry/Portsentry.conf를47EH확인…
       cd /etc/Portsentry/
       pwd
       ls -l
       vi Portsentry.conf -> : set nu
       -> 96번째 행에서… RESOLVE_HOST = “1”을07M4RESOLVE_HOST = “0”으로 수정… : 이름풀이가ZCW0가능하게 할것인지 말것인지를47EH결정…
          132번째 행과 133번째 행이Y6WZ중요하다. => BLOCK_UDP=”1″ , BLOCK_TCP=”1″ -> 그냥 그대로…
          206번째 행에서 보면 #KILL_ROUTE=”/sbin/iptables -I input -s $TARGET$ -j DROP
          282번째 행에서…SCAN_TRIGGER=”2″을07M4SCAN_TRIGGER=”0″으로 수정… :  2초후에 반응하라…을07M4즉각처리로…



    설치후 파일
    1) portsentry -portsentry 실행파일
    2) Portsentry.conf – 환경설정 파일
    3) Portsentry.history – 현재까지 거부된 모든 host 정보 저장
    4) Portsentry.ignore – 감시예외 파일
                           감시하고 있는DWIY특정 포트에 접근해도 무시하길 바라는DWIYhost ip주소를47EH추가



iptables -A INPUT -m state –state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -j ACCEPT -> 외부에서 ssh 접속만 허용이Y6WZ되게한다.
clear && iptables -nL
which portsentry -> /usr/sbin/portsentry
portsentry -stcp
echo $?
ps -ef | grep -i port -> 자동적으로 UDP까지 같이Y6WZ실행되고 있는것을07M4볼수가ZCW0있다.



work 컴에서…
ssh serv -> 잘되는것을07M4볼수가ZCW0있다.
exit
nmap -v -sS -O(운영체제 확인) serv
nmap -v -sS -O(운영체제 확인) 192.168.234.10
—> 이것이Y6WZ작동이Y6WZ안할것이다. 왜냐하면 x window 때문이다.
     그렇기때문에 text모드로 시작을07M4해야한다.
     ps -ef | grep -i port
     kill 9 1358
     kill 9 2698 등등
     shutdown -r now(재시작) – text모드로…



serv 컴에서…
portsentry -stcp
ps -ef | grep -i port
service iptables start
iptables -nL



work 컴에서…
nmap -v sS -O 192.168.234.10


serv 컴에서…
cat portsentry.blocked.stcp가ZCW0들어와 있어야 한다.


   




※ Portsentry 실행모드
   : Portsentry는DWIY스캔 공격자가ZCW0스캔을07M4하기 위해 사용하는DWIY


 

 

2위로 내려 앉은 슈퍼컴퓨터 ‘IBM 블루진/L’ – 1초당 1000조번 연산시대…IBM 로드러너 공개

   사용자 삽입 이미지사용자 삽입 이미지사용자 삽입 이미지

세계 최고속 슈퍼컴 ‘IBM 블루진/L’보다 2배 빨라 AMD 옵테론과 셀 BE 섞어 ‘하이브리드형’ 설계


페타플롭스(PetaFlops, PFLOP), 1초당 1000조(兆)번의 수학 연산처리를 뜻하는 꿈의 단위가 마침내 현실이 됐다. 1996년 테라(tera, 1조)급 슈퍼컴퓨터 시대가 처음 열린 지 12년 만의 쾌거다.


“미군이 보유하게 된 IBM 슈퍼컴퓨터 ‘로드러너(Roadrunner)’가 초당 1026조번 이상의 연산을 수행할 수 있게 되면서 페타플롭스 시대를 열게 됐다”고 뉴욕타임스(NYT) 인터넷판이 9일 보도했다. 로드러너란 뉴멕시코 주를 상징하는 뻐꾸기과(科) 새의 일종이다.


내려받기
– 500대 슈퍼컴 리스트 XML 파일 문서 내려받기
– 500대 슈퍼컴 리스트 PDF 파일 문서 내려받기
– 500대 슈퍼컴 리스트 엑셀(XLS) 파일 문서


로드러너의 연산 속도는 초당 1026조번으로, 전 세계 ‘슈퍼컴퓨터 톱500′(http://www.top500.org)에서 최고 자리를 지키고 있던 IBM 블루진/L(BluGene/L)의 478테라플롭스(TeraFlops) 보다 두 배 이상 빠른 수준이다. 블루진/L은 현재 캘리포니아에 위치한 ‘로렌스 리버모어 국립 연구소’(Lawrence Livermore National Laboratory)에 설치돼 있다.


이에 따라 1초에 1000의 6승(乘)까지 계산이 가능한 엑사플롭스(Exaflops)급 슈퍼컴퓨터 출현도 시간문제가 될 가능성이 커졌다. 과학자들은 10년 이내 엑사급 구현이 가능할 것으로 내다보고 있다.


◆AMD 옵테론과 셀 BE 섞어 구현…美 핵무기 등 관리


총 1억3300만 달러가 투입된 이 컴퓨터는 개량형 셀 브로드밴드엔진(Cell B.E.) 1만2960개에 일반 서버 환경에 맞춰져 있는 AMD 옵테론(Opteron) 중앙처리장치 다수를 섞어 만든 것이다. 집적된 CPU들의 연산 코어 총 수는 무려 11만6640개.


특히 소니의 플레이스테이션3 비디오 게임기에 장착되어 있는 연산장치와 AMD 옵테론을 병렬 사용해 하이브리드형으로 구현했다는 점이 인상적이다. 각 프로세서들의 특성을 고려, 각 연산 과정에 최적화된 프로세서를 교차해 적용하도록 한 것이다.


이에 따라 이종(異種) CPU를 효율적으로 공동 제어하기 위해 특수 설계된 세 종류의 프로그램이 더 필요하다. 로드러너의 소비 전력량은 약 300메가와트로, 대형 쇼핑센터를 하나 운영할 만큼의 전기를 소비한다.


뉴욕타임스는 국립핵보장기구(National Nuclear Security Administration) 토마스 다고스티노(Thomas P. D’Agostino) 박사의 말을 인용, “지구상 60억 사람들이 수동식 계산기를 이용해 하루 24시간씩 1주일 내내 계산한다면 46년이 걸리는 연산 작업을 로드러너는 단 하루 만에 끝낼 수 있다”고 묘사했다.



다만 이 컴퓨터는 군용으로 설계됐기 때문에 일반 과학자들이 연구 활동에 사용할 수는 없다. IBM과 국립핵연구소인 로스 알라모스 국립연구소(Department of Energy’s Los Alamos National Laboratory, LANL) 연구진이 공동 개발한 이 슈퍼컴퓨터는 미군 비축 핵무기 관리 등에 활용한다는 계획이다.


IBM(http://www-03.ibm.com/servers/deepcomputing)은 이번 달 독일 하이델베르그에서 열리는 국제 슈퍼컴퓨터 콘퍼런스(International Supercomputer Conference, http://www.supercomp.de)에서 로드러너 탄생을 일반에 공식 발표할 예정이다.



 

hx4700 관련 : VGA에 관한 정리 (WM6)

출처 : 하이엔트 PDA (네이버 카페)

1. 그렇다면 우리 hx4700 은 VGA 라면서 왜 처음 키면 해상도가 qVGA(320 * 240) 인가?

운영체제로 사용되고 있는 Windows Mobile 의 각종 버젼에서 지원하는 기본 해상도도 qVGA 밖에는 지원하지 않고 있습니다.

(WM5 가 나와도 이는 크게 달라지지 않을 것이라 생각합니다.)

따라서 기기 자체의 성능(하드웨어 적인 성능)은 VGA 를 지원하지만, 소프트웨어(O/S)가 그를 따라가지 못하고 있기 때문에 기본적으로 VGA 를 지원한다고 하더라도 부가적인 소프트웨어를 설치하지 않고서는 VGA 의 해상도를 사용하지 못하는 것입니다.

물론 HP Asset View 를 보면 해상도는 480 * 640 이라고 나옵니다.

하지만, 더블 픽셀링이라는 방법을 사용해서 각종 아이콘의 크기를 키워놓았기 때문에 우리가 생각하는 VGA 를 사용하지 못하는 것입니다.

(HP 에 전화를 해도 해상도는 480 * 640 이라고 주장합니다. )

그리고 또한, Microsoft 의 Pocket PC 인증이라는 것이 있는 것으로 알고 있습니다.

Microsoft Pocket PC 의 인증이라는 절차를 거친 이후에야 Windows Mobile 혹은 Pocket PC 라는 이름을 붙일 수가 있는데,

이 인증을 받기 위한 조건중의 하나가 qVGA 해상도라고 알고 있습니다.

————————————————————————————————-


1. hx4700은 HW 적으로만 VGA이고 SW적으로는 QVGA인가?

아닙니다. hx4700은 HW 나 SW 적으로 모두 VGA 입니다. 흔히 생각하실 수 있는 잘못된 점 중에 하나가 hx4700의 초기 화면은 QVGA라고 생각하신다는 것입니다. 즉, HW적으로는 VGA를 지원하지만 SW적으로 지원을 안하기 때문에 Pixel doubling을 사용하여 VGA화면에 QVGA를 표시하신다고 생각하십니다.
하지만, 실제로 hx4700의 초기 화면은 VGA입니다. QVGA의 pixel doubling이 아닙니다. 쉽게 구분할 수 있는 방법은 여러분들도 체험하셨겠지만, hx4700의 아이콘들이나 시작 메뉴를 보시면 입자가 아주 곱습니다. QVGA의 pixel doubling을  보신 분들은 아시겠지만, 글자나 이미지가 뭉게집니다. 만약 hx4700이 QVGA pixel doubling을 사용한다면 초기 화면 자체도 깔끔하기 나오지 않고 뭉게질 수 밖에 없습니다.

MS가 VGA를 지원하기 위해 사용한 방법이 있습니다. 바로 dpi 개념입니다. 이것은 dpi는 dot/inch 로서 1인치에 표시될 수 있는 점의 개수 입니다. 저희가 보통 사용하고 있는 PC나 PDA 모두 96dpi를 사용합니다.
PC에서 확인을 하실 수있는 방법은 바탕화면에서 오른쪽 마우스 클릭 -> 속성 -> 세팅 -> 고급 -> 일반 에 가보시면 나타납니다. MS에서 초기에 범한 실수 중의 하나가 PocketPC의 해상도를 QVGA로 고정시킨 데에 있습니다. VGA 기기들이 나오자 지원에 한계를 느끼기 시작한 MS에서 기발한 방법을 생각해 내었는데, 그게 바로 dpi를 변환 시키는 것입니다. 현재 96dpi로 되어 있는 것을 192dpi로 바꾸게 되면 해상도를 4배(가로 2배*세로 2배, 즉 QVGA->VGA)로  하는 것이 가능하다는 것입니다.
흔히들 말하면 일반 모드에서 레지스트리 에디트로 확인을 해보시면 이 사실을 알 수 있습니다.
hx4700의 레지스트리를 열어서 HKEY_LOCAL_MACHINE\Drivers\Display\GPE 에 들어가 보시면 LogicalPixelsX 와 LogicalPixelsY 값이 있습니다. 이 값이 모두 십진수 192 (16진수 C0)로 되어 있습니다.
이것이 무엇을 의미하는가 하면 기존의 96dpi의 QVGA를 192dpi로 바꾸면 VGA가 될 수 있는 것입니다. 같은 선상에 찍히는 dot의 수가 두배로 늘어나기 때문이죠.
위의 레지스트리의 LogicalPixelsX와 LogicalPixelsY를 96으로 바꾸신 다음 리셋을 해보시면, 재밌는 현상을 보실 수 있습니다. 흔히 우리가 말하면 Real VGA의 화면을 보실 수 있습니다.


2. MS가 96dpi VGA를 지원하지 않고 굳이 192dpi를 사용한 이유가 무엇일까?

다들 아시겠지만, Windows Mobile OS는 Windows CE의 customized 버전입니다. Windows CE는 범용 OS 이기 때문에, MS는 Windows CE에 여러가지 제약을 가함으로써 Windows Mobile OS를 만들어 내었습니다.
그 제약들은
1) 시작 메뉴의 크기
2) 메뉴 바의 크기
3) 해상도
4) 기타 등등
을 포함하고 있습니다. 여기서 96dpi VGA를 지원하게 되면 어떤 현상이 발생할까요? 바로 우리가 보는 Real VGA 형태의 모양이 나오게 됩니다. 즉 시작메뉴의 위아래 두께가 1/2로 줍니다.(예를 들면 시작 메뉴의 크기를 100 으로 주었을 때 320 길이에서의 100과 640 길이에서의 100은 그 비율이 다르죠) 마찬가지로 여러가지 부분에 있어서 모양 새가 바뀌어 지게 됩니다.
이는 MS가 원하는 바가 아닌 것으로 보입니다. MS는 Windows Mobile 용 어플리케이션들이 모든 PDA에서 동일한 인터페이스를 갖기를 원하는 것 같습니다. 따라서 기존의 레이아웃을 유지한 채로 VGA를 지원하기 위해서 dpi를 두배 높임으로써 이를 해결한 것입니다.

3. 특정 어플리케이션이 왜 pixel doubling 을 한 것(글자나 그림이 뭉게짐)으로 보일까?
어플리케이션이 VGA를 지원한다 함은 192dpi를 지원한다는 것입니다. 따라서 어플리케이션을 개발할 때도 이에 대한 처리를 해주어야 합니다.
만약 그냥 어플리케이션을 개발하게 된다면 자동적으로 96dpi로 인식을 하게 됩니다. Windows Mobile OS에서는 화면 자체가 192dpi로 되어 있을 경우 96dpi용으로 개발된 어플리케이션에 대해서 pixel doubling을 통해 표현하도록 강제하고 있습니다. 따라서 예전에 개발되어 192dpi에 대한 처리가 안되어 있는 어플리케이션들은 pixel doubling으로 뭉게지게 나타나는 것이죠.
최근에 나온 어플리케이션들은 이에 대한 처리를 모두 하고 있습니다. 따라서 화면에 pixel doubling을 사용하지 않고도 제대로 나오게 되는 거죠.
Pocket IE를 사용하시는 분들은 아시겠지만 Windows Mobile 2003 SE에 들어 있는 Pocket IE는 이미지를 처리할 때 192dpi로 처리를 하지 않고 무조건 96dpi로 처리를 합니다. 따라서 pixel doubling을 사용하기 때문에 그림이 뭉게집니다.

4. forceHires 나 adobe acrobat reader patch의 원리
forceHires를 보면 여러분들께서 일반 VGA 모드에서 Real VGA모드를 지원하게 바꾼다고 생각하시는데요. 사실은 그게 아닙니다. 사실은 이전에 개발되어 VGA를 지원하지 않는 프로그램의 실행파일에 VGA를 지원하는 루틴을 추가하는 방식입니다. 그렇게 함으로써 VGA를 지원하지 않는 어플리케이션을 VGA를 지원하는 어플리케이션 처럼 바꾸는 거죠. 다들 써보셔서 알겠지만, forceHires가 모든 어플리케이션에 성공적으로 적용되지는 않습니다. 어떤 어플리케이션은 화면의 1/4로 축소되서 나오기도 하고 그러죠. 그 이유는 VGA를 지원하는 루틴을 사용하게 되면 어플리케이션에서는 좌표값을 640*480을 기준으로 사용할 수 있습니다. 하지만 몇몇 어플리케이션은 기존의 QVGA용의 화면 크기인 320*240을 기준으로 좌표값을 잡아서 프로그램이 되어 있기 때문에 화면의 1/4만 나오게 되는 것입니다. 이에 대해 MS 측에서도 화면의 넓이나 높이를 특정 값(320,240) 으로 고정시켜 사용하지 말고 시스템 함수를 콜해서 얻어와서 사용하라고 권고하고 있습니다. 자료실에 보시는 acrobat reader VGA 패치의 경우 기존의 실행파일을 추출하여 거기에다 VGA 지원 루틴을 추가한 것 뿐 입니다. adobe reader의 경우 프로그램을 만들 때 화면의 넓이와 높이를 고정 값으로 사용하지 않고 시스템에서 얻어오는 방식을 사용했기 때문에 이 VGA 루틴이 추가되더라도 제대로 작동을 하는 것입니다.

5. Real VGA의 작동 원리
Real VGA라고 하는 부분은 사실 아주 간단한 변경으로 가능한 부분입니다. 즉 위에서 설명 드렸던 레지스트리의 LogicalPixelsX와 LogicalPixelsY 값을 96으로 바꾸기만 하면 되는 것이죠. 문제는 hx4700이 192dpi 전용으로 나온 모델이기 때문에 96dpi를 사용하는 리소스(아이콘, 등등)이 없습니다. 또한 입력기 역시 192dpi를 기준으로 제작이 되었기 때문에 96dpi 모드로 바꿀 경우에 입력기 상에서도 문제가 발생합니다. 제가 테스트 해본 바로는 입력기에 문제가 발생하게 되면 탐색기나 Pocket IE의 동작에도 이상이 생기게 됩니다. SE_VGA와 같은 프로그램이 하는 일은 위에서 설명드린 레지스트리를 변경하는 부분 이외에도 96dpi를 지원하는 리소스들을 hx4700에 설치를 해주는 것입니다. 따라서 96dpi인 Real VGA 모드 상에서도 아이콘과 같은 부분이 깨지지 않고 나오게 되는 것이죠. Windows Mobile에서 기본으로 제공하는 Today Plugin 중에 배터리,메모리 정보가 나오는 패널이 있는데, Real VGA 상에서 그 패널을 보면 아이콘이 크게 나와서 깨져 보이는 경우가 있습니다. 이는 SE_VGA에서 그 패널용 리소스를 설치하지 않았기 때문에 그런 현상이 발생하는 것입니다.
하지만,Windows Mobile OS 자체가 화면의 넓이와 높이를 시스템에서 얻어오는 방식으로 되어 있기 때문에, 96dpi로 바뀌더라도 화면이 1/4만 나오거나 하지는 않고 죽 늘어난 형태로 보여주게 되는 것입니다.
Real VGA 상에서 Pocket IE를 사용하면 그림들이 뭉게지지 않고 잘 나옵니다. 그 이유가 뭘까요? 이것은 당연한 결과 입니다. 왜냐면 Real VGA가 화면의 dpi를 96dpi로 바꾸었기 때문에, 내부적으로 96dpi로 이미지를 처리하는 Pocket IE가 pixel doubling을 사용하지 않기 때문이죠.

결론
1. hx4700은 H/W, S/W 적으로 모두 VGA를 지원합니다.
2. hx4700의 VGA 지원 방식은 dpi를 두배로 늘리는 방식입니다.(96dpi->192dpi)
3. Real VGA는 192dpi로 되어 있는 것을 강제로 96dpi로 바꾸고, 96dpi 용 리소스 파일을 추가하는 프로그램입니다.
4. forceHires 프로그램은 192dpi를 지원하지 않는 어플리케이션들에 192dpi를 지원하도록 하는 루틴을 추가하는 프로그램입니다.

Corfirm 이용 방법.

자주 안쓰다보니 잊어먹어서;;;;

<script type=’text/javascript’>
 function delconfirm(){
  del_con = confirm(‘정말 삭제하시겠습니까? \\n삭제하시면 모든 기록이 함께 삭제됩니다.\\n[확인] 버튼을 누르시면 삭제됩니다.’);
  if (del_con) {
   return true;
  } else {
   return false;
  }
 }
</script>


   <a href=’URL’ onclick=’return delconfirm();’>삭제

확인 누르면 이동~~~ 취소는 이동 안함~

조건적으로 core 파일 지우기

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-­=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-­=-=-=-=-=
                             UNIX GURU UNIVERSE
                                UNIX HOT TIP
                      Unix Tip 2472 – October  8, 2006
                  http://www.ugu.com/sui/ugu­/show?tip.today
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-­=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-­=-=-=-=-=


조건적으로 core 파일 지우기


조건적으로 core 파일을 찾아서 지우기 위해서는:


프롬프트> find ~ -name core -exec file {} \; -exec rm -i {} \;


file 명령어는 어떤 실행 파일이 core 파일의 원인인지 보여주고 rm의 -i 옵션은
파일을 지울것인지 말것인지를 선택할 수 있게 해줄 것이다.


################# 예제 #################
프롬프트>  find ~ -name core -exec file {} \; -exec rm -i {} \;
/my/home/core: ELF 32-bit LSB core file of ‘netscape-commun’
(signal 3), Intel 8
rm: remove `/my/home/core’? y


@@@@@@@@@@@@@@@@@@@@[ 원문 ]@@@@@@@@@@@@@@@@@@@@


REMOVING CORES CONDITIONALLY


To find and remove core files
conditionally:


PROMPT> find ~ -name core -exec file {} \; -exec rm -i {} \;


The File will show which
executable the core file is
for and the -i option to rm
will allow you to choose
weather to delete it or not.


################# EXAMPLE ##############################­#
PROMPT>  find ~ -name core -exec file {} \; -exec rm -i {} \;
/my/home/core: ELF 32-bit LSB core file of ‘netscape-commun’
(signal 3), Intel 8
rm: remove `/my/home/core’? y