Skip to content
컴퓨터잡담
2009.11.20 08:18

서버 해킹 당하다~

조회 수 15662 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

서버 해킹 당하다~

도대체 누구일까?

어느날 갑자기 db서버가 매일 또는 이틀지나 하루꼴로 다운되는 것이었다.

원격접속도 안되고 왜 이런가??....


곰곰히 생각해보았다.

db설정을 수십번 변경해봐도 해결되지 않고 결국에는 매시간 자동 리셋 되게끔 설정하였다.


그리고 오늘 우연히 taskmgr 로 프로세스를 확인해보는데 어랏?~

처음보는 놈이 실행되고 있는 것이었다.

wscript(msdtc,tlntsess,tlntsvr)

난 이놈을 실행시킨 적이 없는데 이놈은 어느순간 자리를 턱하니 잡고 있었고,
이 프로세스를 죽이고 나니깐 서버가 한결 가벼워 진듯 보였다.

문제는 이프로세스를 지우는 건 문제가 안되는데 도대체 누가 설치했는가이다.
누굴까?



<%

thisdir = server.MapPath(".")

set ws = Server.CreateObject("WScript.Shell")

ws.Run "c:\1.exe"

'ws.Run "explorer"

'ws.Run thisdir & "/taskkill.bat" '굳이 이렇게 사용하지 않고, 바로 명령을 처리할 수 있음.

ws.Run "taskkill /f /im 1.exe /t"

'wscrip 의 shell 명령어는 도스커맨드에서 명령을 내리는것과 동일하므로,

'별도의 커맨드를 호출하여 명령을 실행하지 않고, 바로 도스 커맨드 명령을 처리할 수 있다.

set ws=nothing

%>

위에서 보면,

Wscript 를 이용해, 서버의 실행파일을 원격으로 실행시킨다.

만약, 그 실행파일이 스스로 종료한다면 문제가 안되겠지만,

그런 기능이 없는 실행파일이라면, 다시 원격으로 종료시켜야 하므로,

명령어를 이용해 강제로 종료시킨다.

예전에는, 바로 종료할 수 있다는 것을 몰라서,

그러나, 해당 프로그램이 아직 작업이 완료 되었는지 불명확하므로,

단지 위처럼 사용할 수 있는것은 아니고, 상황에 맞게 변경을 해야 한다.

기억이 가물가물 한데,

일전에, wscript 를 이용하여 서버의 프로그램을 호출한경우,

svchost.exe 가 개별적으로 계속 생겨났었는지 아닌지가 잘 기억나지 않는다.

만약, 여러명의 서버 접속자가 wscript 를 호출할경우, 계속해서 svchost.exe 가 생겨난다면, 결과적으로 메모리 누수가 일어나 서버가 다운되는 지경에 이르게 되므로, 별도의 테스트를 해본뒤 응용하여야 한다.

개인적으로, 자신의 컴퓨터에 로컬서버상에서 접속을 테스트한 경우에는 svchost.exe 가 계속 생겨나지는 않았다.




[WScript]

┣<WshShell>

┃ ┃

┃ ┠ WshShortcut

┃ ┃

┃ ┠ WshUrlShortcut

┃ ┃

┃ ┠ WshEnvironment

┃ ┃

┃ ┠ WshSpecialFolders

┃ ┃

┃ ┖ WshScriptExec

┣<WshArguments>

┃  ┃

┃  ┠ WshNamed

┃  ┃

┃  ┖ WshUnnamed

┣<WshController>

┃  ┃

┃  ┠ WshRemote

┃  ┃

┃  ┖ WshRemoteError

┗<WshNetwork>

 

* WSH Objects *


WSH 관련 작업은 한마디로 개체(object)를 생성하여 그 개체에서 사용가능한 Method 와 Property를 이용하는 것이라고 할 수 있다. 따라서 작업을 하려면 먼저 개체를 생성해야 하고, 가장 상위의 4개 개체는 주개체(Main Object)인 Wscript 개체를 통해 생성된다. 주개체는 기본적으로 생성되는 것으로 따로 생성하고 할 필요가 없다. (다른 스크립트들과는 달리 WSH에서는 개체의 종류와 생성방법 등이 몇 개로 특정되어 있어 사용하기가 편하다.)


