능히 해낼 수 있다
230320 CS지식 습득을 위한 메모: 네트워크의 기초 편 본문
✍️✍️✍️ 위 글은 면접을 위한 CS 전공지식 노트를 읽고 학습한 내용으로 구성되었으며,
작성자의 지식습득에 따라 추후 퇴고 될 수 있음을 알려드립니다(피드백 환영).
0. 네트워크 개념
네트워크란 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미한다.
아래 그림은 네트워크를 표현한 이미지다.
위 그림을 보면 동그라미는 노드이고, 선은 링크라고 표현했는데, 앞서 작성한 설명처럼 노드가 연결되어 있거나 연결되어 있지 않다는 의미를 위 그림 처럼 나타내 네트워크가 어떤식으로 구성되어 있는지 짐작해 볼 수 있을 것 같다.
여기서 노드(node)는 서버, 라우터, 스위치 등 네트워트 장치를 의미하며, 링크는 유선 또는 무선을 의미 한다.
이렇게 복잡하게 연결되어있는 네트워크인 만큼 구축 할 때 좋은 네트워크로 만들 수 있도록 하는 것이 중요한데, 처리량을 감당하고, 지연시간이 짧으며 장애빈도가 적고 좋은 보안을 갖춘 네트워크를 좋은 네트워크라 한다.
그래프를 설명해보자면, 처리량이란 링크를 통해 전달되는 단위 시간당 데이터양을 말하는데, bps(bits per second)를 단위로 사용하며 그래프에 나와있는 Time in Seconds(초 당 시간)의미와 같다.
처리량은 위에 나와있는 트래픽, 네트워크 장치간의 대역폭 등에 따라 달라 질 수 있다.
1. 네트워크 토폴로지(Network Topology)
네트워크 설계할 때 고려한다. 노드와 링크가 어떻게 배치 되어있는지에 대한 방식 && 연결형태를 지칭한다. 토폴로지의 종류엔 트리 토폴로지, 버스 토폴로지, 스타 토폴로지, 링 토폴로지, 메시 토폴로지가 있다.
토폴로지 종류 | 특징 | 장점 | 단점 |
트리 | 계층 형태. 트리형태로 배치 되는 네트워크 구성 |
- 노드 추가, 삭제 쉬움 |
- 특정 노드에 트래픽이 몰릴 시, 하위노드에 영향을 끼칠 수 있음 |
버스 | 일직선 형태. 중앙통신 회선 하나에 여러개의 노드가 연결되어 공유되는 형태. 근거리 통신망에서 사용 |
- 설치비용 적고 신뢰성 우수 - 중앙통신 회선에 노드 추가 및 삭제 쉬움 |
- 스푸핑 가능성이 있음 (스푸핑: 근거리 통신 상에서 송신과 관련없는 다른 호스트에 가지않도록 스위칭 기능을 마비 또는 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것.) |
스타 | 별모양 형태. 중앙노드에 모두 연결된 구성방식 |
- 노드 추가 시, 에러탐지가 쉬움 - 패킷 충돌 발생 가능성 낮음 - 어떤 노드장애에도 에러 발견 쉬움 - 중앙노드 장애가 아닌 경우 타 노드에 끼치는 영향이 적음 |
- 중앙노드 장애 발생 시, 전체 네트워크 사용 불가 - 설치비용 고가 |
링 | 고리 형태. 각각의 노드가 양옆의 두 노드와 연결. 하나의 연속된 길 형태의 구성 방식 |
- 노드 수가 증가해도 네트워크상의 손실이 거의 없음 - 충돌발생 가능성 적음 - 노드의 고장 조기 발견 가능 |
- 네트워크 구성변경 어려움 - 회선 장애 발생 시, 전체 네트워크에 영향을 크게 끼침 |
메시(mesh) | 그물망 형태. 여러 경로가 존재 한다 |
- 한 단말 장치에 장애가 발생해도 네트워크 계속 사용가능 - 트래픽 분산 처리가능 |
- 노드 추가가 어려움 - 구축비용과 운용비용이 고가 |
2. 네트워크 분류
이름 | 뜻 | 특징 |
LAN | 근거리 통신망(Local Area Network) | - 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영된다(방 안도 마찬가지!). - 전송 속도가 빠르고 혼잡하지 않다. |
MAN | 대도시 지역 네트워크(Metropolitan Area Network) | - 도시 같은 넓은 지역에서 운영 - 전송 속도는 평균이며 LAN보다는 더 많이 혼잡 |
WAN | 광역 네트워크(Wide Area Network) | - 국가 또는 대륙 같은 더 넓은 지역에서 운영 - 전송 속도는 낮으며 MAN보다 더 혼잡 |
3. 네트워크 성능분석
네트워크 병목현상의 주된 원인
1. 네트워크 대역폭
2. 네트워크 토폴로지
3. 서버 CPU, 메모리 사용량
4. 비효율적인 네트워크 구성
네트워크 분석 명령어
ping(Packet INternet Groper)
네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어.
이를 통해 해당 노드의 패킷 수신 상태와 도달하기까지 시간 등을 알 수 있고 해당 노드까지 네트워크가 잘 연결되어 있는지 확인할 수 있다. ping은 TCP/IP 프로토콜 중에 ICMP 프로토콜을 통해 동작하며, 이 때문에 ICMP 프로토콜을 지원하지 않는 기기를 대상으로는 실행할 수 없거나 네트워크 정책상 ICMP나 traceroute를 차단하는 대상의 경우 ping 테스팅은 불가능하다.
# ping [IP 주소 또는 도메인 주소] (옵션내용)로 실행
# 예시
user\desktop\> ping www.google.com -n 12
# -n 12 === -n 12 옵션을 넣어서 12번의 패킷을 보내고 12번의 패킷을 받는 모습
netstat
명령어는 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용.
네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여줌. 주로 서비스의 포트가 열려 있는지 확인할 때.
접속하고 있는 사이트 등에 관한 네트워크 상태 리스트를 볼 수 있음.
user\desktop\> netstat
nslookup
DNS에 관련된 내용을 확인하기 위해 쓰는 명령어. 특정 도메인에 매핑된 IP를 확인하기 위해 사용.
user\desktop\> nslookup
tracert
윈도우에서는tracert. 리눅스에서는traceroute라는 명령어로 구동된다.
목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어이고, 목적지 노드까지 구간들 중 어느 구간에서 응답 시간이 느려지는지 등을 확인할 수 있다.
# tracert [IP 주소 또는 도메인 주소]로 실행
# 예시
user\desktop\> tracert www.google.com
이외에도 ftp를 통해 대형 파일을 전송하여 테스팅하거나 tcpdump를 통해 노드로 오고 가는 패킷을 캡처하는 등의 명령어가 있으며 네트워크 분석 프로그램으로는 wireshark, netmon이 있다.
'개발🌐 > CS지식' 카테고리의 다른 글
230317 CS지식습득을 위한 메모: 팩토리 패턴 편 (0) | 2023.03.17 |
---|---|
230316 CS지식 습득을 위한 메모: 싱글톤 패턴 편 (0) | 2023.03.16 |
230130 컴퓨터지식: 프레임워크와 라이브러리 차이 (0) | 2023.01.30 |
230127 네트워크: 컴퓨터의 이해 소프트웨어공학 배경지식 편 (0) | 2023.01.27 |
230125 개발지식: JSON 편 (0) | 2023.01.25 |