프로그래밍 공부
작성일
2022. 12. 4. 14:32
작성자
WDmil
728x90

네트워크의 기초

TCP/IP 프로토콜

  • 프로토콜이란 컴퓨터와 컴퓨터 사이에서 데이터를 어떻게 주고받을 것인지를 정의한 통신 규약
  • 인터넷이라고 부르는 네트워크는 TCP/IP 라는 프로토콜에 따라 데이터를 주고받음
  • TCP/IP 프로토콜은 5계층으로 구성
  • 전송 계층의 TCP와 네트워크 계층의 IP로 전체 프로토콜을 대표하여 TCP/IP 프로토콜 이라고 한다.
계층 기능 프로토콜 전송 단위
응용 계층 서비스 제공 응용 프로그램 DNS, FTP, SSH, HTTP, Teinet 메시지
전송 계층 응용 프로그램으로 데이터를 전달, 데이터흐름 제어 및 전송 신뢰성 담당 TCP, UDP 세그먼트
네트워크 계층 주소 관리 및 경로 탐색 IP, ICMP 패킷
링크 계층 네트워크 장치 드라이버 ARP 프레임
물리 계층 케이블 등 전송 메체 구리선 광케이블, 무선 비트

주소

일반적으로 네트워크 인터페이스는 거의 대부분 이더넷 방식을 사용한다.

컴퓨터의 주소는 MAC 주소, IP 주소, 호스트 명이 있다.

MAC 주소

  • MAC는 'media access control' 의 약자이다.
  • MAC 주소는 하드웨어를 위한 주소이며 다른 말로 이더넷 주소, 하드웨어 주소, 물리 주소 라고도 한다.
  • MAC 주소는 네트워크 인터페이스 카드 에서 저장된 주소라고 생각하면 된다.
  • MAC 주소는 쌍점: 이나 붙임표로 구분되는 여섯 개의 16진수로 구성되며, 총 48비트이다.
    • 앞의 세 자리는 제조사 번호, 뒤의 세 자리는 일련번호
00:50:56:3e:3c:fe

00:50:56 = 제조사 번호 ( IEEE에서 지정 )
3e:3c:fe = 일련 번호( 제조사에서 지정 )

IP주소

  • 우리가 보통 인터넷 주소라고 부르는 것이 IP주소 이다.
  • IP 주소는 인터넷으로 연결된 네트워크에서 각 컴퓨터를 구분하기 위해 사용된다.
  • IP 주소는 1바이트의 크기를 가진 네 자리 숫자로 구성되므로 총 4바이트 이다.
  • 예를들어 192.198.100.5 와 같이 네 가지의 숫자와 마침표로 구성됨
  • IP 주소는 네트워크를 구분하는 네트워크 주소 부분과, 해당 네트워크 안에서 특정 컴퓨터를 식별하는 호스트 주소로 구분된다.
  • IP 주소는 총 32비트 중 몇 비트를 네트워크로 사용하고 나머지 몇 비트를 호스트 부분으로 사용하는지 에 따라 A클래스, B클래스, C 클래스 로 구분된다.
  • C 클래스의 구조
    • 앞의 3바이트가 네트워크 부분이다.
    • 뒤의 1바이트만 호스트 부분으로 사용된다.
    • 호스트 부분으로 사용할 수 있는 숫자 1~254
    • 예 : 192.168.100.5는 C클래스 이므로 네트워크 부분은 앞의 세 자리인 192.168.100 이고 뒤의 5는 호스트 부분이다.
IP 주소
네트워크 부분 호스트 부분

넷 마스크와 브로드캐스트 주소

  • 넷 마스크 : IP 주소에서 네트워크 부분을 알려주는 역할
  • 넷 마스크는 하나의 네트워크를 다시 작은 네트워크로 분리할 떄도 사용 서브넷 마스크라고 부르기도함.