개체도 변수의 일종이므로 개체 생성방법 역시 변수처럼 Dim 으로 변수 선언 후 해당 변수에 CreateObject 로 할당하면 된다. 다만 개체는 변수가 개체변수라는걸 알리기위해 앞에 Set 을 해준다.

 

Wscript


WSH의 메인 개체(오브젝트)


WshShell

Dim WshShell : Set WshShell = WScript.CreateObject("WScript.Shell")


WshShortcut

Dim Link : Set Link = WshShell.CreateShortcut(DeskTop & "\test.lnk")


WshSpecialfolders

Access any of the Windows Special Folders

Dim DeskTop : DeskTop = WshShell.SpecialFolders("Desktop") ' or AllUsersDesktop


WshURLShortcut

Dim URL : Set URL = WshShell.CreateShortcut(DeskTop & "\Go Naver.url")


WshEnvironment

Dim WshEnv : Set WshEnv = WshShell.Environment("Process")


WshScriptExec

Dim oExec : Set oExec = WshShell.Exec("calc")


WshArguments

Dim objArgs : Set objArgs = WScript.Arguments

WshNamed

WshUnnamed


WshNetwork

Dim Net : Set Net = WScript.CreateObject ("WScript.Network")


WshController

Dim Controller : Set Controller = WScript.CreateObject("WSHController")


WshRemote

WshRemoteError

 

메인 오브젝트(WScript)의 하위 오브젝트들인 WshShell,WshArguments,WshNetwork,

WshController,WshRemote 등은 메인 오브젝트(WScript)의 method 인 CreateObject 를 통해 생성되고, 각 오브젝트의 하위 오브젝트는 각 오브젝트에서 사용 가능한 적절한 method와 property 의 사용을 통해 생성된다.

 

- WScript : Windows 용

- CScript : cmd 용

 

* CScript 명령줄 사용예 *

 

CScript [host options...][script name][options and parameters]

CScript //nologo C:\Scripts\Qbackup.vbs

 

//?

 

//I                ; Interactive mode(default). (대화창이나 에러메시지가 윈도에 표시된다)

//B               ; Batch mode. ( 대화창이나 에러 메시지가 모두 프롬프트창에 표시된다.)

//T:nn          ; 타임아웃(일정시간이 지나면 스크립트 실행 중지. 초단위. 기본값은 무제한)

//NOLOGO    ; 배너 표시안함(기본값은 표시 ->  //LOGO )

//H:CScript   ; CScript.exe 를 스크립트 실행을 위한 기본 호스트로 지정. 

//H:WScript   ; WScript.exe 를 스크립트 실행을 위한 기본 호스트로 지정.


; WSH의 기본 스크립트는 레지스트리값을 통해 확인할 수 있다.

; => HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings 

 

//S                    ; Current User를 위해 현재 명령줄 옵션을 저장. 

//E:engine          ; 스크립트를 지정된 스크립트엔진으로 실행.

                         (파일확장자가 달라도 스크립트 실행이 가능)

//D                    ; 디버깅 중지. 

//X                    ; 디버깅하면서 스크립트 실행. 

//JOB:<JobID>   ; .wsf 파일의 특정 JobID 를 실행.

//U                    ; Enables you to use Unicode for redirected input/output (I/O) from the console. 

 

- Object와 각 Object에 따른 Property -

 

* WScript object's Properties *

 

WScript.Name                  '  Windows Script Host

WScript.FullName             '  C:\WINDOWS\System32\wscript.exe

WScript.Version                '  5.6

WScript.BuildVersion         '  8827

WScript.Path                    '  CScript.exe or WScript.exe 파일의 경로 -> C:\WINDOWS\system32

WScript.ScriptFullName     '  현재 실행중인 파일의 full path & name -> C:\TEMP\test.vbs

WScript.ScriptName          '  현재 실행중인 파일의 이름 -> test.vbs

WScript.Interactive            ' 모드(interactive or batch) 표시. -> 1  or True

WScript.Interactive = False ' 배치모드로 전환된다.

 

WScript.StdErr

WScript.StdIn

WScript.StdOut

cf, StdIn, StdOut, and StdErr streams 는 CScript.exe 를 통해서만 액세스할 수 있다.

 

WScript.Arguments

WScript.Arguments.NamedWScript.Arguments.Unnamed

WScript.Arguments.Named.Item(이름)

WScript.Arguments.Unnamed.Item(순서)

 

myScript.vbs /c:arg1 /d:arg2

