본문 바로가기

통신 관련 지식/네트워크(Network)

[네트워크] 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.. 더보기
[네트워크] 소켓 동작 모드 * 소켓 동작 모드 * 블로킹 모드 (Blocking Mode) - 소캣을 처음 생성했을 때 Default모드 - 이 소켓에 대해 어떤 시스템 콜을 호출하였을 떄 네트워크 시스템 ( 즉, TCP/IP )이 동작을 완료할 때까지 그 시스템 콜에서 프로세스가 멈추어 있게 한다. - Block이 될 수 있는 소켓 시스템 콜은 Listen(), Connect(), Accept(), Recv(), Send(), Read(), Write(), Recvfrom(), Sendto(), Close()등이 있다. - 1:1 통신을 하거나 프로그램이 한 가지 작업만 하면 되는 경우는 Blocking 모드로 프로그램을 작성할 수 있다. * 논블로킹 모드 (Non-Blocking Mode) - 소켓 관련 시스템 콜에 대하여 네.. 더보기