넷 마스크 예

  • IP 주소와 넷 마스크를 10진수에서 2진수로 바꾼 다음, 두 값을 가지고 AND 연산을 수행한다.
  • AND 연산을 하면 네트워크 부분만 남고 호스트 부분은 0이 된다.
  • 넷 마스크는 IP 주소와 AND 연산을 수행하여 네트워크 부분만 남기는 역할을 한다.

브로드 캐스트 주소 : 같은 네트워크에 있는 모든 컴퓨터에 메시지를 보낼 때 사용하는것이다.

  • 호스트 부분을 모두 1로 설정한다.
  • 예 : IP 주소에서 네트워크 부분이 192.169.100.0 이면 브로드캐스트 주소는 192.168.100.255 이다.

호스트 이름

  • 사람은 숫자보다 이름으로 된 것을 더 잘 생각해낸다. 그래서 나온것이 호스트 이름이다.
  • 호스트 이름처럼 IP 주소처럼 두 부분으로 구성된다.

포트 번호

  • 각 서비스를 구분하는 번호
  • 포트 번호는 TCP/IP 프로토콜의 4계층인 전송 계층에서 사용하는 번호 이다.
  • /etc/services 파일에 포트 번호를 저장한다.


네트워크 설정

네트워크를 설정 하려면

  • IP주소, 넷 마스크와 브로드 캐스트 주소, 게이트웨이 주소, DNS 주소

호스트 이름 설정하기

  • 호스트 이름 확인하기 : hostname, uname -n
uname
기능 시스템 정보를 출력한다.
형식 uname [ 옵션 ]
옵션 -m : 하드웨어 종류를 출력한다.
-n : 호스트 이름을 출력한다.
-r : 운영체제의 릴리즈 정보를 출력한다.
-s : 운영체제의 이름을 출력한다.
-v : 운영체제의 버전을 출력한다.
-a : 위의 모든 정보를 출력한다.
사용 예 uname -n         uname -a

호스트 이름 설정 파일

  • 재시작해도 호스트 이름이 바뀐 상태를 유지하려면 호스트 일므을 설정하는 파일 자체를 수정해야 함
  • 우분투에서 호스트 이름을 저장하는 파일은 /etc/hostname

네트워크 인터페이스 설정하기

ifconfig  
기능 네트워크 인터페이스의 IP 주소를 설정한다.
형식 ifconfig [ 인터페이스 명 ] [ 옵션 ] [ 값 ]
옵션 -a : 시스템의 전체 인터페이스에 대한 정보를 출력한다.
up/down : 인터페이스를 활성화 , 비활성화 한다.
netmask 주소 : 넷 마스크 주소를 설정한다.
broadcast 주소 : 브로드캐스트 주소를 설정한다.

현재 설치된 네트워크 인터페이스 설정 확인하기.

현재 설치된 네트워크 인터페이스 설정 확인하기 : ifconfig

eth0 의 설정 내용

  • MAC 주소 (ehter) : 00:0c:29:1c:e8:62
  • IP 주소 (inet) : 192.168.0.2
  • 넷마스크(netmask) : 255.255.255.0
  • 브로드캐스트 주소 (broadcast) : 192.168.0.255
  • IPv6 주소 (inet6) : fe40::20d:26ef:fe2c:d422

특정 네트워크 인터페이스 설정 확인하기

네트워크 인터페이스 사용 해제하기 : down 옵션

인터페이스가 다운되었을 때 flags를 보면 UP과 Running이 없어지고,

둘째 줄과 셋째 줄에 있던 IP 주소 관련 부분인 inet과 inet6이 출력되지 않음.

네트워크 인터페이스 활성화하기 : up 옵션

네트워크 인터페이스 수동으로 설정하기

게이트웨이 설정하기

인터넷은 네트워크와 네트워크를 연결한 것

네트워크를 다른 네트워크와 연결할 때 연결점이 되는 장치가 게이트웨이

게이트웨이의 설정과 확인은 route 명령으로 수행한다.