WScript.Arguments.Named.Item("c")   ' ->  arg1

myScript.vbs arg1 arg2

WScript.Arguments.Unnamed.Item(0)   ' ->  arg1  (zero-based index )

 

WScript Object는 기본적으로 생성되는 Object이므로 각 속성들 또한 아무곳에서나 사용가능..

 

* Shortcut object's Properties *


Shortcut Object는 WshShell Object의 CreateShortcut 메서드를 이용해 생성

Dim WshShell : Set WshShell = WScript.CreateObject("WScript.Shell")

Dim Desktop : Desktop = WshShell.SpecialFolders("Desktop")

Dim objLink : Set objLink = WshShell.CreateShortcut(Desktop & "\ScriptsFolder.lnk")

objLink.TargetPath = WScript.ScriptFullName

objLink.RelativePath = "C:\Scripts\"

objLink.WindowStyle = 1                   ' 1  ->  Activates and displays a window

objLink.Hotkey = "Ctrl+Alt+C"

objLink.IconLocation = "notepad.exe, 0"

objLink.Description = "Shortcut to Script Working Directory"

objLink.WorkingDirectory = Desktop

objLink.Arguments = "C:\myFile.txt"

objLink.Save

WScript.Echo objLink.FullName

 

* TextStream object's Properties *


FSO의 CreateTextFile, OpenTextFile, OpenAsTextStream 등의 Method를 이용해서 생성

AtEndOfLine

AtEndOfStream

Column

Line

Set FSO = CreateObject("Scripting.FileSystemObject")

Set f = FSO.OpenTextFile("c:\testfile.txt", ForReading)

do while f.AtEndOfStream <> True 

    Wscript.Echo f.ReadLine 

loop

 

* WshRemote object's Properties *

 

Dim Controller : Set Controller = WScript.CreateObject("WSHController")

Dim RemoteScript : Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")

RemoteScript.Execute

Do While RemoteScript.Status <> 2 

    WScript.Sleep 100

Loop


' Staus value :

' 0 : 원격스크립트 생성됨,but 아직 실행안됨

. 1 : 원격스크립트 실행중

' 2 : 원격스크립트 실행 끝남

 

* WshRemoteError object's Properties *

 

Dim RemoteError : Set RemoteError = RemoteScript.Error

RemoteError.Number

RemoteError.Line

RemoteError.Character

RemoteError.Description

RemoteError.Source

RemoteError.SourceText

 

* WshShell object's Properties *

 

Dim WshShell : Set WshShell = WScript.CreateObject("WScript.Shell")

WScript.Echo WshShell.CurrentDirectory       '  C:\Temp

 

Dim WshEnv : Set WshEnv = WshShell.Environment("PROCESS")

WScript.Echo WshEnv("NUMBER_OF_PROCESSORS")

 

NUMBER_OF_PROCESSORS

PROCESSOR_ARCHITECTURE

PROCESSOR_IDENTIFIER

PROCESSOR_LEVEL

PROCESSOR_REVISION

OS

COMSPEC

HOMEDRIVE

HOMEPATH

PATH

PATHEXT

PROMPT

SYSTEMDRIVE

SYSTEMROOT

WINDIR

TEMP

TMP

 

Dim Desktop : Desktop = WshShell.SpecialFolders("Desktop")

AllUsersDesktop

AllUsersStartMenu

AllUsersPrograms

AllUsersStartup

Desktop

Favorites

Fonts

MyDocuments

NetHood

PrintHood

Programs

Recent

SendTo

StartMenu

Startup

Templates

 

cf, Environment 나 SpecialFolders property 에 의해 반환되는 객체는 컬렉션 객체이다.

따라서 Itme , count (number of items) 등을 이용할 수 있다.

 

WScript.Echo WshShell.SpecialFolders.Item("Programs")

' ->  C:\Documents and Settings\USER_ID\시작 메뉴\프로그램

 

* WshScriptExec object's Properties *

 

Dim oExec : Set oExec = WshShell.Exec("%comspec% /c dire")

If oExec.ExitCode <> 0 Then

     WScript.Echo "Warning: Non-zero exit code"

End If


' ExitCode : 대상 프로그램이 끝나지 않았으면 0, 끝나면 프로그램에서 반환된 값


 * WshNetwork object's Properties *

 

Dim Net : Set Net = WScript.CreateObject("WScript.Network")

