2.1 네트워크의 기초

네트워크란 노드와 링크가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미

2.1.1 처리량과 지연 시간

처리량

처리량이란 링크를 통해 전달되는 단위 시간당 데이터양을 말한다

지연 시간

요청이 처리되는 시간 두 장치 사이를 왕복하는데 걸린 시간
지연시간은 매체 타입(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간 영향을 받는다

2.1.2 네트워크 토폴로지와 병목 현상

네트워크 토폴로지

노드와 링크가 어떻게 배치되어 있는지, 연결 형태를 의미

1. 트리 토폴로지

계층형 토폴로지, 트리 형태 배치한 네트워크 구성

  • 장점: 노드의 추가, 삭제가 쉽다
  • 단점: 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있다

2. 버스 토폴로지

중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성, 근거리 통신망(LAN)에서 사용

  • 장점: 설치 비용이 적고 신뢰성이 우수하며 중앙 통신 회선에 노드를 추가하거나 삭제하기 쉽다.
  • 단점: 스푸핑이 가능한 문제점이 있다

*스푸핑
LAN상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것을 말함

3. 스타 토폴로지

중앙에 있는 노드에 모두 연결된 네트워크 구성

  • 장점: 노드를 추가하거나 에러를 탐지하기 쉽고 패킷의 충돌 발생 가능성이 적다, 어떠한 노드에 장애가 발생해도 쉽게 에러를 발견할 수 있으며 장애 노드가 중앙 노드가 아닐경우 다른 노드에 영향을 끼치는 것이 적다
  • 단점: 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가이다

4. 링형 토폴로지

각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식

  • 장점: 노드 수가 증가되어도 네트워크상의 손실이 거의 없고 충돌이 발생되는 가능성이 적고 노드의 고장 발견을 쉽게 찾을 수 있다.
  • 단점: 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼치는 단점이 있다.

5. 메시 토폴로지

그물망처럼 연결되어 있는 구조

  • 장점: 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크를 계속 사용할 수 있고 트래픽도 분산 처리가 가능
  • 단점: 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가

병목 현상

토폴로지가 중요한 이유는 병목 현상을 찾을 때 중요한 기준이 되기 때문이다

  • 사용자가 서비스 사용 시 지연시간이 길게 발생, 대역폭 크게 설정해도 성능 개선X

  • 회선 추가로 병목현상 해결

2.1.3 네트워크 분류

LAN

근거리 통신망

MAN

도시지역 통신망

WAN

광역 네트워크

2.1.4 네트워크 성능 분석 명령어

네트워크 병목 현상 발생 시 분석을 해봐야한다
네트어크 병목 현상의 주된 원인은

  • 네트워크 대역폭
  • 네트워크 토폴로지
  • 서버 CPU, 메모리 사용량
  • 비효율적인 네트워크 구성

ping

ping을 통해 알 수 있는 것
1. 해당 노드의 패킷 수신 상태
2. 도달하기까지의 시간
3. 해당 노드까지 네트워크가 잘 연결되어 있는지

  • ping은 TCP/IP 프로토콜 중에 ICMP 프로토콜을 통해 동작

netstat

접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용
1. 네트워크 접속
2. 라우팅 테이블
3. 네트워크 프로토콜
등의 리스트를 보여줌

주로 서비스의 포트가 열려 있는지 확인할 때 사용

nslookup

DNS 관련 내용 확인위해 사용
특정 도메인에 매핑된 IP를 확인하기 위해 사용

tracert

목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어

2.1.5 네트워크 프로토콜 표준화

네트워크 프로토콜이란 장치 간 데이터 송수신 시에 설정된 공통된 통신규약
IEEE, IETF라는 표준화 단체에서 정한다


2.2 TCP/IP 4계층 모델

인터넷 프로토콜 스위트 표현 방법 두가지 TCP/IP, OSI 7계층
이하 내용은 TCP/IP 4계층 모델 기준

2.2.1 계층 구조


애플리케이션 계층

애플리케이션 계층은 FTP, HTTP, SSH, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층

전송계층

전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있고 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 한다.
대표적으로 TCP, UDP

  • TCP : 패킷 사이의 순서 보장, 연결지향 프로토콜, 신뢰성을 구축해서 수신여부를 확인하며 '가상회선 패킷 교환 방식' 사용
  • UDP : 순서 보장 X, 수신 여부를 확인하지 않음, 단순히 데이터만 주는 '데이터그램 패킷 교환 방식'

가상회선 패킷 교환 방식

각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식

데이터그램 패킷 교환 방식

패킷이 독립적으로 이동하며 최적의 경로를 선택하며 간다. 여러 패킷으로 나뉘어 다른 경로로 전송될 수 있으며 도착한 순서가 다를 수 있다

TCP 연결 성립 과정

TCP는 3way handshake로 신뢰성을 확보한다

1. SYN 단계: 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냄. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호
2. SYN+ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN +1을 보낸다
3. ACK 단계: 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보낸다

  • TCP는 이 과정이 있기에 신뢰성이 있으며 UDP는 없기 때문에 신뢰성이 없다

TCP 연결 해제 과정

해제 시에는 4way handshake 과정 발생

1번: 클라이언트가 먼저 FIN 보냄, FIN_WAIT_1 상태로 변경하고 서버 응답 대기
2번: 서버는 ACK라는 승인을 보냄, CLOSE_WAIT 상태로 변경, 클라이언트가 이를 받으면 FIN_WAIT_2 상태로 들어감
3번: 서버는 ACK를 보내고 일정 시간 이후에 FIN 보냄
4번: 클라이언트는 TIME_WAIT이 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 됨. 이후 클라이언트는 어느 정도 시간 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제된다

TIME_WAIT

굳이 TIME_WAIT 하는 이유는?
1. 지연 패킷이 발생할 경우 대비 데이터 무결성 문제 발생할 수 있기 때문
2. 두 장치가 연결이 닫혔는지 확인하기 위해서. 만약 LAST_ACK 상태에서 닫히게 된다면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기 때문에 접속 오류가 나타나게 될 서 이다.

인터넷 계층

장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
IP, ARP, ICMP 등이 있다
비연결적인 특징을 가지고 있다

링크 계층

전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달한다

이더넷 프레임

  • Preamble: 이더넷 프레임이 시작임을 알림
  • SFD: 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
  • DMAC, SMAC: 수신, 송신 MAC 주소를 말함
  • EtherType: 데이터 계층 위의 계층인 IP 프로토콜을 정의
  • Payload: 전달받은 데이터
  • CRC: 에러 확인 비트

계층 간 데이터 송수신 과정

캡슐화 과정

비캡슐화 과정

2.2.2 PDU

네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위를 PDU라고 한다
PDU = 헤더 + 페이로드

  • 애플리케이션 계층: 메시지
  • 전송 계층: 세그먼트, 데이터그램
  • 인터넷 계층: 패킷
  • 링크 계층: 프레임, 비트

2.3 네트워크 기기

2.3.1 네트워크 기기의 처리 범위

네트워크 기기는 계층별로 처리 범위를 나눌 수 있다, 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있다. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다.

  • 애플리케이션 계층: L7 스위치
  • 인터넷 계층: 라우터, L3 스위치
  • 데이터 링크 계층: L2 스위치, 브리지
  • 물리 계층: NIC, 리피터, AP

2.3.2 애플리케이션 계층을 처리하는 기기

L7 스위치

스위치는 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비이다.

  • L7 스위치는 로드밸런서라고하며 서버의 부하를 분산하는 기기
  • URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산한다

L4 스위치와 L7 스위치 차이

L4스위치는 전송 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용할 수 없으며 메시지를 기반으로 인식하지 못하고 IP와 포트(특히 포트)를 기반으로 트래픽을 분산한다

헬스체크

L4, L7 모두 헬스 체크를 통해 정상적인 서버 또는 비정상적인 서버를 판별한다.
헬스 체크는 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것을 말함

로드밸런서를 이용한 서버 이중화

로드밸런서의 대표기능 서버 이중화
로드밸런서는 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공한다

2.3.3 인터넷 계층을 처리하는 기기

라우터

여러 개의 네트워크를 연결, 분할, 구분시켜주는 역할
다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 라우팅을 하는 장비

L3 스위치

L2 스위치 기능 + 라우팅 기능
라우터라고 해도 무방

2.3.4 데이터 링크 계층을 처리하는 기기

L2 스위치

MAC주소 테이블을 통해 MAC 주소 관리
연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당
IP주소를 이해하지 못해 IP 주소를 기반을 라우팅은 불가능하며 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다. 목적지가 MAC 주소 테이블에 없다면 전체 포트에 전달하고 MAC 주소 테이블의 주소는 일정 시간 이후 삭제하는 기능도 있다.

브리지

두 개의 LAN을 상호 접속할 수 있도록 하는 통신망 연결 장치

통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 '하나의' 통신망을 구축할 때 쓰임

2.3.5 물리 계층을 처리하는 기기

NIC

Network Interface Card
LAN 카드
MAC주소가 부여되어 데이터를 송수신할 수 있도록 컴퓨터에 설치되는 장비

리피터

들어오는 약해진 신호 정도를 증폭시켜 다른 쪽으로 전달하는 장치

AP

패킷을 복사하는 기기

2.4 IP 주소

2.4.1 ARP

컴퓨터 간의 통신은 사실 ARP 통해 알아온 MAC주소 기반 통신

ARP란 IP주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할하는 프로토콜

ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환

라우팅 테이블

라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트

게이트웨이

서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어

2.4.3 IP 주소 체계

1. IPv4: 32비트를 8비트 단위로 점을 찍어 표기
2. IPv6: 64비트를 16비트 단위로 점을 찍어 표기

클래스 기반 할당 방식

A, B, C, D, E 다섯 개의 클래스로 구분된 클래스 기반 할당 방식

  • A,B,C는 일대일 통신으로 사용
  • D는 멀티캐스트 통신
  • E는 앞으로 사용할 예비용
  • 맨 왼쪽에 있는 비트를 '구분 비트'라고 한다. A는 0 / B는 10 / C는 110
  • 네트워크의 첫번째 주소는 네트워크 주소로 사용
  • 마지막 주소는 브로드캐스트용 주소로 네트워크에 속해 있는 모든 컴퓨터에 데이터를 보낼 때 사용

하지만 이 방식은 사용하는 주소보다 버리는 주소가 많은 단점이 있었고 이를 해소하기 위해 DHCPIPv6, NAT가 나옴

DHCP

DHCP는 IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜

NAT

NAT는 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법. IPv4의 IP주소 부족 단점 해소

  • 공인 IP와 사설 IP로 나눠서 많은 주소를 처리

공유기와 NAT

NAT를 쓰는 이유는 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함

NAT 이용한 보안

NAT를 이용하면 내부 네트워크 IP주소가 노출되지 않기 떄문에 보안 가능

NAT 단점

여러명이 동시에 인터넷 접속하므로 숫자가 늘어날수록 접속 속도가 느려질 수 있다

2.4.4 IP주소를 이용한 위치 정보

IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에 이를 통해 동, 구까지 위치 추적이 가능하다


2.5 HTTP

애플리케이션 계층에서 사ㅛㅇㅇ되는 프로토콜이며 HTTP/1.0부터 HTTP/3.0까지 발전했다

2.5.1 HTTP/1.0

기본적으로 한 연결당 하나의 요청을 처리한다. 이는 RTT 증가를 불러오게 되었다

RTT 증가


서버로 파일 요청을 할 때마다 TCP의 3way handshake가 계속 열리기 때문에 RTT가 증가한다

RTT의 증가를 해결하기 위한 방법

이미지 스플리팅. 코드 압축, 이미지 Base64 인코딩 사용했었다

이미지 스플리팅

많은 이미지를 합쳐있는 하나의 이미지로 다운받고 background-image의 position을 이용하여 이미지로 표기하는 방법

코드 압축

코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법

->

이미지 Base64 인코딩

이미지 파일을 64진법으로 이루어진 문자열로 인코딜하는 방법
장점: 이미지에 대해 HTTP요청을 할 필요가 없어진다
단점: 37%정도 크기가 더 커진다

2.5.2 HTTP/1.1

매번 TCP 연결을 하는것이 아니라 한번 TCP 초기화 한 후 keep-alive 옵션을 준다

  • 한번 3way handshake가 발생 후 그 다음부터 발생하지 않음
  • 하지만 문서 안에 포함된 다수의 리소스(이미지, css 파일, script 파일)를 처리하려면 요청할 리소스 개수에 비례해서 대기 시간이 길어지는 단점

HOL Blocking

네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 떄 발생하는 성능 저하 현상을 말함

무거운 헤더 구조

HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어있고 압축이 되지 않아 무거웠다

2.5.3 HTTP/2

SPDY에서 파생된 HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜

멀티플렉싱

여러 개의 스트림을 사용하여 송수신하는것. 이를 통해 특정 스트림이 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 마치고 나머지 스트림은 멀쩡하게 동작할 수 있다

*스트림
시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름

이를 통해 단일 연결을 사용하여 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있다. 이를 통해 HTTP/1.x에서 발생하는 문제인 HOL Blocking을 해결할 수 있다.

헤더 압축


HTTP/2에선 헤더 압축(허프만 코딩 압축 알고리즘)을 써서 큰 헤더 문제를 해결한다

허프만 코딩

문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트량을 줄이는 원리

서버 푸시


클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다

  • html에는 css나 js파일이 포험되어있다. html을 읽으면서 그 안에 들어 있던 css 파일을 서버에서 푸시하여 클라이언트에 먼저 줄 수 있다.

2.5.4 HTTPS

HTTP/2는 HTTPS 위에서 둥작한다. HTTPS는 애플리케이션 계층과 전송 꼐층 사이에 신뢰 계층인 SSL.TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청 이를 통해 '통신을 암호화'한다

SSL/TLS

전송 계층에서 보안을 제공하는 프로토콜이다. 클라이언트가와 서버가 통신할 때 SSL/TLS를통해 제3자가 메시지를 도청하거나 변조하지 못하도록 한다

  • SSQL/TLS는 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 떄 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.

보안 세션

보안이 시작되고 끝나는 동안 유지되는 세션
SSL/TLS는 핸드쉐이크를 총해 보안 세션을 생성하고 이를 기반으로 상태정보 등을 공유

*세션
운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻한다

  • 클라이언트와 서버가 키를 공유하고 이를 기반으로 인증, 인증 확인 등의 작업이 일어나는 단 한번의 1-RTT가 생긴 후 데이터를 송수신한다

인증 메커니즘

CA에서 발급한 인증서를 기반으로 이루어진다.
CA에서 발급한 인증서는 '공개키'를 클라이언트에 제공하고 사용자가 접속한 '서버가 신뢰'할 수 있는 서버임을 보장

CA 발급 과정

자신의 서비스가 CA 인증서 발급 위해서 자신의 정보와 공개키를 CA에 제출

  • 디피 헬만 키 교환 암호화 알고리즘

  • 공개키는 중간에 공격자가 가로채도 그것을 복호화할 개인키가 없기 때문에 해킹할 수 없다

해싱 알고리즘

해싱 알고리즘은 데이터를 추정하기 히든 더 작고, 섞여있는 조각으로 만드는 알고리즘이다.
SSL/TLS는 해싱 알고리즘으로 SHA-256 알고리즘SHA-384 알고리즘을 쓴다

SHA-256 알고리즘

해시 함수의 결과값이 256비트인 알고리즘이다. SHA-256 알고리즘은 해싱을 해야 할 메시지에 1을 추가하는 등 전처리를 하고 전처리된 메시지를 기반으로 해시를 반환한다.

*해시
다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값

*해싱
임의의 데이터를 해시로 바꿔주는 일이며 해시 함수가 이를 담당

*해시
임의의 데이터를 입력으로 받아 일정한 데이터로 바꿔주는 함수

HTTPS 구축 방법

HTTPS 구축방법 3가지

  1. 직접 CA에서 구매한 인증키로 구축
  2. 서버 앞단의 HTTPS를 제공하는 로드밸런서를 둔다
  3. 서버 앞단의 HTTPS를 제공하는 CDN을 둔다

2.5.5 HTTPS/3

HTTPS/2 : TCP 기반
HTTPS/3 : QUIC 기반, UDP 기반

  • 멀티플렉싱을 가지고 있으며 초기 연결 설정 시 지연 시간 감소라는 장점이 있다

초기 연결 설정시 지연 시간 감소

QUIC는 TCP를 사용하지 않기 떄문에 통신을 시작할 대 번거로운 3way handshake 과정을 거치지 않아도 된다.

  • QUIC는 첫 연결 설정에 1-RTT만 소요된다.
  • QUIC는 순방향 오류 수정 매커니즘이 적용되었다. 이는 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식이며 열악한 네트워크 환경에서도 낮은 패킷 손실률을 자랑한다
profile
88888888

0개의 댓글