[CS] 네트워크

junwoo·2022년 6월 29일
0

CS

목록 보기
2/6

2.1 네트워크의 기초

컴퓨터들이 통신 기술을 이용하여 구축하는 연결망

2.1.1 처리량과 지연 시간

좋은 네트워크 조건 : 많은 처리량, 짧은 지연 시간, 적은 장애 빈도, 좋은 보안 갖춤

처리량

링크를 통해 전달되는 단위 시간당 데이터 양 (bfs)

  • 트래픽, 네트워크 장치 간의 대역폭, 에러, 하드웨어 스펙에 영향을 받음

지연 시간

요청이 처리되는 시간

  • 매체 타입(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음

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

네트워크 토폴로지

  • 노드와 링크의 연결 형태
  • 병목 현상을 찾을 때 중요한 기준

트리 토폴로지

  • 계층형 토폴로지
  • 트리 형태로 배치한 네트워크 구성
    장) 노드의 추가, 삭제가 쉬움
    단) 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음

버스 토폴로지

  • 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성
  • 근거리 통신망(LAN)에서 사용
    장) 설치 비용이 적고 신뢰성이 우수하며 노드를 추가하거나 삭제하기 쉬움
    단) 스푸핑이 가능한 문제점

    스푸핑

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

스타 토폴로지

  • 중앙에 있는 노드에 모두 연결된 네트워크 구성
    장) 노드 추가와 에러 탐지가 쉽고 패킷의 충돌 발생 가능성이 적음
    단) 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가

링형 토폴로지

  • 각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신하는 망 구성 방식
    장) 노드 수가 증가되어도 네트워크상의 손실이 거의 없고, 충돌 발생 가능성이 적으며, 노드의 고장 발견이 쉬움
    단) 네트워크 구성 변경이 어렵고, 회선에 장애 발생 시 전체 네트워크에 영향

메시 토폴로지

  • 망형 토폴로지
  • 그물망처럼 연결되어 있는 구조
    장) 장애 발생 시 여러 개의 경로가 존재하므로 네트워크를 계속 사용 가능하고, 트래픽 분산 처리 가능
    단) 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가

병목현상

  • 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
  • 주된 원인
    네트워크 대역폭, 네트워크 토폴로지, 서버 CPU, 메모리 사용량, 비효율적인 네트워크 구성
  • 네트워크가 어떤 토폴로지를 갖는지, 어떠한 경로로 이루어져 있는지 알아야 병목 현상을 올바르게 해결 가능

2.1.3 네트워크 분류

규모를 기반으로 분류

항목LANMANWAN
규모근거리대도시 지역광역
전송 속도고속평균저속

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

ping

네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어

netstat

접속되어 있는 서비스들의 네트워크 상태 표시

nslookup

도메인에 매핑된 IP 확인

tracert

목적 노드까지 네트워크 경로 확인

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

네트워크 프로토콜이란 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스입니다.
이를 통해 다른 장치라도 서로 데이터를 주고 받을 수 있습니다. 예를 들어 웹에 접속할 때 쓰이는 프로토콜로 HTTP가 있습니다.


2.2 TCP/IP 4계층 모델

OSI 7계층

OSI 7계층은 인터넷 환경에서 통신하기 위해 네트워킹에 대한 표준을 7계층으로 나눈 것입니다. 크게 7계층이 있는데요 물리 계층, 데이터링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 그리고 응용 계층이 있습니다. 문제가 발생했을 때 계층을 통한 문제 발생 지점과 해당 계층 문제 해결을 통해 문제를 해결할 수 있다는 이점이 있습니다.

TCP/IP 4계층 모델

2.2.1 계층 구조

특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계됨

애플리케이션 계층

응용 프로그램이 사용되는 프로토콜 계층

  • FTP, SHH, HTTP, SMTP, DNS

    DNS

    DNS는 도메인 주소를 IP 주소로 변환해주는 시스템입니다. DNS는 다음과 같은 순서로 작동하게 되는데요. 첫번째로는 URL을 입력하면, ISP가 관리하는 DNS 해석기에 요청을 라우팅 시킵니다. 그 다음에 DNS 해석기가 루트 서버에 top-level의 서버 주소를 요청하구요. 그 다음에 second-level, sub DNS server. 이렇게 해서 최종적으로 IP 주소를 얻게 됩니다.

