network

minseok·2024년 12월 9일
post-thumbnail

CURL

💬 설명
1. command line tool
2. http, https, ftp, sftp, scp,.. 모든 프로토콜 통신 지원
3. file upload, download 가능
4. 쿠키, 헤더 세팅 가능

💬 예시
curl -O [url] : 다운로드 파일
curl [url] : request (get)
curl -X POST -d "name=Jam&age=30"(body) [url] : request (post)
curl : curl -H "Authorization: Bearer " [url] : request (get, header)





WGET

  • 용량이 큰 파일 다운로드될 때 사용하면 좋음
  • 백그라운드 다운로드, 다운로드 재개, (HTTP, HTTPS, FTP) 프토로콜 지원





nslookup (name server lookup)

  1. dns 서비스와 연관된 명령어
  2. 도메인 주소를 통해 ip를 받고 싶을 때 사용 가능 (역방향도 가능)

dig (domain information groper)

  1. nslookup과 동일한 기능 (좀 더 최신 기능)
  2. nslookup보다 더 많이 사용한다.





ntp (network time protocol)

  • 네트워크로 구성된 환경에서 구동되는 시스템들의 시간을 동기화하기 위한 규약
  • ntpd 대신 chronyd를 많이 사용 (더 빠르고 가벼움)





ping

  • latency check
  • Internet Control Message Protocol(ICMP)를 사용
  • OSI 3 Layer 사용(ICMP)
  • 네트워크 연결, 이슈 체크
  • 패킷 유실 확인
  • option [t, i, c] 많이 확인

💬 예시

ping google.com을 하면 아래처럼 출력된다.

// 56byte + header = 8byte를 보낸다.
PING google.com (172.217.175.110) 56(84) bytes of data.
64 bytes from nrt20s21-in-f14.1e100.net (172.217.175.110): icmp_seq=1 ttl=116 time=34.2 ms
64 bytes from nrt20s21-in-f14.1e100.net (172.217.175.110): icmp_seq=2 ttl=116 time=33.8 ms
64 bytes from nrt20s21-in-f14.1e100.net (172.217.175.110): icmp_seq=3 ttl=116 time=33.5 ms
64 bytes from nrt20s21-in-f14.1e100.net (172.217.175.110): icmp_seq=4 ttl=116 time=33.8 ms

64 bytes : 패킷 64바이트를 보냈다.
nrt20s21-in-f14.1e100.net (172.217.175.110) : 목적지 host
icmp_seq=1 : ??
ttl=116 : titme to live
time=34.2 ms : round trip time





traceroute

  • source node -> destionation node 경로 체크
  • 네트워크 경로 확인
  • 한 번에 3개의 패킷을 보냄

💬 예시

???@??? / % traceroute google.com
traceroute to google.com (142.251.42.174), 64 hops max, 52 byte packets
 1  172.30.1.254 (172.30.1.254)  3.655 ms  3.302 ms  3.285 ms
 2  * * *
 3  125.141.249.32 (125.141.249.32)  11.016 ms  4.980 ms  4.469 ms
 4  * * *
 5  112.174.49.129 (112.174.49.129)  17.975 ms  11.406 ms
    112.174.49.117 (112.174.49.117)  10.221 ms
 6  112.174.84.10 (112.174.84.10)  11.182 ms
    112.174.84.38 (112.174.84.38)  11.270 ms
    112.174.84.26 (112.174.84.26)  10.698 ms
 7  142.250.165.78 (142.250.165.78)  31.433 ms  32.837 ms  32.795 ms
 8  192.178.108.209 (192.178.108.209)  38.743 ms
    216.239.59.149 (216.239.59.149)  37.627 ms
    108.170.238.53 (108.170.238.53)  37.253 ms
 9  74.125.251.236 (74.125.251.236)  35.598 ms
    108.170.235.102 (108.170.235.102)  36.257 ms
    216.239.57.162 (216.239.57.162)  36.323 ms
10  192.178.86.164 (192.178.86.164)  34.910 ms
    142.250.58.93 (142.250.58.93)  36.879 ms
    64.233.175.43 (64.233.175.43)  35.549 ms
11  nrt12s46-in-f14.1e100.net (142.251.42.174)  36.342 ms  35.615 ms  35.230 ms

💬 결과 분석
1. 첫 번째 열 : hop number
2. 두 번째 열 : ip 주소
3. 세 번째 열 : roun trip time

'*'가 나왔다면 패킷을 잃어버린 경우

netstat

  • 현재 노드의 네트워크 정보를 보여준다. (라우팅 테이블, 통계, 접속 정보...)

💬 use case

  • 현재 활성화된 네트워크 확인
  • 라우팅 테이블 확인
  • 패킷, 에러 확인
  • 현재 열린 포트 확인

💬 예시 1

netstat -tulnp를 입력한다.

* IPv6인 경우 :::로 표시될 수 있다.
  
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::9090                 :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -                   
udp        0      0 127.0.0.1:323           0.0.0.0:*                           -                   
udp6       0      0 ::1:323                 :::*                                -                   

💬 옵션 의미

t(tcp): tcp 연결
u(udp): udp 연결
l(listen): 연결 가능 상태
n(number port): ip, port를 숫자 포맷으로 노출
p(PID?): PID 노출

💬 결과 의미

Proto: 사용중인 프로토콜
Recv-Q: 얼마나 받았는지
Send-Q: 얼마나 보냈는지
Local Address: 현재 주소
Foregin Address: 연결된 주소
STATE: LISTEN, ESTABLSISHED, TIME_WAIT, CLOSE_WAIT
PID/Program name: PID


💬 예시 2

netstat -r 명령어 실행
  
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.30.1.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0

규칙1 : 첫번째행부터 시작하여 행단위로 한 행씩 차례대로 읽어서 처리할 패킷을 어디로 보낼것인가를 결정한다.

규칙2 : default라는 것은 시스템의 기본 게이트웨이 설정행을 의미하며 그 행의 Gateway항목값이 기본게이트웨이의 IP주소이다.그리고 default는 0.0.0.0를 의미한다.

규칙3 : 보낼 데이터(패킷)의 목적지IP주소와 Genmask값(SubnetMask)과의 AND연산을 해서 그 결과가 해당행의 Destination항목과 동일 할 경우에 해당행의 Iface항목에 있는 인터페이스로 해당 패킷을 보낸다.

규칙4 : Iface항목의 값이 lo인 행(Destination값이 127.0.0.0인 행)은 이 시스템의 루프백(loopback)데이터를 처리하기 위한 설정이다.
즉, 자기 자신에게로 데이터를 보낼 때에 처리를 담당하는 인터페이스이다.

그렇다면 192.168.2.101는 어디로?

profile
즐겁게 개발하기

0개의 댓글