route  
기능 라우팅 테이블을 편집하고 출력한다.
형식 route 명령
명령 add : 라우팅 경로나 기본 게이트웨이를 추가한다.
del : 라우팅 경로나 기본 게이트웨이를 삭제한다.
사용 예 route         route add defalut gw 192.168.0.1 dev eth0

라우팅 테이블 보기 : route

route 명령으로 라우팅 테이블 편집하기

기능 명령 형식과 사용 예
라우팅 경로 추가(네트워크) route add -net 네트워크 주소 netmask 넷마스크 dev 인터페이스 명
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
라우팅 경로 추가(호스트) route add -host 호스트 주소 dev 인터페이스 명
route add -host 192.168.1.5 dev eth0
라우팅 경로 제거(네트워크) route del -net 네트워크 주소 netmask 넷마스크[dev 인터페이스 명]
route del -net 192.168.1.0 netmask 255.255.255.0
라우팅 경로 제거(호스트) route del -host 호스트 주소
route del -host 192.168.1.5
기본 게이트웨이 추가 route add defalut gw 게이트웨이 주소 dev 인터페이스명
route add defalute gw 192.168.1.1 dev eht0
기본 게이트웨이 제거 route del defalut gw 게이트웨이 주소
route del default gw 192.168.1.1
루프백(lo) 추가 route add -net 127.0.0.0 netmask 255.0.0.0 dev lo

라우팅 테이블의 출력 항목

항목 기능
Destination 라우팅 대상 네트워크나 호스트의 주소
Gateway 게이트웨이 주소 또는 설정되어 있지 않으면 *를 출력
Genmask 대상 네트워크의 넷마스크
255.255.255.255 : 대상이 호스트인 경우
0.0.0.0 : 기본(default) 경로
Flags U : 경로 활성화(UP)
H : 대상이 호스트
G : 게이트웨이로 사용
R : 동적 라우팅을 위한 경로 재생성
D : 데몬 또는 리다이렉트에 의해 동적으로 재설치
M : 라우팅 데몬 또는 리다이렉트에 의해 경로 수정
A : addrconf 에 의해 설치
C : 캐시 항목
! : 경로 거부
Metric 대상까지의 거리로 최근 커널에서는 사용되지 않지만, 라우팅 데몬에서 사용할 수도 있다.
Ref 해당 경로에 대한 참조 수이지만 리눅스 커널에서는 사용하지 않는다.
Use 경로를 탐색한 수
lfcae 패킷이 전달되는 인터페이스 이름

DNS 설정하기

  • 호스트명을 IP 주소로 바꾸는 역할을 수행
  • 만약 DNS가 설정되어 있지 않으면 이름으로 서버에 접속할 수 없으며 직접 IP 주소를 사용하여 접속 가능

DNS 서버 지정하기

  • DNS 서버의 주소를 /etc/resolv.conf 파일에 저장

DNS 서버에 질의하기 : nslookup

nslookup  
기능 DNS 서버와 대화식으로 지르이하고 응답을 받는다.
형식 nslookup [ 도메인 명 ]
사용 예 nslookup
nslookup www.daum.net


네트워크 상태 확인

통신 확인하기 : PING

ping  
기능 네트워크 장비에 신호(ECHO_REQUEST)를 보낸다.
형식 ping [ 옵션 ] 목적지 주소
옵션 -a : 통신이 되면 소리를 낸다.
-q : 테스트 결과를 지속적으로 보여주지 않고 종합 결과만 출력한다.
-c 개수 : 보낼 패킷 수를 지정한다.
사용 예 ping 192.168.0.1
ping -a www.naver.com

옵션 없이 사용하는 경우 : 패킷은 기본적으로 56바이트의 크기 + 8바이트 헤더 정보

-q 옵션 사용하기

-q 옵션을 사용하면 아무 메세지도 출력되지 않다가 +C로 종료하면 통계 정보만 출력

-C 옵션 사용하기

-C 옵션을 사용하면 보낼 패킷 수를 지정한다.

도메인 이름을 사용하는 경우

