💬 설명
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)
💬 예시
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 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
'*'가 나왔다면 패킷을 잃어버린 경우
💬 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는 어디로?