일일 정리

혼잡제어의 원리, TCP 혼잡제어, Cisco 설치, 리눅스 - 네트워크 설정, 다양한 네트워크 명령어(ping, netstat, arp, traceroute(tracert), route)

mysecurity 2025. 1. 22. 17:45

목차

 

1. 혼잡제어의 원리

2. TCP 혼잡제어

3. Cisco 설치

4. 리눅스 - 네트워크 설정

5. 다양한 네트워크 명령어

 

혼잡제어의 원리

 

혼잡: 높은 전송률로 데이터를 전송하려는 많은 근원지(송신자)로 인한 문제이다.

혼잡현상: 패킷의 손실, 지연의 증가.

 

다음과 같은 경우 데이터 전송량을 줄인다.

- 타임아웃이 빈번히 일어나는 경우

- 재전송량이 많아지는 경우

 

 혼잡 시나리오 1

- 무한 버퍼를 가진 하나의 라우터이다.

- 재전송은 없다.

보내는 패킷량에 따른 패킷 처리량/지연

 

보내는 패킷량이 링크의 용량에 도달한 이후로는 패킷 전송량이 늘어도 받는 패킷량은 일정하다.

패킷의 처리량이 링크의 용량에 접근하게 되면 매우 큰 큐잉지연이 발생한다.

 

 혼잡 시나리오 2

- 유한 버퍼를 가진 하나의 라우터이다.

- 재전송이 이루어진다.

상황에 따른 패킷 처리량

 

패킷 손실이 발생하지 않는 경우 (a)

: 보내는 패킷만큼 처리가 진행된다.

 

손실된 패킷만 재전송하는 경우 (b)

: 패킷 재전송 시점부터 처리량이 줄어들기 시작한다.

(5메가를 전송해도 1메가가 재전송량이라면 실제로 받는 량은 4메가이다.)

 

패킷의 지연으로 인한 불필요한 재전송을 하는 경우 (c)

: 보내는 패킷에 비해 처리 효율이 급격히 떨어진다.

 

 혼잡 시나리오 3

- 여러 개의 라우터와 다중 경로로 구성된 경우

보내는 패킷량에 따른 패킷 처리량

 

패킷 전송량이 늘어감에 따라 패킷 처리량이 다시 줄어들게 되는데, 이때 위와 같은 중복 패킷이 발생한다.

 

혼잡으로 인해 패킷이 경로상에서 버려지면, 버려지는 지점까지 패킷을 전송하는데 사용된 라우터의 전송 용량은 쓸모없는 것이 되므로 여러 개의 라우터와 다중 경로로 구성될수록 더욱 손해가 크다.

윈도우 사이즈를 줄이면 오히려 이득을 볼 수도 있다는 점을 보여준다.

 

TCP 혼잡제어

 

패킷 송신률

: rate = 윈도우사이즈 / RTT

즉 혼잡제어는 송신자가 송신률을 조절하기 위해 윈도우사이즈를 조절하는 것이다.

 

손실이 발생한 경우

- 타임아웃 또는 3번의 ACK 중복

- 손실에 의한 재전송의 발생

 

위와 같이 손실이 발생하면 TCP 송신자는 윈도우 사이즈를 줄인다.

 

● 혼잡 제어 알고리즘

- AIMD

패킷 손실이 없다면 각 RTT마다 윈도우 사이즈를 1MSS씩 늘려나간다.

패킷 손실이 발생하면 윈도우 사이즈를 현재의 절반으로 줄인다. 이때 1MSS 밑으로 떨어지지는 않는다.

[그래프]

이러한 선형 증가를 혼잡 회피라고 한다.

 

- Slow start

패킷 손실이 없다면 ACK를 확인할 때마다 윈도우 사이즈를 1MSS씩 늘려나간다.

패킷 손실이 발생하면 윈도우 사이즈를 1MSS로 초기화한다.

[그래프]

 

TCP는 위의 두 알고리즘을 섞어서 다음과 같이 사용한다.

- 세 번의 중복 ACK를 수신한 경우

: 윈도우 사이즈를 반으로 줄인다.
: 윈도우 사이즈는 선형적으로 증가한다.

 

- 타임아웃이 발생한 경우

: 윈도우 사이즈를 1MSS로 줄인다.

: 윈도우 사이즈는 지수적으로 증가한다.

: threshold에 도달하면 다시 선형적으로 증가한다.(혼잡 회피에 들어간다.)

   ※ threshold: 윈도우 사이즈의 절반 값으로, 딱 떨어지지 않으면 버림하거나 올림하거나 설정자의 마음대로다.

 

즉, 윈도우사이즈가 20이었다가 1로 초기화되면 1 > 2 > 4 > 8 > 10까지 가서 선형 증가한다.

 

ex) 표로 나타낸 혼잡제어

  3A         TO       3A       TO          
RTT 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
W_size 17 8 9 10 11 12 1 2 4 6 3 4 5 6 1 2 3 4 5

 

Cisco 설치

 

https://www.netacad.com/resources/lab-downloads?courseLang=en-US

 

Resource Hub: Get Packet Tracer, Virtual Machines, and More

Your one-stop for learning resources used within our courses such as hands-on practice activities and our network simulation tool, Cisco Packet Tracer.

