클라이언트가 TCP RST을 하는 이유

mandugukbap의 이미지

C언어 기반의 TCP 소켓에서 다음과 같은 문제가 발생했습니다.

1) A와 B는 똑같이 구성되어 있고 동일한 파일이 저장되어 있는 웹서버입니다. A와 B는 똑같은 도메인 주소 (aaa.bbb.ccc.com) 을 가지고 있지만 IP 주소가 다릅니다.

2) 제가 만든 프로그램은 웹서버A와 웹서버B에 동시에 접속해서 파일의 1%~50% 부분은 A에 요청하고, 51%~100%까지의 파일 부분은 B에 요청합니다.

3) 제가 만든 프로그램은 A로 먼저 접속을 열고 다운을 받다가 어느 시점에 (예, 10% 다운로드 시점) B로 접속을 요청합니다.

문제: 제가 만든 프로그램이 A와 B 모두에 RST을 보내서 다운로드가 끊어져 버립니다.
- B로 접속을 하고 request를 보내는 것은 문제가 없음이 확인 되었습니다.
- B에서 돌아오는 response 메세지를 소켓의 read() 또는 recv() 함수에서 printf() 해보려 했는데 안됍니다.
- TCPDump로 레코딩을 했을 경우에는 B에서 전달된 response 메세지가 기록되어 있습니다.

제가 만든 프로그램이 A와 B로 RST을 보내는 이유가 과연 무엇일까요? 조그만 힌트라도 큰 도움이 되겠습니다.

감사합니다.

익명 사용자의 이미지

TIME_WAIT 없애는 법으로 검색 해보세요

웹서버의 RST는 TIME_WAIT와 관련이 있습니다

mandugukbap의 이미지

웹서버가 RST을 시키는게 아니고 제가 만든 프로그램이 RST을 합니다. 저는 프로그램에 RST을 하는 루틴을 넣지 않았거든요.

익명 사용자의 이미지

wireshark로 캡쳐한 패킷 플로우를 올려보세요
정확한 진단을 위해선 패킷플로우나 코드 없이는 힘들거 같네요

mandugukbap의 이미지

