network state analyze (tcp,udp,ip,port)

dongmay·2024년 5월 24일

CS

목록 보기
5/5

netstat -a(network state) 명령어를 사용하면 현재 컴퓨터에서 활성화된 네트워크 연결 상태를 보여준다.

하나하나 뜯어서 살펴보자면,

proto : 사용중인 프로토콜을 나타낸다. 여기선 tcp,udp(아래 설명있음)가 정해짐.(IPv6라면 tcp6, udp6)

Recv-Q, Send-Q : 각각 수신큐,송신큐에 쌓여있는 데이터 양이다.
쌓여있는 데이터는 수신과정에서 아직 애플리케이션에 수신,송신 되지않은 데이터가 바이트 수로 측정이되는데 내컴퓨터에는 다행이 0으로 뜨니깐 데이터처리 상태가 원활하다고 보면됨. 버퍼링이나 애플리케이션의 처리 속도 문제가 의심된다면 저기서 수, 송신중에 데이터가 쌓여있는지 보면될것 같다.

Local Address: 연결의 로컬(자신의 컴퓨터) 주소와 포트 번호를 보여준다.

여기서 로컬주소는 내 컴퓨터의 IP주소 + port 를 합친것을 말함.

127.0.0.1은 자신의 컴퓨터를 가리키는 루프백 주소이고

192.168.2.119는 사설 IP 주소로, 외부 네트워크와 직접 통신할 수 없는 주소를 말한다.

근데 오른쪽 네트워크상태창을 보면 192.168.2.119는 쭉같은데 위쪽에는 port 번호도 틀린게있고 IP주소가 1과 53두개로 또 쪼개지는데….

뒤에 1로 끝나는 루프백주소는 IPv4에서 로컬컴퓨터를 가리키는 표준 주소이고 이것을 흔히 들어봤던 localhost라고 한다. localhost는 외부 네트워크랑 통신하지않고 로컬시스템내부에서만 동작한다.

53으로 끝나는 루프백주소는 일부 Linux배포판 (거의 Ubuntu이긴함) 에서 DNS캐시 서비스를 위해 사용되는 특수 루프백 주소이다. 이주소는 systemd-resolved나 dnsmasq와 같은 로컬 DNS캐시 서비스에 의해 사용되는데 로컬DNS캐시 서비스는 DNS 쿼리를 가로채서 최적화하고 도메인 이름 확인속도를 향상시킨다. 그래서 127.0.0.53은 DNS캐시 서비스를 위해 특별히 할당된 주소라고 생각하면된다.

포트번호에 631, 6379이렇게 있는건 631은 인쇄서버 소프트웨어 고정 포트번호고 6379는 redis 기본포트이다. 클라이언트는 6379포트를 통해서 redis서버에 연결하고 데이터를 읽거나 쓸수있는것이다. 근데 필요에따라 변경도 가능하다. 예를들어서 동일한 시스템에서 redis를 여러개 실행해야된다면 다른 서비스와 충돌을 피하기위해 변경해야할 상황이 발생할수도 있다는거다.(redis.config에서 바꾸면됨) 내 터미널에선 redis port가 6379로 나오지않는데,

sudo systemctl status redis

그럴땐 이렇게 지정해서 확인해보자.

Foreign Address: 연결된 상대방(원격지)의 주소와 포트 번호를 나타냄

지금 내 상태창을 보면 처음 3개는 0.0.0.0 에다가 뒤에 *표시가 있는데 이는 모든 상대주소와 포트에 대해서 연결받겠다는 거고 뒤에 Listen이라고 state 연결상태가 있으니 모든 주소에대한 연결요청을 기다린다고 보면되겠다.

State: 연결 상태를 나타내며, LISTEN, ESTABLISHED, TIME_WAIT, CLOSE_WAIT 등의 값을 가진다.

  • LISTEN: 연결 요청을 기다리는 상태
  • ESTABLISHED: 연결이 수립되어 데이터 통신이 가능한 상태
  • TIME_WAIT: 연결이 종료된 후 일정 시간 동안 유지되는 상태
  • CLOSE_WAIT: 원격지에서 연결 종료 요청을 받고 응답을 기다리는 상태

이런식으로 코드를 내리면서 한줄한줄 IP와 port 그리고 연결상태를 확인하면된다.

제일 첫번째오는 값 tcp, udp 가있는데 데이터를 주고받는 규칙이라고 생각하면된다. 대화를 할때 지켜야 할 예절이 있듯이 컴퓨터도 데이터를 주고받을 때 지켜야할 규칙이 있다. 이걸 우리는 프로토콜이라하고 tcp,udp도 그중 하나이다.

이 둘은 택배 회사처럼 데이터를 포장해서 보내는 역할을 한다.

TCP

  • 연결지향적 프로토콜이다. 통신을 시작하기 전에 연결을 수립하는 과정을 거치고 데이터 전송의 신뢰성을 보장하려고 데이터 순서를 지키고, 손실된 패킷도 재전송한다. 딱봐도 파일이나 브라우저, 메일 전송 같은것에 사용되야할것 같다. 게임에선 tcp로 데이터전송이 느려터져서 진행이 안될듯.
  • 택배회사로 비유하자면 믿을수있는 택배회사이다. 느릴수있지만 택배(데이터) 를 받는 순서, 택배를 놓는 위치, 잘도착했는지, 누락되지않았는지 다 확인을 하는것이다.

    UDP
  • 비연결형 프로토콜이다. 연결 수립과정 없이 바로 데이터를 전송하고 tcp와 반대로 데이터순서,손실을 보장하지않아서 전송이 빠르다. 그래서 실시간 스트리밍, 온라인 게임 처럼 빠른 속도가 중요한 서비스에서 사용된다.
  • tcp와 같은비유로 중국의 알리익스프레스, 테무의 운송시스템처럼 데이터를 빨리만 보내는데에 집중해서 받는사람이 누군지 보지도않고 대충 던지는 식이다.
profile
Dongmay_engawa

0개의 댓글