1 minute read

net tools : netstat - 옛날 것!

  • netstatss
  • netstat -rip route
  • netstat -iip -s link
  • netstat -gip maddr 로 대체 되었다.

TCP state trancsiton & function call

[no-alignment]

  • 흰색 실선으로 되어있는것은 실제 C언어 펑션. 점선은 TCP state
  • 서버가 작동을 시작하면 listen()을 불러서 상태가 LISTEN으로 변한다. 대문자로 적은게 모두 상태이다.
  • 클라이언트 쪽에서는 connect()라는 함수를 불러서 접속을 시도한다. 그럴때 서버 측에다가 보내는 패킷애 플래그 값이 있는데 이 패킷의 flag 값이 SYN 은 싱크로 나이즈라고 부른다.
  • 그래서 sync 패킷을 서버 쪽으로 보낸다.
  • 보냈으니까 싱크를 보냈다라는 의미의 SYNC_SENT로 상태가 변한다.
  • 그리고 받은 측에서는 받았다고 SYNC_RCVD로 변한다.
  • 3-hand shake 이후에는 양측 다 ESTABLISHED 로 변한다.
  • 연결을 끊을 때는 close 작업을 한다. 누가 먼저 끊나!, 대부분 클라이언트가 먼저 끊다.
    • 먼저 끊는 애가 active close , 끊김을 당하는가 passive close
  • active claseFIN을 날린다.
    • FIN_WAIT1 : ACK 를 받는다.
    • FIN_WAIT2 : passive close에서 close()를 통해 FIN 을 받는다.
  • TCP 패킷 규칙
    1. 모든 패킷은 받은 패킷을 잘 받았다는 확인(ACK)를 해줘야한다.
    2. 제어 패킷(연결 , 연결해제)은 항상 echo를 해줘야한다.
  • ss -nt : n은 서버 주소나, 포트번호를 모두 숫자로 보여달라. t는 TCP 만 보여달라
  • ss -ntm : m 은 추가적으로 메모리를 보여달라.
  • ss state established : tcp state 가 연결된것 ESTABLSHED 인것만 보겠다.
  • ss -nt state close-wait state fin-wait-2 : 시스템에 문제(close wait , fin-wait)가 생겼는지 확인
  • watch -d -n 1 ss -nt state close-wait state fin-wait-2 : watch는 계속적으로 살펴봐준다. 한번 크롬을 켜보자. 1은 1초마다 실행해라.

  • ping : 상대 호스트의 응답확인 ( 호스트의 존재 여부 확인)

      ping -c 3 192.168.0.1
    
  • traceroute : 패킷의 도달 경로 확인

      traceroute -n 63.99.207.68
    
  • arp -s <MAC addr> <IP addr> : ARP 테이블 ,IP와 MAC 주소의 매칭 테이블

  • 유명한 네임서버는 몇개 알아두자
    • 1.1.1.1 : Cloudflare DNS
    • 208.67.222.222 , 208.67.200.200 : CISCO openDNS
    • 8.8.8.8 : google DNS

Categories:

Updated: