네트워크/통신/상태 관련 명령어

박영준·2024년 8월 13일
0

IP Port Domain 방화벽
이 모두는 네트워크/통신과 관련되어 있다.

  • 언제 필요했나?
    • 기관에 요청한 필요한 서버를 전달하고, 해당 서버를 열어줬는지 확인할 때
    • 웹 페이지가 뜨지 않는데, 방화벽에 차단된 것이 원인인지 확인할 때
    • 해당 IP에 내가 원하는 도메인 명이 적용되었는지 확인할 때
    • ...

1. ping

LAN 선(망)을 연결한 후, 특정 웹사이트와의 연결이 정상적인지 확인하기 위해 사용했다.

연결이 되지 않았기에 다음과 같이 요청 시간이 만료되었습니다. 메시지를 반환받게 되었다.

1) 정의

  • "Packet Internet Groper" = "터넷 패킷을 더듬어 네트워크 상태를 진단한다."
    --> Ping Pong (탁구)를 생각하면 된다.

  • 지정한 대상에게 패킷을 전송(Ping)하고, 대상이 보내는 응답(Pong)을 분석

  • 유저가 사용하는 PC에서 서버로 정보를 보낸 뒤, 그 정보가 다시 유저의 PC로 되돌아오는 시간

    • 유저가 게임 상의 캐릭터를 움직이기 위해 방향키를 누르고, 실제로 캐릭터가 화면에서 움직이기까지의 시간 = Ping

2) 문법

ping [목적지 IP/도메인] [옵션]
  • port 없이, IP 만으로 진단하는 방식

  • 사용자가 옵션을 지정하지 않으면, ping 명령이 일반적으로 4~5개의 에코 요청

Port 를 사용하지 않는 이유?
목적지 IP/도메인으로 Packet을 전송하고, 대상이 보내는 응답을 분석하는 과정에서 ICMP 프로토콜을 사용하여 통신한다.

한 지점과 다른 지점이 ICMP 규칙(규약)을 이욯하여 소통하는데,
ICMP 는 Network 계층(OSI 7 계층의 3 계층)에 속하는 프로토콜이다.

따라서, 4 계층(전송(Transport) 계층)에서 사용하는 port 정보를 이용하지 않는다.
그래서 Ping 명령어는 Port 없이 IP 로만 진단이 가능하다.

3) 예시

예시 1. 로컬호스트(localhost) IP 에서 ping

예시 2. 도메인(domain) 에서 ping

예시 3. 옵션

# -t 옵션 : 기본 4회 수행 후, 반복적으로 수행
ping [주소(목적지)] -t
ping 127.0.0.1 -t

# -l 옵션 : 100 바이트 크기의 패킷을 전송
ping [주소(목적지)] -l [전송될패킷]
ping 127.0.0.1 -l 100 

# -n 옵션 : n회 만큼 수행
ping [주소(목적지)] -n [횟수]
ping 127.0.0.1 -n 6

# -a 옵션 : 기본 4회를 수행한 후, IP 확인 가능
ping [도메인] -a
ping 127.0.0.1 www.google.co.kr -a

# 중복 옵션 : 해당 도메인(www.google.co.kr)에 64바이트의 패킷을 6회 전송한다.
ping www.google.co.kr -n 6 l 64

처리결과
바이트 : 응답으로 수신된 바이트 수

TTL(Time To Live) : 데이터의 유효 기간 (라우터에서 라우터로 무한정 전달될 위험성을 막아서 패킷이 무한으로 순환하는 것을 막아 주는 역할)

패킷(보냄/받음/손실) : 성공적인 응답 여부

왕복시간 :

(패킷의) 손실률 : 인터넷의 연결 상태를 진단가능

2. telnet

1) 정의

  • ping : 요청을 보내고 받아서 분석하는 명령어
    telnet : 컴퓨터와 컴퓨터 사이를 연결하는 명령어

  • 원격지의 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜

2) 문법

telnet [목적지 IP/도메인] [목적지 Port]

telnet 명령어가 사용불가능하다면?

  • 데스크탑 : 윈도우 시작 > 설정 > 앱 > 프로그램 및 기능 > Windows 기능 켜기/끄기 > '텔넷 클라이언트 체크
  • 랩탑 : win+R > optionalfeautures 검색 > (이후 동일 진행)

보안을 위해 ssh

ssh [원격 사용자 ID]@[목적지 IP/도메인] -p [Port]
  • 원격지의 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜
  • telnet 의 보안 문제 때문에, ssh 를 사용하는 추세

3) 예시

정상적으로 연결되면 cmd 창에는 아무것도 뜨지 않음

예시 1. 구글 IP 에서 telnet
(ping www.google.com 으로 구글의 IP 를 확인할 수 있었음(142.250.206.196))

telnet 142.250.206.196 80

telnet 142.250.206.196 443

예시 2. 구글 도메인에서 telnet

telnet www.google.com 80

telnet www.google.com 443

3. curl

1) 정의

  • Endpoint에 HTTP 프로토콜을 이용하여 PUT/POST/... 요청을 보내고 그 결과를 확인하는 데에 활용

  • 언제 사용?

    • telnet 이 설치되어 있지 않은 경우
    • 보안상 telnet 사용이 불가능한 경우

2) 문법

curl [목적지 IP/도메인]
  • 디폴트는 GET 요청

3) 예시

cocktailpick 사이트에 get 요청 전송

4. nslookup

1) 정의

  • DNS 서버와 대화식으로 질의/응답 받음

  • 언제 사용?

    • 도메인 네임 시스템(DNS)으로부터 여러 정보를 얻고 싶은 경우
      • 도메인 네임 확인
      • IP 주소 매핑
      • ...

2) 문법

nslookup		# nslookup 프롬프트로 이동한 후에도 질의 가능

nslookup [목적지 IP/도메인]

nslookup [목적지 IP/도메인] [네임서버명/IP]

3) 예시

예시 1. 네임서버 IP 확인

168.126.63.1 이다.

예시 2. 네임서버를 통해, 특정 도메인(구글)의 IP 조회

예시 3. nslookup 프롬프트로 이동 후 질의(특정 도메인 조회)

예시 4. 전체 정보 조회

네임서버

= "DNS(Domain Name System) 서버"

  • 내가 원하는 특정 서버(네이버, 구글)에 접근하기 위해서는
    URL(www.naver.com, www.google.com = 도메인명)을 서버 컴퓨터의 IP 주소로 변환시켜서 사이트에 접속하는데, 이를 지원해주는 것이 네임 서버.
  • client 가 로컬 DNS 서버에 도메인을 알려주면, 로컬 DNS 서버는 해당 도메인에 맞는 IP 주소를 불러옴.
  • 위치 : 로컬C/Windows/System32/drivers/etc/host

    host 파일을 수정해서, URL을 매핑시켜놓고 테스트 가능.
    그러나, 규모가 커지면 DNS 서버를 이용해야함.
  • 네임서버 설정 파일 : /etc/resolv.conf
    • 설정된 네임서버 IP 수정 가능
  • 사용자가 URL 입력 시, IP 주소를 획득하는 과정
    1. 사용자가 URL 입력
    2. /etc/hosts 파일을 열어, 정보(URL, IP) 확인
    3. 없다면, /etc/resolv.conf 파일 열어, 정보(IP) 확인
    4. 해당 네임서버로 URL의 IP 주소를 질의함.

5. netstat

1) 정의

  • (Client 가 아닌) Server 단에서 통신 여부를 확인하는 명령어

  • 상태

    • 연결 기다리는 중(포트 열린 상태) : LISTEN
    • 서로 연결됨 : ESTABLISHED
    • 연결 끊어짐, 다음 연결 대기중 : TIME_WAIT
    • 연결 요청 받고, 연결 종료를 대기중 : CLOSE_WAIT
    • 완전히 연결이 종료 : CLOSED
    • 소켓의 상테를 알 수 없음 : UNKNOWN
    • ...

2) 문법

netstat [옵션]
  • -a :
  • -r :
  • -n :
  • -i :
  • -s :
  • -p :

3) 예시

예시 1. 모든 네트워크 확인

# 모든 네크워크 연결 확인
netstat -a

예시 2. 모든 네트워크의 IP와 Port 확인

netstat -an

예시 3. 특정 포트의 IP와 Port 확인

# 특정 포트가 사용 중인지 확인 (모든 네트워크의 Port 中 '포트번호')
netstat -an | grep 8080

예시 4. 연결가능한 TCP의 PID와 Program 확인

# 연결 가능한(= LISTIEN 상태의) TCP 프로토콜의 포트를 사용하는 프로세스ID(PID)와 프로그램
netstat -tlp

# 위의 해당 결과값을 1초마다 표시
netstat -tclp

예시 2. 연결가능한 TCP의 IP와 Port, PID와 Program 확인

# 연결 가능한(= LISTIEN 상태의) TCP 프로토콜의 포트와 프로그램을 보여줌
netstat -tnlp

# 위의 해당 결과값을 1초마다 표시
netstat -tcnlp

6. ps

1) 정의

  • "Process Status"

  • 시스템에서 현재 실행 중인 프로세스에 대한 정보 확인

2) 문법

ps -ef | grep [모듈명]
  • 해당 모듈이 가동중인지 확인할 때 사용

3) 예시

ps -ef | grep tomcat

ps -ef | grep alert

참고: health check에서 출발한 ping, telnet, curl 이야기
참고: nslookup 으로 도메인 ip 조회 하기
참고: [Linux] 네임 서버(DNS 서버)
참고: 리눅스 명령어(nslookup,ping,traceroute,netstat,arp,tcpdump)

profile
개발자로 거듭나기!

0개의 댓글