ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
netstat ÇÁ·Î±×·¥Àº ³×Æ®¿öÅ© ¿¬°á, ¶ó¿ìÆÃÅ×À̺í, ÀÎÅÍÆäÀ̽º »óÅÂ, ¸ÖƼÄɽºÆ® ¸â¹öµî ´Ù¾çÇÑ Á¤º¸¸¦ º¸¿©ÁØ´Ù. ³×Æ®¿öÅ© ¿¬°á Á¤º¸ÀÇ °æ¿ì¿¡µµ INET TCP ¿¬°á »Ó¸¸ ¾Æ´Ï¶ó Unix Domain ¼ÒÄÏÀÌ »ç¿ëÇÏ´Â ¿¬°áµµ º¸¿©ÁØ´Ù.
¿©±â¿¡¼´Â ³×Æ®¿öÅ© ¿¬°á Á¤º¸Áß TCP Á¤º¸¸¦ °¡Á®¿À´Â ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. netstat ÇÁ·Î±×·¥À» ÀÌ¿ëÇÒ °æ¿ì -t ¿É¼ÇÀ» ÀÌ¿ëÇϸé tcp ¿¬°áÁ¤º¸¸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Ù.
# netstat -t Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 joinc:http 222.122.194.224:4936 ESTABLISHED tcp 0 0 joinc:http lj602145.inktomis:60739 TIME_WAIT tcp 0 0 joinc:ssh dhcp-ippool24.onn:52070 ESTABLISHED tcp 0 0 joinc:http 202.179.183.71:43503 TIME_WAIT tcp 0 0 joinc:http lj602348.inktomis:50637 TIME_WAIT tcp 0 0 joinc:http 222.122.194.31:36932 ESTABLISHED tcp 0 0 localhost:56988 localhost:http TIME_WAIT tcp 0 0 localhost:56989 localhost:http TIME_WAIT ...
¸®´ª½º ¿î¿µÃ¼Á¦´Â /proc ÆÄÀϽýºÅÛÀ» ÀÌ¿ëÇØ¼ À¯Àú¿¡°Ô tcpÁ¤º¸¸¦ Á¦°øÇÑ´Ù. tcp ¿¬°áÁ¤º¸´Â /proc/net/tcp ÆÄÀÏ¿¡ ASCII ÇüÅ·ΠÀúÀåµÇ¾î ÀÖ´Ù.
# cat /proc/net/tcp sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 0100007F:A320 00000000:0000 0A 00000000:00000000 00:00000000 00000000 105 0 10199 1 dd071c00 3000 0 0 2 -1 1: 0100007F:B8EF 00000000:0000 0A 00000000:00000000 00:00000000 00000000 105 0 10210 1 dd071800 3000 0 0 2 -1 2: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 10292 1 de477c00 3000 0 0 2 -1 3: 85D5E5CB:B44C 266E2ECF:0747 01 00000000:00000000 00:00000000 00000000 1001 0 61497 1 c978cc00 350 40 22 2 100 4: 85D5E5CB:CB66 5713EADA:0016 01 00000000:00000000 02:000886F8 00000000 1001 0 70721 2 cb642800 211 59 26 3 100 5: 85D5E5CB:C713 5713EADA:0016 01 00000000:00000000 02:0007A91B 00000000 1001 0 66949 2 cc6d7400 205 40 30 3 100 6: 0100007F:A320 0100007F:B812 01 00000000:00000000 00:00000000 00000000 105 0 10202 1 dd071000 201 0 0 2 100 7: 0100007F:B812 0100007F:A320 01 00000000:00000000 00:00000000 00000000 105 0 10216 1 dd071400 201 0 0 2 100 8: 85D5E5CB:ABE2 521B2ECF:0747 01 00000000:00000000 00:00000000 00000000 1001 0 62217 1 cc6d7800 545 40 8 2 100 9: 85D5E5CB:DEC3 F73D75D3:1A0B 01 00000000:00000000 02:0002A4C1 00000000 1001 0 21080 2 de477800 277 40 30 2 100°¢ Çʵå´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ °¡Áø´Ù.
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,
TCP_CLOSING /* now a valid state */
};
½ÇÇàµÇ´Âµ¥ ¹®Á¦ ¾ø´Â Á¤µµ·Î¸¸ ¸¸µé¾úÀ¸´Ï, ´Ùµë´Â°Ç °¢ÀÚ..
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <pwd.h>
const char *TCPFILE = "/proc/net/tcp";
const char *FORMAT ="%s%s%s%s%s%s%s%s%s%s";
static char states[16][20] = { "UNKNOWN" ,"ESTABLISHED", "SYN_SENT", "SYN_RECV", "FIN_WAIT1", "FIN_WAIT2", "TIME_WAIT", "CLOSE",
"CLOSE_WAIT", "LAST_ACK", "LISTEN", "CLOSING", "MAX_STATES"};
struct netinfo
{
FILE *tcpfp;
char localaddr[24];
char localport[16];
char remaddr[24];
char remport[16];
char stat[16];
int txq;
int rxq;
int uid;
int idx;
char uname[24];
};
typedef struct netinfo TCPINFO;
TCPINFO *nsopen()
{
TCPINFO *ltcpinfo;
if(access(TCPFILE,F_OK) !=0)
{
perror("ACCESS Error");
return (TCPINFO *)NULL;
}
ltcpinfo = (TCPINFO *)malloc(sizeof(*ltcpinfo));
memset((void *)ltcpinfo, 0x00, sizeof(*ltcpinfo));
ltcpinfo->tcpfp = NULL;
ltcpinfo->tcpfp = fopen(TCPFILE, "r");
if (ltcpinfo == NULL)
{
perror("ACCESS Error");
free(ltcpinfo);
return (TCPINFO *)NULL;
}
ltcpinfo->uid = -1;
ltcpinfo->idx = 0;
return ltcpinfo;
}
void nsclose(TCPINFO *tf)
{
if (tf->tcpfp == NULL)
fclose(tf->tcpfp);
free(tf);
}
char *getuname(char *uname, int uid, int size)
{
struct passwd *pass_info = NULL;
while((pass_info = getpwent()) != NULL)
{
if (pass_info->pw_uid == uid)
{
strncpy(uname, pass_info->pw_name, size);
return uname;
}
}
return (char *)NULL;
}
TCPINFO *nsread(TCPINFO *info)
{
char buf[256];
char *tr;
char null[16];
char localaddr[24];
char remaddr[24];
char st[4];
char trxqueue[20];
char uid[8];
char uname[36] = {0x00,};
int fnum;
int snum;
struct in_addr in;
char *addr;
if (info->idx == 0)
{
if (fgets(buf, 256, info->tcpfp) == NULL)
{
return (TCPINFO *)NULL;
}
info->idx=1;
}
if (fgets(buf, 256, info->tcpfp) == NULL)
return (TCPINFO *)NULL;
// sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
// 0: 0100007F:A56F 00000000:0000 0A 00000000:00000000 00:00000000 00000000 105 0 10282 1 c34a1c00 3000 0 0 2 -1
sscanf(buf,"%s %s %s %s %s %s %s %s %s %s",
null, // sl : ¹Ì »ç¿ë
localaddr, // local_address
remaddr, // rem_address
st, // status
trxqueue, // tx_queue & rx_queue
null, // tr & tm->when : ¹Ì »ç¿ë
null, // retrnsmt : ¹Ì»ç¿ë
uid, // uid
null, // timeout : ¹Ì»ç¿ë
null); // inde : ¹Ì»ç¿ë
// get localaddr
sscanf(localaddr, "%x%[:]%x", &fnum, null, &snum);
in.s_addr = fnum;
addr = inet_ntoa(in);
sprintf(info->localaddr, "%s", addr);
sprintf(info->localport, "%d", snum);
// get remaddr
sscanf(remaddr, "%x%[:]%x", &fnum, null, &snum);
in.s_addr = fnum;
addr = inet_ntoa(in);
sprintf(info->remaddr, "%s", addr);
sprintf(info->remport, "%d", snum);
// Status
sscanf(st, "%x", &fnum);
sprintf(info->stat,"%s", states[fnum]);
// User Infomation
if (getuname(uname, atoi(uid), 32) == NULL)
{
sprintf(info->uname,"%s", "");
}
else
sprintf(info->uname,"%s", uname);
info->uid = atoi(uid);
return info;
}
int main(int argc, char **argv)
{
TCPINFO *tf;
tf = nsopen();
while (nsread(tf) != (TCPINFO *)NULL)
{
printf("%s:%s ---> %s:%s\t%s\t%s\n", tf->localaddr, tf->localport,
tf->remaddr, tf->remport, tf->stat, tf->uname);
}
nsclose(tf);
}
´ÙÀ½Àº ½ÇÇà °á°ú´Ù.# ./mynetstat 127.0.0.1:37382 ---> 0.0.0.0:0 CLOSING hplip 127.0.0.1:34641 ---> 0.0.0.0:0 CLOSING 127.0.0.1:631 ---> 0.0.0.0:0 CLOSING 203.229.213.133:39600 ---> 207.46.27.62:1863 SYN_SENT 203.229.213.133:33609 ---> 203.229.213.91:22 SYN_SENT 203.229.213.133:44665 ---> 65.54.228.33:1863 SYN_SENT 203.229.213.133:45402 ---> 211.117.61.247:6667 SYN_SENT 203.229.213.133:50398 ---> 207.46.26.112:1863 SYN_SENT 203.229.213.133:37614 ---> 207.46.26.162:1863 SYN_SENT 203.229.213.133:48312 ---> 207.46.111.89:1863 SYN_SENT 127.0.0.1:43480 ---> 127.0.0.1:34641 SYN_SENT 127.0.0.1:34641 ---> 127.0.0.1:43480 SYN_SENT |
|
||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|