-
네트워크 (2)Computer Science 2024. 4. 19. 21:07
목차
2.3 네트워크 기기
2.3.1 네트워크 기기의 처리 범위
네트워크 기기는 계층별로 처리 범위를 나눌 수 있습니다.
- 물리 계층을 처리할 수 있는 기기
- 데이터 링크 계층을 처리할 수 있는 기기
상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가능합니다.
- 애플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: L2 스위치, 브리지
- 물리 계층: NIC (Network Interface Card), 리피터, AP(Access Point)
예를 들어 L7 스위치는 애플리케이션 계층을 처리하는 기기로, 그 밑의 모든 계층의 프로토콜을 처리할 수 있습니다. 하지만 AP는 물리 계층밖에 처리하지 못합니다.
2.3.2 애플리케이션 계층을 처리하는 기기
애플리케이션 계층을 처리하는 기기로는 L7 스위치가 있습니다.
L7 스위치
스위치는
- 여러 장비를 연결하고
- 데이터 통신을 중재하며
- 목적지가 연결된 포트로만 전기 신호를 보내
- 데이터를 전송하는 통신 네트워크 장비입니다
L7 스위치는 로드밸런서라고도 하며, 로드 밸런서는 서버의 부하를 분산하는 기기입니다. 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 하며 시스템이 처리할 수 있는 트래픽 증가를 목표로 합니다.
URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산합니다. 또한, 바이러스, 불필요한 외부 데이터 등을 거러 내는 필터링 기능 또한 가지고 있으며 응용 프로그램 수준의 트래픽 모니터링도 가능합니다.
만약 장애가 발생한 서버가 있다면 이를 트래픽 분산 대상에서 제외해야 하는데, 이는 정기적으로 헬스 체크를 이용하여 감시하면서 이루어집니다.
헬스 체크
헬스 체크는 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것을 말합니다.
예를 들어 TCP 요청을 보냈는데 3-웨이 핸드셰이크가 정상적으로 일어나지 않았다면 정상이 아닌 것 입니다.
로드밸런서는 대표적인 기능으로 서버 이중화를 들 수 있습니다. 에러가 발생하여 서버 1대가 종료되더라도 서비스는 안정적으로 운용되어야 하기 때문에 로드밸런서는 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공합니다.
L4 스위치와 L7 스위치의 차이
로드밸런서로는 L7 스위치뿐만 아니라 L4 스위치도 있습니다. L4 스위치는 전송 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용할 수 없으며 메시지를 기반으로 인식하지 못하고 IP와 포트를 기반으로(특히 포트를 기반으로) 트래픽을 분산합니다. 반면 L7 로드밸런서는 IP, 포트 외에도 URL, HTTP 헤더, 쿠키 등을 기반으로 트래픽을 분산합니다.
2.3.3 인터넷 계층을 처리하는 기기
라우터
라우터는 여러 개의 네트워크를 연결, 분할, 구분시켜 주는 역할을 하며 “다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩”하는 라우팅 장비입니다.
L3 스위치
L3 스위치란 L2 스위치의 기능과 라우팅 기능을 갖춘 장비를 말합니다. L3 스위치를 라우터라고 해도 무방합니다.
라우터는 다음과 같이 구분됩니다.
- 소프트웨어 기반의 라우팅
- 하드웨어 기반의 라우팅
하드웨어 기반의 라우팅을 담당하는 장치를 L3 스위치라고 합니다.
2.3.4 데이터 링크 계층을 처리하는 기기
데이터 링크 계층을 처리하는 기기로는 L2 스위치와 브리지가 있습니다.
L2 스위치
L2 스위치는 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당합니다.
IP 주소를 이해하지 못하기 때문에 IP 주소를 기반으로 라우팅은 불가능하며 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 합니다. 목적지가 MAC 주소 테이블에 없다면 전체 포트에 전달하고 MAC 주소 테이블의 주소는 일정 시간 이후 삭제하는 기능도 있습니다.
브리지
브리지는 두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치로, 포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리합니다.
2.3.5 물리 계층을 처리하는 기기
NIC (Network Interface Card)
LAN 카드라고 하는 네트워크 인터페이스 카드는 대 이상의 컴퓨터 네트워크를 구성하는 데 사용하며, 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드입니다.
리피터
리피터는 들어오는 약해진 신호를 증폭하여 다른 쪽으로 전달하는 장치를 말합니다.
AP (Access Point)
AP는 패킷을 복사하는 기기입니다. AP에 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술(와이파이 등)을 사용하여 무선 네트워크 연결을 할 수 있습니다.
2.4 IP 주소
2.4.1 ARP (Address Resolution Protocol)
컴퓨터와 컴퓨터 간의 통신은 흔히들 IP 주소 기반으로 통신한다고 알고 있지만 정확히 이야기하자면 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신합니다.
ARP란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜입니다. ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환합니다. 이와 반대로 RARP를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 합니다.
- IP 주소 -> MAC 주소 변환:
- 호스트는 통신하려는 대상의 IP 주소를 알고 있지만, 실제 데이터 링크 계층에서는 MAC 주소가 필요합니다.
- ARP를 이용해 IP 주소에 대응되는 MAC 주소를 찾아내는 과정을 거칩니다.
- ARP 캐시:
- 호스트는 IP 주소와 MAC 주소의 대응 정보를 ARP 캐시에 저장합니다.
- 이후 동일한 IP 주소의 MAC 주소 요청 시, 캐시에서 직접 가져와 사용할 수 있습니다.
- ARP 요청/응답 과정:
- 호스트가 통신하려는 대상의 MAC 주소를 모를 경우, ARP 요청 브로드캐스트를 보냅니다.
- 요청을 받은 대상 호스트는 ARP 응답 메시지로 자신의 MAC 주소를 전송합니다.
- 프로토콜 구조:
- ARP 헤더에는 하드웨어 타입, 프로토콜 타입, MAC 주소 길이, IP 주소 길이 등의 정보가 포함됩니다.
- 요청/응답 유형, 송신자/대상 하드웨어/프로토콜 주소 등이 포함됩니다.
브로드캐스트
송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
유니캐스트
고유 주소로 식별된 하나의 네트워크 목적지에 1:1 데이터로 전송하는 방식
MAC 주소
MAC(Media Access Control) 주소는 네트워크 장비의 데이터 링크 계층 주소로, 다음과 같은 특징을 가집니다.
- 고유 식별자:
- MAC 주소는 네트워크 장비에 고유하게 할당된 48비트 식별자입니다.
- 제조사별로 MAC 주소의 전반부를 관리하여 고유성을 보장합니다.
- 네트워크 계층과의 관계:
- IP 주소가 네트워크 계층의 논리적 주소라면, MAC 주소는 데이터 링크 계층의 물리적 주소입니다.
- 이더넷, Wi-Fi 등 하드웨어 연결에 직접 사용됩니다.
- 사용 용도:
- 동일 네트워크 내에서 장비 간 직접 통신 시 MAC 주소를 이용합니다.
- ARP 프로토콜을 통해 IP 주소와 MAC 주소를 매핑합니다.
- 표현 방식:
- MAC 주소는 XX:XX:XX:XX:XX:XX 형식으로 표현됩니다.
- 각 XX는 16진수 값(0-F)을 나타냅니다.
- 관리 및 변경:
- 제조사가 출고 시 설정한 MAC 주소는 변경할 수 없습니다.
- 일부 가상 환경에서는 소프트웨어적으로 MAC 주소를 변경할 수 있습니다.
MAC 주소는 네트워크 장비의 고유 식별자로, 데이터 링크 계층 통신에 필수적인 요소입니다.
2.4.3 IP 주소 체계
클래스 기반 할당 방식
IP 주소는 클래스 기반 할당 방식(Classful addressing)에 따라 다음과 같은 5개의 클래스로 구분됩니다:
- 클래스 A
- IP 주소 범위: 1.0.0.0 ~ 126.0.0.0
- 첫 번째 바이트 범위: 1 ~ 126
- 네트워크 부분: 첫 번째 바이트
- 호스트 부분: 나머지 3 바이트
- 총 호스트 수: 약 16.7백만 개
- 클래스 B
- IP 주소 범위: 128.0.0.0 ~ 191.255.0.0
- 첫 번째 바이트 범위: 128 ~ 191
- 네트워크 부분: 첫 2 바이트
- 호스트 부분: 마지막 2 바이트
- 총 호스트 수: 약 65,000 개
- 클래스 C
- IP 주소 범위: 192.0.0.0 ~ 223.255.255.0
- 첫 번째 바이트 범위: 192 ~ 223
- 네트워크 부분: 첫 3 바이트
- 호스트 부분: 마지막 1 바이트
- 총 호스트 수: 약 250 개
- 클래스 D
- IP 주소 범위: 224.0.0.0 ~ 239.255.255.255
- 첫 번째 바이트 범위: 224 ~ 239
- 멀티캐스트 주소에 사용
- 클래스 E
- IP 주소 범위: 240.0.0.0 ~ 255.255.255.254
- 첫 번째 바이트 범위: 240 ~ 255
- 실험적/예약 목적으로 사용
DHCP(Dynamic Host Configuration Protocol)
DHCP는 호스트의 IP 주소, 서브넷 마스크, 게이트웨이 등의 네트워크 설정 정보를 자동으로 제공하는 프로토콜입니다.
DHCP의 주요 기능은 다음과 같습니다:
- IP 주소 자동 할당
- DHCP 서버가 클라이언트에게 임시로 IP 주소를 할당합니다.
- 일반적으로 DHCP 서버는 IP 주소 풀(pool)에서 동적으로 IP 주소를 제공합니다.
- 네트워크 설정 정보 전달
- 클라이언트에게 서브넷 마스크, 게이트웨이, DNS 서버 주소 등의 설정 정보를 제공합니다.
- 임대(Lease) 기간 관리
- IP 주소는 일정 기간 동안만 클라이언트에게 임대됩니다.
- 임대 기간이 끝나면 DHCP 서버로 반환되어 다른 클라이언트에게 재할당될 수 있습니다.
DHCP를 사용하면 수동으로 IP 주소를 설정하지 않아도 됩니다. 따라서 네트워크 관리가 편리해지고, 유동적인 IP 주소 할당이 가능합니다.
DHCP는 주로 가정용 네트워크나 기업 내부 네트워크에서 사용되며, 서버 구축 및 클라이언트 구현이 용이하여 널리 사용되는 프로토콜입니다.
NAT
NAT(Network Address Translation)는 IP 주소를 변환하는 기술로, 다음과 같은 주요 기능을 합니다:
- 사설 IP 주소 사용
- NAT를 사용하면 내부 네트워크에서는 사설 IP 주소를 사용할 수 있습니다.
- 사설 IP 주소는 공인 IP 주소와 구분되어 외부 네트워크에서 직접 접근할 수 없습니다.
- IP 주소 변환
- NAT 장비는 내부 사설 IP 주소를 공인 IP 주소로 변환합니다.
- 내부 호스트가 외부로 통신할 때 사설 IP 주소를 공인 IP 주소로 변환합니다.
- 포트 매핑
- NAT는 내부 호스트의 포트 번호를 변환하여 외부로 전송합니다.
- 이를 통해 다수의 내부 호스트가 하나의 공인 IP 주소를 공유할 수 있습니다.
- 보안 기능
- NAT는 내부 네트워크와 외부 네트워크 사이의 직접 연결을 차단합니다.
- 이를 통해 내부 호스트를 외부 공격으로부터 보호할 수 있습니다.
NAT는 IP 주소 부족 문제를 해결하고 보안을 강화하는데 효과적이어서 현재 가장 널리 사용되는 IP 주소 변환 기술입니다.
2.5 HTTP
HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜입니다. 쉽게 설명하자면 웹 브라우저가 서버와 통신하는 규칙이에요.
2.5.1 HTTP/1.0
RTT (Round-Trip Time)
RTT는 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷의 왕복 시간입니다.
RTT 방식은 클라이언트와 서버 간의 왕복 시간을 측정하여 네트워크 상태를 파악하는 방식입니다. RTT 방식의 주요 특징은 다음과 같습니다:
- 왕복 시간 측정:
- 클라이언트가 서버에 요청을 보내고, 서버의 응답이 클라이언트에 도착하기까지의 시간을 측정합니다.
- 이 시간을 RTT (Round-Trip Time)라고 합니다.
- 네트워크 상태 파악:
- RTT 값을 통해 네트워크의 지연 시간 및 혼잡 상태를 간접적으로 확인할 수 있습니다.
- RTT가 길어지면 네트워크 상태가 좋지 않은 것으로 간주합니다.
- 전송 속도 조절:
- RTT 값을 바탕으로 HTTP 클라이언트는 데이터 전송 속도를 조절할 수 있습니다.
- 네트워크 상태가 좋지 않을 때는 전송 속도를 낮추어 혼잡을 줄일 수 있습니다.
- 재전송 제어:
- RTT 측정을 통해 패킷 손실 여부도 확인할 수 있습니다.
- 손실된 패킷은 재전송하여 신뢰성 있는 데이터 전송을 보장합니다.
HTTP에서 RTT 방식은 간단하면서도 효과적인 네트워크 상태 파악 및 전송 속도 조절 기법으로 사용됩니다.
2.5.2 HTTP/1.1
HTTP/1.0에서 발전한 것이 HTTP/1.1입니다. 요청마다 매번 TCP 연결을 하는 것이 아니라 한 번 TCP 초기화를 한 이후에 keep-alive 옵션으로 여러 개의 파일을 송수신할 수 있게 바뀌었습니다. HTTP/1.0에서도 keep-alive 옵션이 있었지만 표준화가 되어 있지 않았고 HTTP/1.1부터 표준화가 되어 기본 옵션으로 설정되었습니다.
HOL Blocking(Head Of Line Blocking)
HOL Blocking은 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상을 말합니다. 예를 들어 image.jpg, style.css, data.xml을 불러와야 하는 상황일 때, image.jpg가 느리게 받아진다면 그 뒤에 있는 것들이 대기하게 되며 다운로드가 지연되는 상태를 말합니다.
2.5.3 HTTP/2
HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무거운 문제가 있었습니다.
HTTP/2는 SPDY 프로토콜에서 파생된 HTTP/1.x 보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 다음과 같은 처리를 지원하는 프로토콜입니다.
- 멀티플렉싱
- 헤더 압축
- 서버 푸시
- 요청의 우선순위 처리 지원
멀티플렉싱
멀티플렉싱이란 여러 개의 스트림을 사용하여 송수신한다는 것입니다. 이를 통해 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 원활하게 동작할 수 있습니다.
스트림
시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름
2.5.4 HTTPS
HTTPS/2는 HTTPS 위에서 동작합니다. HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말합니다. 이를 통해 ‘통신을 암호화’ 합니다.
SSL/TLS
SSL(Socket Secure Layer)은 SSL 1.0부터 시작해서 SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.3까지 버전이 올라가며 마지막으로 TLS로 명칭이 변경되었으나, 보통 이를 합쳐 SSL/TLS로 많이 부릅니다.
SSL/TLS은 전송 계층에서 보안을 제공하는 프로토콜입니다. 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 합니다.
세션
운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻한다. 즉, 사용자는 일정 시간 동안 응용 프로그램, 자원 등을 사용할 수 있다.
인증 메커니즘
인증 메커니즘은 CA(Certificate Authorities)에서 발급한 인증서를 기반으로 이루어집니다. CA에서 발급한 인증서는 안전한 연결을 시작하는 데 있어 필요한 ‘공개키’를 클라이언트에 제공하고 사용자가 접속한 ‘서버가 신뢰’할 수 있는 서버임을 보장합니다.
CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만 참여할 수 있습니다. 대표적인 기업으로는
- Comodo
- GoDaddy
- GlobalSign
- 아마존
등이 있습니다.
해시, 해싱, 해시 함수
해시: 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값
해싱: 임의의 데이터를 해시로 바꿔주는 일이며 해시 함수가 이를 담당
해시 함수: 임의의 데이터를 입력 을로 받아 일정한 길이의 데이터로 바꿔주는 함수
https 구축 방법
- 직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스를 구축
- 서버 앞단의 HTTPS를 제공하는 로드밸런스를 둔다
- 서버 앞단에 HTTPS를 제공하는 CDN을 둬서 구축한다
2.5.5 HTTP/3
HTTP/3은 QUIC이라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반으로 돌아갑니다. HTTP/2에서 장점이었던 멀티플렉싱을 가지고 있으며 초기 연결 설정 시 지연 시간 감소라는 장점이 있습니다.
QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거로운 3-웨이 핸드셰이크 과정을 거치지 않아도 됩니다.
레퍼런스
'Computer Science' 카테고리의 다른 글
운영체제 (1) 2024.04.25 네트워크 (1) (1) 2024.04.18 기본 리눅스 명령어 15가지 알아두기 (1) 2024.02.26 프로그래밍 패러다임 (1) 2023.03.12