안녕하세요! 관심가져주시고 조언해주셔서 정말 감사합니다.
질문을 너무 두리뭉실하게해서 지울까말까 하다가 댓글 달아주시고 조언해주셔서 뭐라
어떻게 감사를 드려야할지 모르겠습니다.
현재 A장비는 어떠한 입력을 받으면 그 받은 입력을 정해진 서버IP와 포트로 그 데이터와 자신의 고유넘버를 보내줍니다.
문제점은 이 장비 A를 두번째 켰을때 이러한 동작이 작동안하는 것이 문제점입니다
그래서 시도해본것이 tcpdump였고 첨부한 그림파일의 왼쪽위 putty 화면을 보시면 서버가 부팅되고 A장비가 처음에 장착됬을때는
정상적으로 3way 핸드쉐이킹 방식으로 ‘S’, ‘S.’, ‘.’ 이 찍히는 것을 확인했는데 이것을 확인하고
A장비를 껏다 키면 모니터링되는 패킷이 첫번째 질문에 올린
192.168.0.1.AAA > 192.168.0.2.AAA: Flags [S], cksum 0x68b4 (correct), seq 789457140, win 2048, options [mss 1460], length 0
입니다. 제가 궁금한점은 이 tcpdump는 서버에서 실행한 명령문으로 위의 패킷이 모니터링됬다는 것은
클라이언트로부터 리눅스 서버(192.168.0.2)로 sync 패킷이 들어오는데 리눅스 서버에서 정상적으로 됬을때처럼 S. 패킷을 어떠한 이유로
안보내는 것으로 이해했고 이러한 이유가 무엇인지 짧은 소견으로는 모르겠습니다… 혹시 장비 A가 껏다키면 연결이 아예 안되는것인지
ping을 날려봤지만 첫번째, 두번째와 상관없이 무조건 연결이 된다면 ping은 날라갔고 네트워크적으로 연결은 되는것으로 이해했습니다.
혹시 제가 잘못이해하고있는 부분은 어디인지, 그리고 점검해야될 부분은 무엇인지 선배님께 조언부탁드리겠습니다!
그리고 관심가져주시고 조언해주신점 한번더 감사드립니다!
[quote="happyman":1x8u520w][code:1x8u520w]
09:20:58.124532 IP 192.168.25.40.49133 > 192.168.25.1.http: Flags [S], seq 1016758406, win 29200, options [mss 1460,sackOK,TS val 876277 ecr 0,nop,wscale 7], length 0
09:20:58.126380 IP 192.168.25.1.http > 192.168.25.40.49133: Flags [S.], seq 1233985748, ack 1016758407, win 5792, options [mss 1460,sackOK,TS val 30709144 ecr 876277,nop,wscale 1], length 0
09:20:58.126442 IP 192.168.25.40.49133 > 192.168.25.1.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 876278 ecr 30709144], length 0
09:20:58.126559 IP 192.168.25.40.49133 > 192.168.25.1.http: Flags [P.], seq 1:376, ack 1, win 229, options [nop,nop,TS val 876278 ecr 30709144], length 375
09:20:58.128459 IP 192.168.25.1.http > 192.168.25.40.49133: Flags [.], ack 376, win 3432, options [nop,nop,TS val 30709144 ecr 876278], length 0
[/code:1x8u520w]
위 내용은 제가 제 PC에서 무선 공유기 router에 있는 web server에 web browser로 연결하면서 tcpdump가 준 출력 중에서 처음 5줄만을 보인것입니다. 그 5줄이 잘 구분되도록 하기 위하여, 매 줄마다 비어있는 줄을 하나씩 일부러 집어넣었습니다. client와 server가 TCP로 데이터를 주고 받으려면, 일단 통성명을 해야합니다. client와 server 사이에 연결을 하는 것이죠. 위 code에서는 위로부터 3개 줄이 이에 해당합니다. 연결이 되고 나면 데이터를 주고 받습니다. 위 code에서는 아래 2줄이 데이터 교환의 시작을 보여줍니다.
연결과정을 보면…
(1) 일단 client가 server에 연결 요청(syn)을 합니다. 위 첫 줄에 보이는 [b:1x8u520w]Flags [S][/b:1x8u520w]이 이에 해당합니다.
(2) server가 이 연결 요청을 받으면 연결 요청을 수락한다는 신호(ack)를 client에 보냅니다. 위 두번째 줄에 보이는 [b:1x8u520w]Flags [S.], seq 1233985748, ack[/b:1x8u520w]이 이에 해당합니다. [b:1x8u520w]ack[/b:1x8u520w]이라는 단어를 눈여겨 보세요.
(3) ack를 받은 client는 server의 수락 신호를 받았다는 신호를 server에 보냅니다. 위 세번쨰 줄에 있는 [b:1x8u520w]Flags [.], ack 1[/b:1x8u520w]이 이에 해당합니다.
학생의 경우, 장비 A가 TCP client이고, TCP 서버와 데이터를 교환하는 것이겠죠. 그런데 위 첫줄의 접속 요청만 있고, 두번째, 세번째 줄에 해당하는 handshake 과정이 보이지 않는다는 말이 되겠죠. 원인은 다양할 수 있겠죠. 서버 IP가 틀렸던지, port number가 틀렸던지, firewall에 의하여 막혀 있다던지, 혹은 하드웨어적 결함 등등… 원인은 찾아내셔야죠. 일단, 서버가 범용 컴퓨터이고, 다른 service (에 ftp, web, mail 등등)도 하는 것이라면, 그런 서비스 접속을 해서 서버의 하드웨어적 결함 가능성부터 점검하고, server와 client의 소프트웨어 (설정을 포함하여…)를 점검해야 할 듯합니다. 단, connection request는 나오는 것으로 보아 client의 하드웨어 결함 가능성은 낮아보이긴 합니다. 근데, 혹시 모르죠.[/quote:1x8u520w]