728x90
반응형
curl
- url을 통해 데이터를 전송하거나, 받을 때 시용되는 명령어
- 주로 HTTP. HTTPS, FTP 등 다양한 프로토콜을 지원하여 웹 요청을 주고 받는데 사용한다.
-
//설치 sudo apt update sudo apt install curl //버전 확인 curl -V //전체 명령어 curl --help all //기본적인 도움말 curl --help
//기본 문법 curl [option] [URL] //HTTP GET 요청 보내기 curl "<http://www.naver.com> curl -X GET <https://www.google.com/> //GET 요청 시 헤더만 보기. 서버가 응답하는지 확인 시 사용 curl -I "<http://www.naver.com> //POST 요청 보내기 curl -X POST -d "username=admin&password=12345" <https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/> //POST 를 사용해 서버의 JSON 데이터 {"a":"1"} 를 전송 curl -X POST "<http://www.naver.com>" -H "Content-Type: application/json" -d '{"a": "1"}' //POST를 사용해 ./temp/a.jspn 파일의 내용을 서버에 전송 //PUT curl -X PUT file.txt https:sfddsf.com //DELETE curl -X DELETE <https://sdfsa.com> //파일 다운로드 curl -O http://"<http://www.naver.com> //파일 업로드 curl -T file.txt //헤더 포함 요청 보내기 curl -H "Authorization: Bearer " <https://naver.com> //리디렉션 처리 curl -L <https://naver.com>
netstat
- 네트워크 연결 상태 확인, 네트워크 인터페이스 정보를 조회하는 명령어
- 주로 TCP/UDP 연결 상태. 포트 사용 현황, 라우팅 테이블 조회 등 을 확인 하는데 사용.
//기본 문법 netstat [option] //모든 네트워크 연결 보기 netstat -a //활성 연결 및 상태 보기 //t: tcp, u:udp, l: 수신 대기 상태인 소켓만 보기 // n: ip주소와 포트 번호를 숫자 형태로 출력 (호스트 이름 해석하지 않음) netstat -tuln //특정 포트에 대한 연결 상태 확인 netstat -an | grep :323 //프로세스 id와 연결된 포트 보기 //p: 해당 연결을 사용 중인 프로세스 PID화 함께 표시. 프로그램 이름도 출력 netstat -tulnp //네트워크 인터페이스 정보 netstat -i //라우팅 테이블 확인 netstat -r //-antp : 시스템에서 현재 활성화된 네트워크 연결 상태를 표시하는 명령어 // -a: 모든 연결과 리스닝 소켓을 표시. 연결상태와 연결 대기 모두 보여준다 // -n: 숫자 형식으로 출력. 호스트, 서비스 이름을 해석하지 않고 ip 주소와 포트 번호를 숫자 형태로 출력 // -t: tcp 연결만 표시한다. // -p: 연결된 프로세스 PID를 표시한다. netstat -antp Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
- Recv-Q: 수신 대기 큐 (받을 데이터) 가 얼마나 있는지 나타냄.
- send-Q: 송신 대기 큐(보낼 데이터) 가 얼마나 있는지 나타낸다.
- Local Address: 로컬 시스템 IP 주소와 포트 번호. 모든 53번 포트를 리스닝 하고 있다는 뜻.
- Foerign address: 원격 시스템의 IP주소와 포트 번호. 0.0.0.0:*는 연결된 원격 시스템의 IP 와 포트이다.
- State: 연결된 상태를 나타낸다. Listen = 포트 대기 상태.
- PID: 해당 연결을 사용하고 있는 PID와 이름.
TCP 상태값 (State 값)
- SYN, ACK?
- SYN: Synchronize
- TCP 3 way handshakes 과정에서 사용되는 플래그
- syn → syn-ack →ack
- syn: 연결을 시작하는 요청을 나타내는 플래그.
- syn-ack: 서버가 연결을 수락하는 응답을 기다리는 플래그.
- ack: 클라이언트와 서버 간의 연결을 확인하거나, 데이터가 잘 전달되었음을 확인하는 응답을 나타내는 플래그.
- 이 과정을 통해 연결이 확립, 데이터 전송이 시작된다.
- TCP 3 way handshakes 과정에서 사용되는 플래그
- SYN: Synchronize
- LISTEN: 리스닝
- 서버 측에서 설명을 기다리는 상태. 포트가 외부의 연결을 수신할 준비가 되어 있음을 나타낸다.
- ex) 서비스가 특정 포트에서 연결을 기다리고 있을 때( 서버가 80번 포트에서 연결을 기다리는 상태)
- 상황: 대기 상태
- SYN_SENT: Synchronize 전송 대기. TCP 연결을 위한 플래그
- 클라이언트가 SYN 패킷을 보내고, 서버의 응답을 기다리는 상태.
- ex) 클라이언트가 서버에 연결 요청을 보내고, 서버가 이를 받았다는 응답을 기다리는 상태.
- 상황: 연결 설정을 위한 초기 단계
- SYN_RECEIVED: SYN 수신대기
- 서버가 SYN 패킷을 받았고, SYN+ACK 응답을 받은 상태.
- ex) 서버가 클라이언트의 연결 요청을 수락. 연결을 확립하기 위해 ACK를 기다리는 상태.
- 상황: 연결 설정을 위한 두 번째 단계
- ESTABLISHED : 연결 확립
- 연결이 완전히 설정된 상태. 클라이언트와 서버 모두 데이터를 송수신할 수 있는 상태.
- ex) 클라이언트와 서버가 데이터 통신을 하고 있는 상태
- 연결이 성공적으로 설정되어 데이터 전송이 가능한 상태
- FIN_WAIT_1: 종료대기 1
- 한 쪽이 연결 종료를 보낸 상태.
- ex) 클라이언트가 FIN 패킷을 보내고, 서버의 종료 응답을 기다리는 상태
- 연결 종료를 시작한 단계
- FIN_WAIT_2: 종료대기 2
- 한 쪽이 FIN 상태를 보내고, 상대방이 그 패킷을 확인한 후 응답을 보낸 상태
- ex) 서버가 클라이언트의 종료 요청을 받고, 응답을 보내면서 FIN_WAIT_2 상태로 넘어가는 경우
- 상황: 종료 대기 상태, 상대방의 종료 요청을 기다리는 상태
- CLOSE_WAIT : 종료대기
- 상대방이 연결 종료 요청을 보낸 상태.
- 상대방이 종료 요청을 보냈고, 현재 해당 요청에 대한 응답을 기다리면서 종료를 준비하는 상태
- 서버가 클라이언트의 종료 요청을 받고, 응답을 기다리는 상황
- 상황: 종료 대기 상태
- CLOSING: 종료 중
- 양쪽이 연결 종료를 동시에 시도하고 있는 상태. FIN 패킷을 양측이 동시에 보낸 상태에서 나타난다.
- 상황: 종료 중, 양쪽 모두 종료 요청을 보내는 상태.
- LAST_ACK: 최종 확인 대기
- 종료 요청을 한 쪽에서 종료 응답을 기다리는 상태. 상대방이 종료 패킷을 보내면 이를 확인하고 연결을 종료한다.
- 클라이언트가 연결 종료를 요청하고, 서버의 FIN 패킷을 보낸 후 마지막 ACK 를 기다리는 상태.
- 상황: 종료를 마무리하는 단계에서의 대기 상대
- TIME_WAIT: 시간 대기
- 연결 종료 후, 잠시 동안 기다리는 상태. 이 상태에서는 상대방이 마지막 ACK 패킷을 수신했는지 확인, 포트를 다시 사용하기까지 일정 시간 대기
- 클라이언트가 종료 패킷을 보낸 후, 마지막 ACK 를 기다리고 있는 상태
- 상황: 종료가 완전히 이뤄진 후, 시스템이 잠시 동안 종료 상태를 유지하는 단계.
- CLOSED: 종료됨
- 연결이 완전히 종료된 상태. 더 이상 연결 할 수 없으며, 모든 자원 해지
curl, netstat 활용 시나리오
// 1.curl 사용해 서버가 응답하는지 확인
curl -I <https://example.com>
// 2. 특정 포트에서 서버가 수신 대기 중인지 확인
netstat -tuln | grep :80
//3. 웹서버가 응답하는 http 코드 확인
curl -I <https://naver.com>
//4. 연결된 포트와 PID 확인
netstat -tulnp
728x90
'기타' 카테고리의 다른 글
vim - 텍스트 편집기 (1) | 2025.02.23 |
---|---|
linux - 명령어 (0) | 2025.02.23 |
linux - 명령어 실행 시 조회 순서, 명령어에 경로가 포함된 경우 실행 차 (0) | 2025.02.23 |
linux 리눅스 권한, 명령어 (0) | 2025.02.19 |
Elastic search? (0) | 2025.02.17 |