TCP 패킷들만 필터해 보았습니다. IP 주소는 익명화를 위해 바꾸었습니다. 1.1.1.1이 클라이언트이고 2.2.2.2와 3.3.3.3은 서버입니다.

 15   2.363335 1.1.1.1 -> 2.2.2.2  TCP 74 48397 > http [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=6434301 TSecr=0 WS=16
 16   2.383194  2.2.2.2 -> 1.1.1.1 TCP 74 http > 48397 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=728151076 TSecr=6434301 WS=2
 17   2.384011 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=1 Ack=1 Win=14608 Len=0 TSval=6434306 TSecr=728151076
 20   2.404582  2.2.2.2 -> 1.1.1.1 TCP 66 http > 48397 [ACK] Seq=1 Ack=198 Win=15552 Len=0 TSval=728151098 TSecr=6434306
 21   2.406893  2.2.2.2 -> 1.1.1.1 TCP 1429 [TCP segment of a reassembled PDU]
 22   2.406951  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 23   2.406969  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 24   2.406984  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 25   2.407001  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 26   2.407016  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 27   2.407031  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 28   2.407049  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 29   2.407066  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 30   2.407082  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 31   2.410696 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=1364 Win=17328 Len=0 TSval=6434312 TSecr=728151100
 32   2.410838 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=2812 Win=20224 Len=0 TSval=6434312 TSecr=728151100
 33   2.410938 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=4260 Win=23120 Len=0 TSval=6434312 TSecr=728151100
 34   2.411031 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=5708 Win=26016 Len=0 TSval=6434312 TSecr=728151100
 35   2.411151 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=7156 Win=28912 Len=0 TSval=6434312 TSecr=728151100
 36   2.411242 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=8604 Win=29296 Len=0 TSval=6434312 TSecr=728151100
 37   2.411335 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=10052 Win=27856 Len=0 TSval=6434312 TSecr=728151100
 38   2.411426 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=11500 Win=26416 Len=0 TSval=6434312 TSecr=728151100
 39   2.411520 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=12948 Win=24976 Len=0 TSval=6434312 TSecr=728151100
 40   2.411612 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=14396 Win=23536 Len=0 TSval=6434312 TSecr=728151100
 43   2.430566  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 44   2.430601  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 45   2.430608  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 47   2.430795 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=15844 Win=34704 Len=0 TSval=6434318 TSecr=728151124
 48   2.430826 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=17292 Win=37600 Len=0 TSval=6434318 TSecr=728151124
 49   2.430844 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=198 Ack=18755 Win=37600 Len=0 TSval=6434318 TSecr=728151124
 52   2.454264  2.2.2.2 -> 1.1.1.1 TCP 1175 [TCP segment of a reassembled PDU]
 53   2.454805  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 54   2.454824  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 55   2.454834  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 56   2.454841  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 57   2.454848  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 58   2.455143 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=399 Ack=21312 Win=41296 Len=0 TSval=6434324 TSecr=728151147
 59   2.455168 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=399 Ack=27104 Win=42256 Len=0 TSval=6434324 TSecr=728151148
 60   2.455624  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 61   2.455643  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 62   2.455652  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 63   2.455660  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 64   2.455667  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 65   2.455674  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 66   2.455682  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 68   2.455904 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=399 Ack=37513 Win=38896 Len=0 TSval=6434324 TSecr=728151148
 70   2.476776  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 71   2.476796  2.2.2.2 -> 1.1.1.1 TCP 392 [TCP segment of a reassembled PDU]
 72   2.476805  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 73   2.477065 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=600 Ack=40735 Win=42256 Len=0 TSval=6434329 TSecr=728151170
 74   2.477322  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 75   2.477341  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 76   2.477350  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 77   2.477358  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 78   2.477366  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 79   2.477375  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 80   2.477384  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 81   2.477390  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 82   2.477396  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 83   2.477667 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=600 Ack=43631 Win=42256 Len=0 TSval=6434329 TSecr=728151170
 84   2.477706  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 86   2.477817 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=600 Ack=56271 Win=34096 Len=0 TSval=6434329 TSecr=728151170
 88   2.499076  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 89   2.499102  2.2.2.2 -> 1.1.1.1 TCP 392 [TCP segment of a reassembled PDU]
 90   2.499112  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 91   2.499484 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=801 Ack=59493 Win=42256 Len=0 TSval=6434335 TSecr=728151192
 92   2.499894  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 93   2.499913  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 94   2.499923  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 95   2.499931  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 96   2.499941  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 97   2.499949  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 98   2.499958  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
 99   2.499964  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
100   2.499971  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
101   2.499977  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
103   2.500257 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=801 Ack=75029 Win=31696 Len=0 TSval=6434335 TSecr=728151192
106   2.522750  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
107   2.522771  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
108   2.522780  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
109   2.522788  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
110   2.522796  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
111   2.522804  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
112   2.522814  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
113   2.522820  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
114   2.522826  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
115   2.523131  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
116   2.523146  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
117   2.523152  2.2.2.2 -> 1.1.1.1 TCP 392 [TCP segment of a reassembled PDU]
118   2.523158  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
119   2.523158 1.1.1.1 -> 3.3.3.3  TCP 74 33416 > http [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=6434341 TSecr=0 WS=16
121   2.542340  3.3.3.3 -> 1.1.1.1 TCP 74 http > 33416 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=656617931 TSecr=6434341 WS=2
122   2.542495 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=1 Ack=1 Win=14608 Len=0 TSval=6434345 TSecr=656617931
124   2.542920 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=1002 Ack=93787 Win=24496 Len=0 TSval=6434346 TSecr=728151216
127   2.562222  3.3.3.3 -> 1.1.1.1 TCP 66 http > 33416 [ACK] Seq=1 Ack=203 Win=15552 Len=0 TSval=656617951 TSecr=6434346
128   2.564688  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
129   2.564707  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
130   2.564716  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
131   2.564724  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
132   2.564895 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=1449 Win=17504 Len=0 TSval=6434351 TSecr=656617953
133   2.564927  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
134   2.564932 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=2897 Win=20400 Len=0 TSval=6434351 TSecr=656617953
135   2.564943  2.2.2.2 -> 1.1.1.1 TCP 1429 [TCP segment of a reassembled PDU]
136   2.564972 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=4345 Win=23296 Len=0 TSval=6434351 TSecr=656617953
137   2.564990 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=5793 Win=26192 Len=0 TSval=6434351 TSecr=656617953
138   2.565139 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [ACK] Seq=1205 Ack=96598 Win=42256 Len=0 TSval=6434351 TSecr=728151258
139   2.565482  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
140   2.565500  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
141   2.565507  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
142   2.565514  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
143   2.565521  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
144   2.565527  3.3.3.3 -> 1.1.1.1 TCP 393 [TCP segment of a reassembled PDU]
145   2.565534  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
146   2.565541  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
147   2.565547  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
148   2.565554  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
149   2.565561  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
150   2.565567  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
151   2.565573  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
152   2.565579  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
153   2.565585  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
154   2.565591  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
155   2.565764 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=7241 Win=29088 Len=0 TSval=6434351 TSecr=656617953
156   2.565797 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=8689 Win=31984 Len=0 TSval=6434351 TSecr=656617953
157   2.565825 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=10137 Win=34880 Len=0 TSval=6434351 TSecr=656617953
158   2.565852 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=11585 Win=36496 Len=0 TSval=6434351 TSecr=656617953
159   2.565879 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=13033 Win=35056 Len=0 TSval=6434351 TSecr=656617953
160   2.565902  2.2.2.2 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
161   2.565912 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [ACK] Seq=203 Ack=13360 Win=40672 Len=0 TSval=6434351 TSecr=656617953
163   2.567584 1.1.1.1 -> 2.2.2.2  TCP 66 48397 > http [RST, ACK] Seq=1205 Ack=112547 Win=42256 Len=0 TSval=6434352 TSecr=728151258
164   2.567639 1.1.1.1 -> 3.3.3.3  TCP 66 33416 > http [FIN, ACK] Seq=203 Ack=13360 Win=40672 Len=0 TSval=6434352 TSecr=656617953
165   2.584098  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
166   2.584463  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
167   2.584510  3.3.3.3 -> 1.1.1.1 TCP 1514 [TCP segment of a reassembled PDU]
169   2.584807 1.1.1.1 -> 3.3.3.3  TCP 54 33416 > http [RST] Seq=203 Win=0 Len=0
170   2.585045 1.1.1.1 -> 3.3.3.3  TCP 54 33416 > http [RST] Seq=203 Win=0 Len=0
171   2.585087 1.1.1.1 -> 3.3.3.3  TCP 54 33416 > http [RST] Seq=203 Win=0 Len=0
172   2.585112 1.1.1.1 -> 3.3.3.3  TCP 54 33416 > http [RST] Seq=203 Win=0 Len=0
173   2.587069  3.3.3.3 -> 1.1.1.1 TCP 66 http > 33416 [FIN, ACK] Seq=18760 Ack=204 Win=15552 Len=0 TSval=656617976 TSecr=6434352
174   2.587650 1.1.1.1 -> 3.3.3.3  TCP 54 33416 > http [RST] Seq=204 Win=0 Len=0
sunyzero의 이미지

close 때문인 것 같습니다.

RST가 FIN 이후에 나오는 경우는 SO_LINGER 때문이지만,
RST만 나온 것을 봤을 때 socket rcv buffer에 데이터가 남아 있는데 close()를 호출한 것이 아닐까 생각됩니다.

확인을 위해 close()하기 전에 ioctl(fd, FIONREAD, &ret_nread)를 호출해서
socket rcv buffer에 남아있는 데이터가 있는지 확인해보시기 바랍니다.

해보시고 맞는지 틀렸는지 결과 부탁 드립니다.

참고로 close()대신에 shutdown()을 사용하면 rcv buffer에 데이터가 있어도 RST를 보내지 않습니다.

========================================
* The truth will set you free.

mandugukbap의 이미지

문제를 해결하고 감사와 함께 결과를 알려 드리고 싶었는데, 사실 버퍼에 당연히 데이터가 남아 있을 것이기에 특별히 확인을 하지 않았습니다.

왜냐하면 제 프로그램은 어디에서도 close()나 shutdown()을 호출하지 않기 때문입니다. 다운로드가 완료되면 그냥 프로그램이 종료됩니다. (나중에 제대로 만들때는 close()를 하겠지만 현재는 어디까지나 아이디어의 proof 단계라서요.)

아무튼 서버로부터 다운로드가 진행되는 과정 중간에 RST을 보내고 중단되어 버리니 버퍼에 데이터가 분명 있을 것이라 봅니다.

아무튼 정확히는 아니더라도 문제가 발생하는 과정은 알아 내었습니다. 다만 왜 이런 문제가 생기는지 궁금한데, 새로운 쓰레드를 열어서 질문을 드려야 할지 아니면 이 쓰레드에 계속 문제점을 논하는게 좋을지 모르겠네요.

아무튼 힌트 감사 드립니다.

sunyzero의 이미지

프로세스를 종료 시키면 시스템이 close를 해주므로 위와 똑같은 결과를 가져옵니다.
이미 닫힌 소켓에 패킷이 수신되므로 시스템이 RST를 발생시키는 것이죠.

명시적으로 소켓을 닫지 않고 프로세스를 종료 시키는 방식은 권장하지 않습니다.

========================================
* The truth will set you free.

mandugukbap의 이미지

#163과 #169 ~ #172까지 보시면 클라이언트가 양쪽 서버에 RST을 보내고 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.