로컬호스트의 포트 상태를 알아내는 간단한 프로그램을 만들어 보려고 합니다. netstat 소스를 분석중이긴 한데 오랜만에 코딩을 해서인지, 마음만 급하고 봐도 잘 모르겠습니다. LISTEN, ESTABLISHED, CLOSED 상태를 구분하려면 어떤식으로 해야되는지 중요한 함수나 원리라도 알려주셨으면 좋겠습니다. 그럼...
1) # more /proc/net/tcp .... 음 쿵~
2) # vi netstat.c ... num = sscanf(line, "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n", &d, local_addr, &local_port, rem_addr, &rem_port, &state, &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more); ... 음 쿵~ ... enum { TCP_ESTABLISHED = 1, TCP_SYN_SENT, TCP_SYN_RECV, TCP_FIN_WAIT1, TCP_FIN_WAIT2, TCP_TIME_WAIT, TCP_CLOSE, TCP_CLOSE_WAIT, TCP_LAST_ACK, TCP_LISTEN, 음 0A면 10이니까,..이거군 TCP_CLOSING /* now a valid state */ }; ... 음 쿵~
텍스트 포맷에 대한 자세한 정보
<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]
1) # more /proc/net/tcp....음 쿵~2
1) # more /proc/net/tcp
....
음 쿵~
2) # vi netstat.c
...
num = sscanf(line,
"%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n",
&d, local_addr, &local_port, rem_addr, &rem_port, &state,
&txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more);
...
음 쿵~
...
enum {
TCP_ESTABLISHED = 1,
TCP_SYN_SENT,
TCP_SYN_RECV,
TCP_FIN_WAIT1,
TCP_FIN_WAIT2,
TCP_TIME_WAIT,
TCP_CLOSE,
TCP_CLOSE_WAIT,
TCP_LAST_ACK,
TCP_LISTEN, 음 0A면 10이니까,..이거군
TCP_CLOSING /* now a valid state */
};
...
음 쿵~
댓글 달기