# 본 글은 인하대학교 단풍나무숲 CS 스터디에 작성한 내용을 그대로 가져온 글입니다.
2. 네트워크
목차
- 네트워크의 기초
- TCP/IP 4계층 모델
1. 네트워크의 기초
정의
노드 (node)와 링크 (link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체.
여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 뜻하며, 링크는 유무선 형태의 연결 수단을 의미한다.
처리량과 지연 시간
네트워크를 구축할 때, "좋은 네트워크" 로 만드는 것이 중요하다.
좋은 네트워크란,
- 많은 처리량을 감당할 수 있으며,
- 지연 시간이 짧고,
- 장애 빈도가 적으며,
- 좋은 보안을 갖춘 네트워크
처리량 (throughput)
- 링크를 통해 전달되는 단위 시간당 데이터양 (amount of data per unit time)을 뜻한다.
- bps (bits per second)를 단위로 사용
- 트래픽, 장치 간의 대역폭, 에러, 하드웨어 스펙 등에 영향을 받는다.
지연 시간 (latency)
- 요청이 처리되는 시간. 즉, 어떤 메세지가 두 장치 사이를 왕복하는데 걸린 시간
- 매채 타입 (유무선), 패킷 크기, 라우터의 패킷 처리 시간 등에 영향을 받는다.
네트워크 토폴로지와 병목 현상
노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 뜻한다.
- 트리 토폴로지
- 계층 형태로 네트워크가 존재한다.
- 노드의 추가, 삭제가 쉬우며, 특정 노드에 장애가 생기면 하위 노드도 영향을 받는다.
- 버스 토폴로지
- 중앙 통신 회선 하나에 여러 개의 노드가 연결되는 방식
- 보통 LAN (Local Area Network; 근거리 통신망)에서 사용된다.
- 설치 비용이 적고, 신뢰성이 우수하며, 노드를 추가하거나 삭제하기 쉽고, 특정 노드에 장애가 발생하여도 다른 노드에 영향을 미치지 않는다.
- 스푸핑 (spoofing)이 가능하다는 단점이 있다. (A -> B로 갈 요청이 A -> X -> B로 가도록 중간에 요청을 가로채는 것)
- 스타 토폴로지
- 중앙에 있는 노드 하나에 다른 모든 노드가 연결되어 있는 형태
- 노드의 추가/삭제가 쉽고, 패킷의 충돌 발생 가능성이 적다.
- (중앙 노드 제외) 특정 노드에 장애가 발생해도, 다른 노드에 영향을 미치지 않는다.
- 중앙 노드에 장애가 생기면, 시스템 전체에 장애가 발생한다.
- 설치 비용이 고가이다.
- 링형 토폴로지
- 각 노드가 양 옆의 두 노드와 연결되는 식으로, 둥근 원 형태로 네트워크가 구성되는 형태
- 노드 수가 추가되어도 네트워크상의 손실이 거의 없고, 충돌이 발생되는 가능성이 적으며, 노드의 장애를 쉽게 발견할 수 있다.
- 노드의 추가/삭제가 어렵고, 노드 하나에 장애가 발생하면 시스템 전체에 장애가 발생한다.
- 메시 (mesh) 토폴로지
- 모든 노드가 그물망처럼 연결되어 있는 형태
- 노드 하나에 장애가 발생해도 시스템에 영향을 거의 끼치지 않음
- 트래픽의 분산 처리가 가능함
- 노드의 추가/삭제가 어려움
- 운영 비용이 고가임
병목현상
- 토폴로지가 중요한 이유. 병목 현상을 찾을 때 중요한 기준이 된다.
- 병목 현상의 정의: 하나의 구성 요소로 인해 전체 시스템의 성능이나 용량이 제한을 받는 현상.
네트워크 분류
네트워크는 규모를 기반으로 분류할 수 있다.
개인-사무실 규모에서 사용할 수 있는 LAN (Local Area Network), 도시 정도 규모의 MAN (Metropolitian Area Network), 세계 규모의 WAN (Wide Area Network) 등이 존재한다.
- LAN
- 근거리 통신망을 의미
- 전송 속도가 빠르고 혼잡하지 않다.
- MAN
- 대도시 지역 네트워크를 의미
- 전송 속도는 평균이며 LAN보다는 혼잡하다.
- WAN
- 광역 네트워크를 의미
- 전송 속도는 낮으며 MAN보다 더 혼잡하다.
네트워크 성능 분석 명령어
로직 상으로는 문제가 없어도, 네트워크 상태에 따라 데이터를 가져오지 못 하는 등의 장애가 발생할 수 있음. 이는 네트워크 병목이 원인일 수 있으며, 주로
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 (자원) 사용량
- 비효율적인 네트워크 구성
위와 같은 경우 네트워크의 상태를 조회해 볼 필요가 있다. 이런 경우에 아래와 같은 명령어를 사용한다.
- ping
- Packet INternet Groper
- 목적지 노드까지의 네트워크 상태를 확인하기 위해 일정 크기의 패킷을 보냄
- TCP/IP 프로토콜 중 ICMP 프로토콜을 통해 동작
- netstat
- 접속되어 있는 서비스들의 네트워크 상태를 표시 (network status)
- 주로 서비스의 포트가 열려 있는지 확인할때 씀
- nslookup
- 특정 도메인에 매핑된 IP를 확인
- tracert (traceroute)
- 목적지 노드까지의 네트워크 경로를 확인
- 느려지는 구간을 파악 가능
네트워크 프로토콜 표준화
- 장치들 간에 데이터를 주고받기 위한 공통 인터페이스
- IEEE 또는 IETF에서 표준을 정함
- 예:
- IEEE802.3: 유선 LAN 프로토콜
- HTTP: 웹 애플리케이션 계층에서 데이터를 주고 받기 위한 프로토콜
2. TCP/IP 4계층 모델
정의
Internet Protocol Suite는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합이다.
TCP/IP 4계층 모델, OSI 7계층 모델 등이 특히 널리 쓰인다.
계층 모델이란, 네트워크에서 사용되는 통신 프로토콜의 집합으로이다.
TCP/IP 4계층 모델의 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성된다.
계층 구조
TCP/IP 4계층 모델은 이름 그대로 4개의 계층으로 나뉜다.
다음은 계층 구조를 나타낸다 (위에 있을수록 상위 계층).
- 애플리케이션 계층 (FTP, HTTP 등)
- 전송 계층 (TCP, UDP 등)
- 인터넷 계층 (IP, ARP 등)
- 링크 계층 (Ethernet 등)
애플리케이션 계층
- HTTP, FTP 등 응용 프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일, 동영상 스트리밍 등 서비스를 실질적으로 사용되는 사람들에게 제공하는 층
전송 (transport) 계층
- 송신자와 수신자를 연결하는 통신 서비스를 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 등 프로토콜마다 다양한 기능이 제공된다.
- TCP, UDP 등이 이 계층에 속한다.
- TCP
- Transmission Control Protocol
- 가장 널리 쓰이는 전송 계층 프로토콜. HTTP 2.0까지는 TCP를 사용한다.
- 패킷 사이의 순서를 보장하고, 연결을 통한 신뢰성 구축 (3way handshake) 등 다양한 기능을 제공한다
- UDP에 비해 속도가 느리다.
- UDP
- User Datagram Protocol
- 도화지 같은 프로토콜. 기본적으로 제공하는 기능이 적지만, 그만큼 필요한 경우 커스터마이징 해서 사용할 수 있다.
- 패킷 사이의 순서 보장, 수신 여부 확인 등이 지원되지 않는다.
- TCP vs. UDP
- TCP는 전송 순서 보장, 수신 여부 확인, 논리적 연결 수립/해제 등 안정성과 신뢰성을 강점으로 가진다.
- 기본적으로 메일 송수신, 파일 전송 등 속도보다 정확한 전달이 중요한 경우에 쓰인다.
- 최근에는 동영상 스트리밍 등에도 TCP가 널리 쓰인다.
- UDP는 TCP 대비 빠른 속도를 강점으로 가진다.
- 3way handshake 같은 논리적 연결 과정이 별도로 없으므로
- TCP 대비 프로토콜이 기본적으로 요구하는 값이 적으므로
- TCP는 전송 순서 보장, 수신 여부 확인, 논리적 연결 수립/해제 등 안정성과 신뢰성을 강점으로 가진다.
- 3way handshake
- TCP에서 서버와 클라이언트 사이에 서로 연결을 논리적으로 수립하는 과정
- 아래 과정을 통해 진행된다.
- 클라이언트 -> 서버, SYN 전송
- 서버는 SYN 수신에 대한 응답으로 ACK 전송 및 서버 -> 클라이언트, SYN 전송
- 클라이언트는 SYN 수신에 대한 응답으로 ACK 전송
- 4way handshake
- TCP에서 서버와 클라이언트 사이에 서로 연결을 논리적으로 해제하는 과정
- 아래 과정을 통해 진행된다.
- 클라이언트 -> 서버, FIN 전송
- 서버는 FIN 수신에 대한 응답으로 ACK 전송 및 일정 시간 대기 (TIME_WAIT)
- 서버 -> 클라이언트, FIN 전송
- 클라이언트는 FIN 수신에 대한 응답으로 ACK 전송
- TIME_WAIT은 왜 존재하는가?
- 지연 패킷이 발생할 수 있으므로, 해당 패킷이 도착하도록 잠시 기다린다
- 두 장치가 연결이 닫혔는지 확인한다.
인터넷 (Internet) 계층
- 장치로부터 받은 패킷을 지정된 목적지로 전송하기 위해 사용되는 계층
- IP 등이 존재하며, 패킷을 수신해야 하는 상대의 주소를 지정하여 (예: IP 주소) 데이터를 전달한다.
링크 계층
- 전선, 광섬유, 무선 등 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층
- 네트워크 접근 계층이라고도 함
(내용 추가 예정)
계층 간 데이터 송수신 과정
- 데이터 전송 시, 아래 순서로 프로토콜이 포장된다.
- 애플리케이션 -> 전송 -> 인터넷 -> 링크
- 데이터 수신 시, 아래 순서로 프로토콜의 포장을 풀어낸다.
- 링크 -> 인터넷 -> 전송 -> 애플리케이션
- "포장"을 뜻하는 고상한 표현 - 캡슐화 (encapsulation)
- 객체지향의 캡슐화와 동일하지는 않지만 유사한 정의를 가진다
- 상위 계층의 헤더와 데이터 내용을 하위 계층의 데이터에 포함시키는 것
PDU
- 네트워크의 계층 간 데이터가 전달될 때, 한 덩어리의 단위를 PDU (Protocol Data Unit)이라고 한다.
- 제어 관련 정보를 포함하는 '헤더', 데이터를 뜻하는 '페이로드' 등이 존재하며, 계층마다 이를 부르는 이름이 다르다.
'개발 > 기타' 카테고리의 다른 글
[CS Study] 3. 운영체제 (1) (0) | 2022.08.30 |
---|---|
[CS Study] 2. 네트워크 (2) (0) | 2022.08.15 |
[CS Study] 1. 디자인 패턴과 프로그래밍 패러다임 (2) (0) | 2022.08.01 |
[CS Study] 1. 디자인 패턴과 프로그래밍 패러다임 (1) (0) | 2022.07.24 |
Windows WSL 환경에서 Homebrew 설치하기 (0) | 2022.02.16 |
댓글