WScript.Echo "Domain = " & Net.UserDomain

WScript.Echo "Computer Name = " & Net.ComputerName

WScript.Echo "User Name = " & Net.UserName

  

Object의 종류와 그에 따른 속성들이 몇 개 안되므로 사용하기 편하다. 


* WSH Methods index *

 

각 Method 에 대한 자세한 설명은 이 후 예문이 나올 때..

 

AddPrinterConnection 

AddWindowsPrinterConnection 

AppActivate 

Close 

ConnectObject 

Count 

CreateObject 

CreateScript 

CreateShortcut 

DisconnectObject 

Echo 

EnumNetworkDrives 

EnumPrinterConnections 

Exec 

Execute 

Exists 

ExpandEnvironmentStrings 

GetObject 

getResource 

LogEvent 

MapNetworkDrive 

Popup 

Quit 

Read 

ReadAll 

ReadLine 

RegDelete 

RegRead 

RegWrite 

Remove 

RemoveNetworkDrive 

RemovePrinterConnection 

Run 

Save 

SendKeys 

SetDefaultPrinter 

ShowUsage 

Sign 

SignFile 

Skip 

SkipLine 

Sleep 

Terminate  (WshScriptExec)

Verify 

VerifyFile 

Write 

WriteBlankLines 

WriteLine 

 

아래 상수들은 VBScript에 들어 있으므로 사용하기 전에 정의하지 않아도 된다.

(Value 입력시 Value 대신 Constant 를 바로 사용가능하다는 뜻)

단, MsgBox 반환값은 코드에 명시적으로 상수로 선언해야 사용 가능.


* String Constants *


Constant         Value                      Description

vbCr               Chr(13)                   캐리지 리턴 (Carriage return)

vbLf                Chr(10)                   라인 피드 (linefeed)

vbCrLf             Chr(13) & Chr(10)    캐리지 리턴-라인 피드 조합

vbNewLine      Chr(13) & Chr(10) 또는 Chr(10) 각 플랫폼 특정의 줄 바꿈 문자 

vbNullChar      Chr(0)                     값이 0인 문자 (Character having the value 0)

vbNullString     값이 0인 문자열.       길이가 0인 문자열("")과 다르며, 외부 프로시저 호출에 사용. 

vbTab             Chr(9)                    수평 탭 (Horizontal tab)

vbFormFeed    Chr(12)                   폼 피드. Microsoft Windows에서는 사용되지 않습니다. 

vbVerticalTab  Chr(11)                   수직 탭. Microsoft Windows에서는 사용되지 않습니다. 


* space(11) : 빈칸 11 개

* 줄바꿈 : 

캐리지 리턴 Chr(13), 라인 피드 문자 Chr(10) 또는 

캐리지 리턴-라인 피드 문자의 조합 Chr(13) & Chr(10) 을 사용하여 줄을 구분할 수 있다.

Msgbox "첫째 줄입니다. " & Chr(13) & Chr(10) & "둘째 줄입니다"

* 쌍따옴표(double quotation marks) 넣기 : Chr(34) 로 감싸기 or 쌍따옴표 두쌍으로 감싸기

내 이름은 "김팔봉"   ->  "내이름은 " & Chr(34) & "김팔봉" & Chr(34)

내 이름은 "김팔봉"   ->  "내이름은 " & """김팔봉"""


* Tristate Constants *


Constant       Value  Description

vbUseDefault   -2     Use default from computer's regional settings. 

vbTrue            -1     True 

vbFalse           0      False 


* Color Constants *


Constant      Value        Description

vbBlack        &h00         Black 

vbRed          &hFF         Red 

vbGreen       &hFF00      Green 

vbYellow      &hFFFF     Yellow 

vbBlue         &hFF0000   Blue 

vbMagenta   &hFF00FF   Magenta 

vbCyan        &hFFFF00   Cyan 

vbWhite        &hFFFFFF  White 


* Date and Time Constants *


Constant      Value  Description 

vbSunday        1     Sunday 

vbMonday       2     Monday 

vbTuesday      3     Tuesday 

vbWednesday  4     Wednesday 

vbThursday     5     Thursday 

vbFriday          6     Friday 

vbSaturday      7     Saturday 

vbUseSystemDayOfWeek 0 

Use the day of the week specified in your system settings for the first day of the week. 

vbFirstJan1        1  Use the week in which January 1 occurs (default). 

