본문 바로가기

통신 관련 지식

[네트워크] tcpdump 사용법 * tcpdump 사용법 1. 기본 사용법 : tcpdump -i eth0 특정 ethernet(eth0) 으로 송수신 되는 데이터 패킷을 덤프하여 확인 ex) tcpdump -i eth2:1 -v port 18720 2. tcpdump 후 wireshark를 통한 분석 방법 : eth0 인터페이스에 대해서 80번 포트로 이동하는 패킷을 캡쳐하고, 캡쳐한 정보를 파일로 저장하는 예이다. # tcpdump -i eth0 port 80 -w tcp_80_eth0.dmp -s 1024i : tcpdump 할 이더넷명port : tcpdump 할 포트w : tcpdump 로 만들 파일명s : tcpdump 할 data 패킷 사이즈 wireshark로 이 파일을 읽어서 분석하는 방법이다. wireshark로 읽은.. 더보기
[네트워크] TCP 소켓 프로그래밍 주의사항 TCP/IP 소켓 프로그래밍을 하다보면 초보자는 물론이고 중급이상의 숙련된 프로그래머도 실수하는 경우가 많다. 초급자는 경험이 없어서 실수하고, 중급자는 까먹어서 실수한다. 최근에는 미들웨어나 각종 통신 관련 라이브러리가 많아서 직접 TCP/IP 소켓 프로그래밍을 하는 경우는 줄어들고 있지만, 그렇다고 아예 없어지는 것은 아니니 주의할 점을 한 번 정도는 읽어두면 좋다. * 목차 1. TCP 소켓의 연결 종료가 감지되면 꼭 close를 해야만 한다. 2. SIGPIPE 시그널 처리 3. 재전송 1. TCP 소켓의 연결 종료가 감지되면 꼭 close를 해야만 한다. TCP 소켓은 1:1 스트림 연결이기 때문에 상대편이 소켓 연결을 종료하면 이쪽도 같이 종료해야 한다. 자동으로 닫히는 것이 아니므로 꼭 닫아.. 더보기
[네트워크] TCP 연결/종료 과정 * TCP 연결 단계 (RFC 793) TCP A TCP B 1. CLOSED LISTEN 2. SYN-SENT --> --> SYN-RECEIVED 3. ESTABLISHED --> ESTABLISHED 5. ESTABLISHED --> --> ESTABLISHED - LISTEN : 데몬이 요청을 발을 수 있도록 연결 요구를 기다리는 상태. 즉, http(80), mail(25), ftp(21), telnet(23) 등의 포트가 열려있음을 의미. 윈도우즈에서는 LISTENING으로 표시. - SYN.. 더보기
[네트워크] TCP TIME_WAIT 설정 * TCP TIME_WAIT 설정 - 리눅스(Linux) # /etc/rc.local 또는 /etc/sysctl.conf 에 다음 추가 net.ipv4.ip_local_port_range = 16384 65535 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 # sysctl -p - 솔라리스(Solaris) # ndd -set /dev/tcp tcp_time_wait_interval 30000 # export EVENT_NOEVPORT=1 [참고] 30000 값의 단위는 밀리초이다. - 윈도우(Window) C:\>edit tcptimewait.reg [HKEY_LOCAL_MACHINE\SYSTEM\C.. 더보기
[네트워크] TCP 연결 상태 용어 * TCP 상태별 정의 - ESTABLISHED : 3단계 핸드쉐이킹 후 연결 성립 - SYN_SENT : 원격 호스트에 능동적인 개설 요청(능동적 열기) - SYN_RECV : 네트워크 통한 연결요청 받음(수동적 열기) - FIN_WAIT1 : 능동적 닫기(active close) 요청을 한 상태 - FIN_WAIT2 : 로컬에서 종결(FIN)세그먼트를 전송하였고 원격 시스템에서 이에 대한 확인메시지를 수신하였지만, 원격 애플리케이션이 작업을 종료하지 않아 원격 호스트의 종결 세그먼트를 기다리는 상태 - TIME_WAIT : 회선의 종결 절차가 완료되었지만 분실되었을지 모르는 느린 세그먼트를 위해 소켓을 열어 놓고 유지하고 있는 상태 - CLOSED : 회선이 종결되고 모든 자원을 해제한 상태 - CL.. 더보기
[네트워크 보안] 솔라리스 /etc/hosts.allow 설정 * /etc/hosts.allow 설정 : /etc/hosts.deny 파일과 함께 시스템적인 차단을 위한 설정 파일이다. : 이를 사용하기 위해서는 기본적으로 /etc/hosts.deny 파일에서 ALL:ALL 로 접속을 모두 차단해둔다. * /etc/hosts.allow, /etc/hosts.deny 설정 방법 : [접속허용 프로세스] : [허용 IP] ex) sshd, vsftpd, sendmail, pop, saslauthd : 111.111.111.111 ex) ALL: 111.111.111.111 [참고] /etc/hosts.deny 파일은 접속을 차단하는 설정 파일이라면, /etc/hosts.allow 는 접속을 허용하는 설정 파일이라고 생각하면 된다. 더보기
[네트워크 보안] ROUTE 테이블에 IP 추가 방법 * ROUTE 테이블에 IP 추가 방법 * 개요 서버에서 신규 IP 연동과 관련해서 보안 정책상으로 ROUTE 에 대한 방화벽 설정을 해줄 수 있습니다. 해당 ROUTE에 IP가 추가되어 있지 않을 경우, 접근할 수 없도록 되어 있습니다. 해당 ROUTE에 IP를 추가하는 방법에 대해 알아보도록 합시다~! * 현재 route add를 통해 바로 적용: 명령어 : route add ex) route add 123.123.123.0 123.123.123.1 * 서버 재기동 시 route에 추가 적용 될 수 있도록 적용: 특정 route 파일을 기동 시 해당 ip를 적용 시킬 수 있도록 파일에 정보를 담고 있습니다. ex) /etc/rc2.d/S99staticroute 해당 파일에 들어가서 위의 route a.. 더보기
[네트워크] 소켓 동작 모드 * 소켓 동작 모드 * 블로킹 모드 (Blocking Mode) - 소캣을 처음 생성했을 때 Default모드 - 이 소켓에 대해 어떤 시스템 콜을 호출하였을 떄 네트워크 시스템 ( 즉, TCP/IP )이 동작을 완료할 때까지 그 시스템 콜에서 프로세스가 멈추어 있게 한다. - Block이 될 수 있는 소켓 시스템 콜은 Listen(), Connect(), Accept(), Recv(), Send(), Read(), Write(), Recvfrom(), Sendto(), Close()등이 있다. - 1:1 통신을 하거나 프로그램이 한 가지 작업만 하면 되는 경우는 Blocking 모드로 프로그램을 작성할 수 있다. * 논블로킹 모드 (Non-Blocking Mode) - 소켓 관련 시스템 콜에 대하여 네.. 더보기