시스템에 따라서 보안을 강화하기 위해 ping 패킷이 왔을 떄 응답하지 않도록 설정하는 경우도 있으므로 ping으로 연결되지 않는다고 해서 무조건 해당 시스템이 동작하지 않는다는 것은 아니다.

 

통신 경로 확인하기

traceroute  
기능 목적지까지 패킷이 거치는 경로를 출력한다.
형식 traceroute 목적지 주소
사용 예 traceroute 192.168.0.
traceroute www.naver.com

정상으로 경로가 확인되는 경우

정상적으로 경로가 확인되지 않는 경우

  • 네트워크가 연결되지 않는 구간은 *가 출력 : 통신에 장애가 있거나 traceroute 명령을 거부를 뜻함.

중간 노드의 기관 확인 : whois 명령 사용

예 5번에 출려고딘 58.239.255.255 가 어느 기관의 것인가?

네트워크 상태정보 출력하기

netstat  
기능 네트워크의 상태 정보를 출력한다.
형식 netstat [ 옵션 ]
옵션 -a : 모든 소켓 정보를 출력한다.
-r : 라우팅 정보를 출력한다.
-n : 호스트 명 대신에 IP 주소를 출력한다.
-i : 모든 네트워크 인터페이스 정보를 출력한다.
-s : 프로토콜 별로 네트워크 통계 정보를 출력한다.
-p : 해당 소켓과 관련된 프로세스의 이름과 PID를 출력한다.
사용 예 netstat -rn
netstat -s

라우팅 테이블 확인하기 : -r 옵션

현재 열려있는 포트 확인하기

  • 현재 통신이 진행 중인 서비스는 해당 서비스 포트가 LISTEN 상태

인터페이스별 네트워크 통계 정보 확인하기 : -i 옵션

  • RX-OK, TX-OK는 정상적으로 주고받은 패킷의 개수
  • RX-ERR, RX-DRP, RX-OVR, TX-ERR, TX-DRP, TX-OVR는 송수신중에 오류가 발생한 패킷의 개수 이다.

프로토콜 별 네트워크 통계정보 확인하기 : -s 옵션

  • IP 프로토콜, ICMP 프로토콜, TCP 프로토콜 별로 통계 정보를 출력한다.

MAC 주소와 IP 주소 확인하기 : arp 명령

arp  
기능 ARP 캐시 정보를 관리한다.
형식 arp [ IP 주소 ]
사용 예 arp
arp 192.168.0.1

패킷 캡처하기 : tcpdump

tcpdump  
기능 네트워크상의 트래픽을 덤프한다.
형식 tcpdump [ 옵션 ]
옵션 -c 패킷 수 : 지정한 패킷 수 만큼 덤프 받고 종료한다.
-i 인터페이스 명 : 특정 인터페이스를 지정한다.
-n : IP주소를 호스트명으로 바꾸지 않는다.
-q : 정보를 간단한 형태로 보여준다.
-X : 패킷의 내용을 16진수와 ASCII로 출력한다.
-w 파일명  : 덤프한 내용을 지정한 파일에 저장한다.
-r 파일명 : 덤프를 저장한 파일에서 읽어온다.
host 호스트명 또는 주소 : 해당 호스트가 받거나 보낸 패킷만 덤프한다.
tcp prot 번호 : 지정한 번호 패킷만 덤프한다.
ip : IP 패킷만 덤프한다.
arp 192.168.0.1
사용 예 tcpdump
tcpdump -i eth0
tcpdump -i eth0 -w DUMP.out
tcpdump tcp port 22 and host 192.168.0.7

옵션 없이 사용하는 경우

  • 현재 시스템에서 주고받는 모든 패킷을 캡처하여 패킷의 헤더 부분 정보를 출력한다.

캡처한 패킷 개수 지정하기 : -c 옵션

캡처한 패킷 정보를 파일로 저장하기 : -w 옵션

캡처한 패킷 파일 읽기 : -r 옵션

특정 포트로 송수신되는 패킷 캡처 : tcp port 옵션

캡처 한 내용을 ASCII로 보기 : -X 옵션

728x90