참고 블로그(https://hanamon.kr/dns%eb%9e%80-%eb%8f%84%eb%a9%94%ec%9d%b8-%eb%84%a4%ec%9e%84-%ec%8b%9c%ec%8a%a4%ed%85%9c-%ea%b0%9c%eb%85%90%eb%b6%80%ed%84%b0-%ec%9e%91%eb%8f%99-%eb%b0%a9%ec%8b%9d%ea%b9%8c%ec%a7%80/)

전송 계층

송신자와 수신자를 연결하는 통신 서비스를 제공

  • TCP, UDP
TCPUDP
패킷 순서 보장패킷 순서 보장 X
연결을 통한 신뢰성 구축연결 X
수신 여부 확인수신 여부 미확인
가상회선 패킷 교환 방식데이터그램 패킷 교환 방식

가상회선 패킷 교환 방식

각 패킷은 식별자를 통해 하나의 가상 회선으로만 이동하며 모든 패킷을 전송하면 가상회선이 해제되고 전송된 순서대로 도착하는 방식

데이터그램 패킷 교환 방식

패킷이 독립적으로 최적의 경로를 선택해 이동, 순서가 다를 수 있음

TCP 연결 성립 과정

3-Way Handshake

TCP 연결을 할 때 사용하는 작업 (1. 계세요? 2. 있습니다 3. 네 보냅니다)
1. SYN(SYNchronization, 연결 요청 플래그) 단계 : 클라이언트가 서버에 클라이언트 ISN을 담아 SYN 전송
2. SYN+ACK 단계 : 서버는 클라이언트의 SYN을 받고, 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN+1을 전송
3. ACK(ACKnowledgement, 응답 플래그) 단계 : 클라이언트는 서버의 ISN응 받고, 서버의 ISN+1한 승인번호를 담아 ACK를 서버에 전송

4-Way Handshake

TCP 연결을 해제할 때 사용하는 작업 (1. 끊어도 돼요? 2. 잠시만요 3. 네 끊으세요 4. 끊습니다)
1. 클라이언트는 서버로 FIN을 보내고 FIN_WAIT_1 상태로 변함
2. 서버는 ACK을 보내고 CLOSE_WAIT 상태로 변경, 클라이언트는 FIN_WAIT_2 상태로 변경
3. 잠시 후에 클라이언트에 FIN 전송
4. 클라이언트 TIME_WAIT 상태가 되고 서버로 ACK 전송, 서버 CLOSED 상태 변경, 잠시 후에 연결이 닫히고 클라이언트와 서버의 연결 해제

TIME_WAIT이 있는 이유

  1. 지연 패킷이 있는 경우 데이터 무결성 문제 발생
  2. 두 장치가 연결이 닫혔는지 확인하기 위함

인터넷 계층

장치로부터 받은 패킷을 지정된 IP주소로 전송하기 위해 사용하는 계층

  • IP, ARP, ICMP 등

링크 계층

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

계층 간 데이터 송수신 과정

애플리케이션 계층에서 하위 계층으로 캡슐화 과정을 거쳐 전달하고, 해당 서버의 링크 계층으로부터 애플리케이션까지 비캡슐화 과정을 거쳐 데이터 전송

캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정

2.2.2 PDU

계층 간 데이터가 전달될 때 덩어리의 단위

  • 헤더(제어 관련 정보들)와 페이로드(데이터)로 이루어짐
계층명칭
애플리케이션 계층메시지
전송 계층TCP(세그먼트) UDP(데이터그램)
인터넷 계층패킷
링크 계층데이터링크계층(프레임) 물리계층(비트)

2.3 네트워크 기기

네트워크는 여러 개의 네트워크 기기를 기반으로 구축

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

  • 네트워크 기기는 계층별로 처리 범위를 나눌 수 있음
  • 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가

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

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

로드밸런서

서버의 부하를 분산시켜주는 시스템입니다. 크게 L4 로드밸런서와, L7 로드밸런서가 있는데요. L4 로드밸런서는 4계층 이하의 정보를 가지고 로드를 분산해줍니다. 특히 MAC주소, IP주소, 포트정보를 가지고 트래픽을 분산해주고요. L7 로드밸런서는 응용 계층의 정보를 가지고 로드를 분산해줘요. 패킷 내용을 확인하고 분산해서 DDos 같은 비정상적인 트래픽도 필터링할 수 있습니다. 이를 활용하여 서비스를 안정적으로 운용하게 해주는 서버 이중화도 가능합니다.

헬스 체크

반복적으로 서버에 요청을 보내어 정상적인 서버 또는 비정상적인 서버를 판별

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

라우터, L3 스위치

라우터

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

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

L2 스위치, 브리지

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

NIC, 리피터, AP

NIC

  • LAN 카드, 네트워크 인터페이스 카드
  • 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용
  • 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
  • 각 LAN 카드에는 각각을 구분하기 위한 고유의 식별번호인 MAC 주소가 있다

리피터

  • 들어오는 약해진 신호를 증폭하여 다른 쪽으로 전달하는 장치
  • 광케이블이 보급됨에 따라 현재는 잘 쓰이지 않는 장치

AP

  • 패킷을 복사하는 기기

2.4 IP주소

IP는 Internet Protocol의 약자로 인터넷 망을 통해 패킷을 전달하는 프로토콜입니다. 비연결성과 비신뢰성의 특징을 가지는데요. 비연결성은 패킷을 보내는 길을 정하지 않는 것이고, 비신뢰성은 패킷의 완전한 전달을 보장하지 않는 것입니다.

  • 지정한 IP 주소에 데이터 전달
  • 패킷이라는 통신 단위로 데이터 전달

2.4.1 ARP

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

  • IP주소(논리적 주소)에서 ARP를 통해 MAC 주소(물리적 주소)를 찾아 MAC 주소를 기반으로 통신

2.4.2 홉바이홉 통신

  • IP주소를 통해 통신하는 과정
  • 라우팅 과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신

    라우팅은 IP 주소를 찾아가는 과정

라우팅 테이블

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

2.4.3 IP주소 체계

IPv4, IPv6

NAT

  • 패킷의 IP 주소를 다른 주소로 매핑하는 방법

왜 사용할까?

  • 한정된 IP 주소가 현재 고갈되고 있는 상태이기에 여러 장비가 하나의 IP 주소를 공유하도록 하여 이를 해결하고자 함

NAT에 대한 참고 자료 (https://run-it.tistory.com/24)

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

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

2.5 HTTP

2.5.1 HTTP/1.0

  • 한 연결당 하나의 요청을 처리하도록 설계
  • 서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에 RTT가 증가한다는 단점

    RTT는 패킷 왕복 시간을 의미한다.

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

이미지 스플리팅

이미지가 합쳐 있는 하나의 이미지를 다운로드 받고, background-image의 position을 이용하여 이미지를 표기

코드 압축

코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기(용량)를 최소화

이미지 Base64 인코딩

이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법

2.5.2 HTTP/1.1

(매번 TCP 연결을 하는 것이 아니라) 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신

  • 요청할 리소스(이미지, css 파일, script 파일) 갯수에 비례해서 대기 시간이 길어지는 단점

HOL Blocking (Head Of Line Blocking)

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

무거운 헤더 구조

헤더에 많은 메타데이터가 들어 있고 압축이 되지 않아 무거움

2.5.3 HTTP/2

HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있습니다.

멀티플렉싱

여러 개의 스트림을 사용하여 송수신

헤더 압축

허프만 알고리즘을 사용하는 HPACK 압축 형식

허프만 코딩텍스트 압축을 위해 널리 사용되는 방법으로, 자주 출현하는 문자는 적은 비트의 코드로 변환하여 표현하고 출현 빈도가 낮은 문자는 많은 비트의 코드로 변환하여 표현해서 전체 데이터 표현에 필요한 비트 양을 줄이는 방식

서버 푸시

클라이언트 요청 없이 서버가 바로 리소스를 푸시
ex) html을 읽으면서 그 안에 들어 있던 css 파일을 서버에서 푸시하여 클라이언트에 먼저 전송

2.5.4 HTTPS

애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청 (통신을 암호화)

SSL/TLS

전송 계층에서 보안을 제공하는 프로토콜

SEO에도 도움이 되는 HTTPS

SEO(Search Engine Optimization)는 검색엔진 최적화를 의미하며, HTTPS 구축, 캐노니컬 설정, 메타 설정, 페이지 속도 개선, 사이트맵 관리 등을 통해

2.5.5 HTTP/3

TCP 기반이 아닌 UDP 기반으로 돌아간다.

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

  • QUIC은 첫 연결 설정에 1-RTT만 소요

    QUIC은 순방향 오류 수정 메커니즘이 적용.
    전송한 패킷이 손상되었다면 수신 측에서 에러를 검출하고 수정하는 방식이며 열약한 네트워크 환경에서도 낮은 패킷 손실률.


profile
오늘보다 발전된 내일을 위한 기록

0개의 댓글