www.netacad.com

위의 사이트에서 윈도우 버전으로 패킷트레이서를 다운로드받을 수 있다.

 

다음과 같이 패킷트레이서를 이용해 네트워크를 가상으로 구현해볼 수 있다.

패킷트레이서를 이용한 가상 구현 예시

 

 

리눅스 - 네트워크 설정

 

NIC (Network  Interface Card)

유닉스 시스템들은 각 시스템마다 NIC를 지칭하는 디바이스 파일명이 고유하다.

리눅스의 경우 ens160, ens32, ens34(eth0, eth1)…등의 이름으로 명명한다.

네트워크 관련 명령어: net‐tools 패키지에 포함되어있다.

# dnf install –y net‐tools : net-tools 설치

 

- 디바이스 파일

/lib/modules/3.10.0‐1160.el7.x86_64/kernel/drivers/net/ethernet

위 경로에 리눅스에서 지원하는 모든 네트워크 디바이스 파일이 존재한다. 빨간 부분은 실행중인 커널 버전마다 다르다.

 

ifconfig

네트워크 인터페이스 상태를 확인하거나 설정을 변경한다. 변경 내용은 영구적이지 않다.

# ifconfig

# ifconfig [NIC명]

 

  네트워크 설정 파일

/etc/sysconfig/network‐scripts/ifcfg‐NIC명

‐> 네트워크설정: IP, subnetmask, gateway 등이 있다.

 

게이트웨이는 원래 추가설정파일 쪽에 있었으나 이 파일로 옮겨졌다.

Network Manager를 사용하고 있으므로 파일을 통해 수정하지 않는다.

 

/etc/resolv.conf

‐> DNS Server가 있다.

위의 ifcfg‐NIC명에서 자동생성되어 덮어씌워진 값이지만 DNS 서버를 확인할 때에는 이 파일을 확인한다.

 

참고)

host http://www.naver.com :네이버의 IP를 알려준다.
nslookup http://www.naver.com : 네이버의 IP를 알려주는데 누구에게 물어봤는지도 알려준다.
DNS서버에게 IP를 물어보는 것은 무슨 DNS서버에 물어보든 간에 상관없다.

 

 

/etc/hostname

‐> 호스트명을 알려준다.

 

- 추가 설정 파일

/etc/sysconfig/network

‐> 호스트명,  gateway 값이 있었으나 지금은 비어있다.

 

네트워크 재시작

- 유닉스에서 파일을 수정한 이후에는 반드시 네트워크를 재시작해야 한다.

# nmcli conn down ens160 && nmcli conn up ens160

 

위의 명령어는 해당 NIC를 재시작하는 명령어로, 시스템을 껐다면 반드시 다시 켜게 되어있다.

네트워크 관련 설정을 건드리면 자칫하면 네트워크가 끊길 수 있다. 이때 원격으로 접속중이었다면 원격으로는 다시 네트워크를 켤 방법이 없으므로 위의 명령어를 통해 재시작한다.

 

&&는 and연산자로 앞의 명령어가 실행되면 뒤의 명령어도 실행한다. 앞의 명령어가 실행이 안되면 뒤의 명령어도 실행되지 않는다.

||는 or연산자로 앞의 명령어가 실행되면 뒤의 명령어를 실행하지 않는다. 앞의 명령어가 실행이 안되면 뒤의 명령어는 실행한다

 

- NM(Network Manager)이 활성화되어 있는 경우 설정은 반드시 NM을 이용한다.

# systemctl start NetworkManager.service        // NM서비스 시작

가상머신 리눅스로 들어가 [프로그램] – [시스템 도구] –[설정] –[네트워크] 메뉴에서 설정할 수 있다.

 

NetworkManager가 실행 중일 때는 nmtui를 이용해서 네트워크 설정이 가능하다.

 

 

다양한 네트워크 명령어

 

● ping

특정 호스트까지의 연결과 대상 시스템의 작동 여부를 확인한다.

# ping  [ip]

 

● netstat [옵션]

시스템의 연결 상태, 포트, 인터페이스 등의 상태와 통계 정보를 확인해서 네트워크의 상태를 진단한다.

# netstat [옵션]

-i   옵션: 인터페이스 상태를 확인한다. 

-s  옵션:  IP, ICMP, TCP, UDP 에 대한 패킷 통계 정보를 확인한다.

-nr 옵션: 라우팅 테이블을 확인한다.

 

● arp

패킷을송수신한대상의MAC 주소를확인한다.

# arp [옵션]

-a  옵션: arp 목록 전체 출력

-s  옵션: arp 정적 등록

-d  옵션: arp 삭제, 추가 항목이 없으면 arp cache를 초기화한다.

 

# ip‐s neigh flush all : arp테이블을 초기화한다.

 

arp 명령어가 제한된 경우, netsh 명령을 이용한다.

초기화: netsh interface ip delete arpcache

삭제   : netsh interface ip delete neighbors "interface" ip

등록   : netsh interface ip add neighbors "interface" ip mac

 

● traceroute(tracert)

출발지 시스템에서 목적지 시스템까지의 데이터 전송 경로를 추적한다.

 

● route

라우팅 경로를 확인하거나 수정한다.