vbFirstFourDays 2  Use the first week that has at least four days in the new year. 

vbFirstFullWeek  3  Use the first full week of the year. 


* Date Format Constants *


Constant      Value  Description 

vbGeneralDate  0  Display a date and/or time. ..determined by user system settings. 

vbLongDate      1  long date format (specified in user computer's regional settings). 

vbShortDate      2  short date format (specified in user computer's regional settings). 

vbLongTime     3  long time format (specified in user computer's regional settings). 

vbShortTime     4  short time format (specified in user computer's regional settings).


* VarType Constants *


Constant     Value   Description 

vbEmpty           0     Uninitialized (default) 

vbNull              1     Contains no valid data 

vbInteger          2     Integer subtype 

vbLong            3     Long subtype 

vbSingle          4     Single subtype 

vbSingle          5     Double subtype 

vbCurrency      6     Currency subtype 

vbDate            7      Date subtype 

vbString           8     String subtype 

vbObject          9     Object 

vbError           10     Error subtype 

vbBoolean      11     Boolean subtype 

vbVariant       12     Variant (used only for arrays of variants) 

vbDataObject  13     Data access object 

vbDecimal      14     Decimal subtype 

vbByte           17     Byte subtype 

vbArray       8192     Array 


* MsgBox Constants *


Constant              Value   Description 

vbOKOnly                 0      Display OK button only. 

vbOKCancel             1      Display OK and Cancel buttons. 

vbAbortRetryIgnore    2      Display Abort, Retry, and Ignore buttons. 

vbYesNoCancel        3      Display Yes, No, and Cancel buttons. 

vbYesNo                  4      Display Yes and No buttons. 

vbRetryCancel          5      Display Retry and Cancel buttons. 

vbCritical                16      Display Critical Message icon. 

vbQuestion             32      Display Warning Query icon. 

vbExclamation         48      Display Warning Message icon. 

vbInformation           64      Display Information Message icon. 

vbDefaultButton1        0      First button is the default. 

vbDefaultButton2     256      Second button is the default. 

vbDefaultButton3     512      Third button is the default. 

vbDefaultButton4     768      Fourth button is the default. 

vbApplicationModal   0      Application modal.(응답해야 현재 프로그램 계속 실행 가능 )

vbSystemModal     4096     System modal.


cf, 조합이 가능하다

두개버튼(Yes,No) + 물음표 아이콘 + 선택커스의 기본위치가 두번째버튼(No) 인 경우

=> MsgBox "예,아니오 중 선택하세요", vbYesNo + vbQuestion + vbDefaultButton2

=> MsgBox "예,아니오 중 선택하세요", 4 + 32 + 256

=> MsgBox "예,아니오 중 선택하세요", 292


<반환값>

Constant  Value  Description 

vbOK          1      OK button was clicked. 

vbCancel    2      Cancel button was clicked. 

vbAbort       3      Abort button was clicked. 

vbRetry       4      Retry button was clicked. 

vbIgnore     5      Ignore button was clicked. 

vbYes        6      Yes button was clicked. 

vbNo          7      No button was clicked.

cf, VBScript 에서 응답값(반환값)은 명시적으로 선언해야 문자열을 상수값으로 사용할 수 있다.

 

intButton = object.Popup (strText,[nSecondsToWait],[strTitle],[nType]) 

' [] 로 둘러싸인 부분은 옵션이다. (있어도 그만, 없어도 그만)

' cf. 반환값 없이 단독으로 쓰일 때는 괄호를 사용할 수 없다. 

' Shell.Popup("안녕하세요", 0, "Hello", vbOkOnly)      =>   괄호로 둘러싸면 에러남..    

 

   - object : WshShell object. 

   - strText : 메시지. 

   - nSecondsToWait : Optional. 응답 기다릴 시간(second). (생략시 기본값은 0 ,무한정 기다림)

     지정되고 nSecond 동안 응답 없으면..  -> 메시지박스 사라지면서 -1 을 반환한다.

   - strTitle : Optional. 메시지박스 타이틀바에 나타낼 제목.(생략시 "Windows Script Host" )

   - nType : Optional. 버튼과 아이콘 타입.( 생략시 버튼타입은 0 -> vbOkOnly )

   - IntButton : 메시지박스 버튼 클릭시 반환되는 정수값.


 intButton = MsgBox (prompt [, button][, title][, helpfile, context])

 

   - title : 대화 상자의 제목 표시줄에 나타나는 문자식. (생략시 응용 프로그램 이름이 나타남)

   - helpfile, context : 대화상자에 도움말 제공하기위한 도움말 파일들.

      helpfile 이 지정되었다면 context 도 지정되어야 한다.(16bit 에서 사용불가)


strReturn = InputBox ( prompt[, [title], [default], [xpos], [ypos]])

 

   - cf, 취소 버튼을 클릭하면 zero-length string("") 이 반환된다.

   - MsgBox, InputBox : VBScript 도구로 객체(object) 생성없이 단독으로 바로바로 사용 가능.


 * Button Types *


Value     Description                             Constants

0           OK                                          vbOkOnly

1           OK, Cancel                              vbOkCancel

2           Abort, Retry, Ignore                   vbAbortRetryIgNore

3           Yes, No, Cancel                       vbYesNoCancel

4           Yes, No                                   vbYesNo

5           Retry, Cancel                           vbRetryCancel

 

* Icon Types *


Value      Description                              Constants

16          Show "Stop Mark" icon.              vbCritical

32          Show "Question Mark" icon.        vbQuestion

48          Show "Exclamation Mark" icon.   vbExclamation

64          Show "Information Mark" icon.     vbInformation

 

* Return value *


Value       Description 

-1  <-       timeout(응답시간내 응답 없으면 반환되는 값)

1    <-       OK 

2    <-       Cancel 

3    <-       Abort 

4    <-       Retry 

5    <-       Ignore 

6    <-       Yes

7    <-       No


cf, 반환값 상수는 명시적으로 상수로 선언해야 사용 가능.


출처 : http://cafe.naver.com/randomaccess.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=54

TAG •
로그인 후 댓글쓰기가 가능합니다.

?
  • ?
    2009.11.21 10:30

    다른 블로그님의 자료에서 퍼온 자료입니다.

     

    기존엔 발생하지 않았던 win2000 서버의 문제가 발견되었다.

    IIS 로 80만 LISTEN 시킨 방화벽 속에서 서비스를 진행중인 서버인데

    서버의 라인을 바꾸면서 부터 문제가 생겼다.

    우선 설치 이전부터 인터넷라인의 싱크가 죽었다 살았다 하는 문제가 발생했었던 일을 상기해봐야 하는 글을 보게되었다.

     

    윈속 10055 에러 발생에 대한 case

     

    보통 인터넷 연결이 24시간 되어있다고는 볼 수 없습니다.
    아마도 ISP 업체의 문제로 인해서...중간 중간 끊기는 경우가 발생합니다.

    이럴때 어플에서 다시 재접속을 하고..또 끊기고..
    이러다 보면....어플의 포함된 시스템의 소켓 리소스가 모자라게 됩니다.
    소켓을 사용하고 반환을 하지 않았기 때문이죠.

     

    ISP에서 제대로 된 신호를 주지 않거나 장비의 문제로 ADSL 모뎀에 문제가 있을 경우에는 신호가 자꾸 끊어지는 현상이 발생했다. 그로 인해 아답터를 교환하는 일이 있었지만 전원 공급이 원활하지 않다는 설을 들은적이 있다.

     

    1차적으로 소켓에러의 발생을 물리적인 일로 규정짓는다면 위 사항을 꼭 점검해보자

     

    분명 OS상에 소프트 웨어적으로 해결방안을 제시할 수 있을거라 보고 나름데로 찾아봤다.

    진단해보고 생각보다 불필요한 소켓이 이 많이 열려 있다면 막아주도록 하자

    물론 아래 제시된 해결책은 소켓의 수를 늘려주는거겠지만 10055 에러자체는 메모리 에러다보니 특정 메모리를 넘어서게 되는 소켓의 요청은 아무리 수를 늘려준다 한들 같은 에러가 발생할 듯 싶다.

     

    적용해보고 모니터링 해봐야 할 듯 싶다. 잘 되는지 안되는지 말이다.

     

    [펌글 출처]

    http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?db=dmdlec3&mode=read&num=1488&page=1&backdepth=1

     

    이 에러 때문에 일주일을 고생했습니다. 게시판에 검색해보니깐, 몇몇 분들이 글을 올리셨던데 답변이 별로 없더군요...
    이 에러가 제가 겪은 것과 다른 문제로도 발생할 수 있겠지만, 아무튼 도움이 될까해서 올립니다.

    이 에러는 보통 윈도우 95/98 계열에서 발생하는데, 현재 시스템에 열려있는 소켓의 수가 너무 많아서 그렇습니다.
    커맨드 라인에서 "netstat -a " 라고 치시면 현재 열러있는 포트의 수가 나타납니다.

    소켓을 열어서 사용하고나서 닫지 않아서 그렇죠...

    해결책은 레지스트리를 조작하면 됩니다.
    regedit.exe로 "HKEY_LOCALMACHINE\System\CurrentControlSet\Services\Vxd\MSTCP " 를 열어서 MaxConnections 라는 문자열 값을 하나 만들고 값을 256으로 설정합니다.
    그리고 윈도우를 재부팅하면 아마 같은 에러가 뜨지않을 겁니다.

    윈도우95/98 계열에서는 위에서 처럼 레지스트리를 조작하지 않았을 경우 기본은 생성할 수 있는 소켓의 수가 100개의 설정됩니다.
    그래서 100 이상이 생성될 경우 위와같은 오류가 발생하지요...

    이렇게 했는데도 오류가 난다면, 사용한 소켓을 정확히 닫아줬는지 한번 확인하시구요....

    제가 만드는 프로그램에서는 소켓을 많이 사용하는데, 윈도우2000에서는 잘 돌아가는 프로그램이 98에서 실행만 하면 동작을 않해서 고생했는데 여러 싸이트를 돌아다니다 보니깐 이런 자료가 있어서 이렇게 올리게 되었습니다.

    한가지 말씀드리고 싶은것은 위에서 제가 말한 레지스트리 조작은 윈도우 95/98 계열에만 해당되는 내용입니다. 윈도우 2000에서는 25600개 정도의 소켓을 생성할 수 있도록 기본 설정이 되어있다고 하군요....

    그럼 님들도 즐프하세요....


List of Articles
번호 분류 제목 날짜 조회 수
57 컴퓨터잡담 [Autohotkey] 인터넷 창을 여러개 띄우고 컨트롤 할때 ahk_id 알아내기 1 3 2009.12.19 19458
56 컴퓨터잡담 List of Windows Messages 2 1 2009.12.15 17959
55 컴퓨터잡담 wm_syscommand 등의 값 1 3 2009.12.15 8926
54 컴퓨터잡담 Spy & Capture Spy++과 같은 계열의 프로그램 1 2009.12.10 17414
53 컴퓨터잡담 [팁&테크] 하드디스크 파티션 숨기기 2 2009.12.08 13490
52 컴퓨터잡담 Windows XP에서 Boot.ini 파일을 편집하는 방법 2009.12.08 19532
51 컴퓨터잡담 mysql 날짜타입에 기본값으로 현재시간넣기 1 2009.12.07 38585
50 컴퓨터잡담 아스키 코드 변환(hex) 2009.12.06 19968
49 컴퓨터잡담 이더리얼, 윈캡, 윈덤프 사용방법 및 다운로드 3 3 2009.12.06 16195
48 컴퓨터잡담 mysql 명령어 1 2 2009.12.04 12346
47 컴퓨터잡담 주키(Primary Key, 프라이머리키)와 자동 증가(Auto Increment) 필드 2009.12.04 21560
46 컴퓨터잡담 다른 윈도우 창 프로그램 제어 1 2009.12.03 37715
45 컴퓨터잡담 TIME_WAIT 줄이기(소켓이 부족하여 프로세스 강제중단을 막기위해) 4 2009.11.30 34107
44 컴퓨터잡담 php 에서 mysql 제어하기 2009.11.28 28199
43 컴퓨터잡담 windows error 코드표 4 2009.11.25 22171
42 컴퓨터잡담 mysql 접속불가시 재부팅 2009.11.24 12084
41 컴퓨터잡담 mysql 접속에러시 재부팅 하는 배치파일 2009.11.24 26667
40 컴퓨터잡담 Windows 초간단 remote 백업 명령 2009.11.24 23485
39 컴퓨터잡담 Ghost용 배치 파일 작성 예 1 2009.11.24 8140
38 컴퓨터잡담 bat(배치) 파일 제대로 쓰기 2009.11.24 6874
Board Pagination Prev 1 ... 42 43 44 45 46 Next
/ 46

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소