본문 바로가기
  • 실행력이 모든걸 결정한다
IT 상식/CS

[CS] 네트워크 요약

by 김코더 김주역 2022. 11. 6.
반응형

1. 네트워크의 개념

- 네트워크는 통신 분야의 개념으로 노드(네트워크 장치)와 링크(선로)로 구성되는 전송 매체다.

 

1) 처리량과 지연 시간

- 처리량 : 단위 시간당 전달되는 데이터양으로 bps 단위를 사용함

- 대역폭 : 특정 기능을 수행할 수 있는 주파수의 범위

- 지연시간 : 요청이 처리되는 왕복 시간

 

 

2) 토폴로지

- 네트워크의 노드와 링크가 배치되어 있는 방식

 

(1) 트리

- 계층형 토폴로지라고도 함

- 노드의 추가와 삭제가 쉬움

 

(2) 버스

- 중앙 회선 하나에 여러 노드가 연결되어 있는 구조

- 주로 LAN(근거리 통신망)에 사용됨

- 노드의 추가와 삭제가 쉬우며, 설치 비용이 적고 신뢰성이 우수함

- 스푸핑의 위험이 있음. 스푸핑은 악의적인 노드에 패킷이 오도록 하는 공격을 뜻함

 

(3) 성형

- 노드들이 모두 중앙에 연결되어 있는 구조

- 노드의 추가와 삭제가 쉬우며, 중앙이 아닌 노드의 에러에 대한 대처가 쉬움

- 설치 비용이 높고 중앙 노드에 장애가 발생하면 전체 네트워크가 마비됨

 

(4) 링형

- 각각의 노드가 양 옆의 노드와 연결되어 있는 구조

- 충돌이 발생할 가능성이 적고 노드의 에러를 쉽게 발견할 수 있음

- 노드의 추가와 삭제가 어렵고 장애가 발생하면 전체 네트워크에 심한 영향을 끼침

 

(5) 망형

- 각 노드가 모든 노드와 연결되어 있는 구조

- 장애와 트래픽에 강함

- 노드의 추가와 삭제가 어렵고 구축 비용이 높음

 

 

3) 병목 현상

- 전체 시스템이 하나의 시스템으로 인해 제한을 받는 현상

- 병목 현상의 원인으로는 대역폭, 토폴로지, CPU, 메모리 사용량등이 있음

 

 

4) 네트워크의 종류

- LAN(Local Area Network) : 근거리 통신망으로 전송 속도도 빠르고 혼잡하지 않음

- MAN(Metropolitan Area Network) : 대도시 규모 통신망으로 전송 속도와 혼잡도가 보통임

- WAN(Wide Area Network) : 전세계 규모 통신망으로 전송 속도도 느리고 혼잡도도 높음

 

 

5) 네트워크 관련 명령어

  • ping : 대상 노드에 패킷을 보내서 네트워크의 연결 상태와 패킷의 도달 시간을 확인할 수 있으며, ICMP 프로토콜 기반으로 동작함
  • netstat : 서비스들의 네트워크 상태를 확인할 수 있다.
  • nslookup : DNS 관련 정보를 확인할 수 있다. 특정 도메인에 매핑된 IP를 확인할 수 있다.
  • tracert(윈도우), traceroute(리눅스) : 목적지 노드까지의 네트워크 경로를 확인할 수 있다.
  • tcpdump : 노드로 오고가는 패킷을 확인할 수 있다.

 

 

6) 네트워크 프로토콜

- 네트워크상에서 쓰는 프로토콜은 통신에 대한 규약을 뜻한다.

- 서로 다른 장소에서도 특정 프로토콜을 통해 데이터를 주고 받을 수 있다.

 

 

 

2. TCP/IP 계층 모델

- 네트워킹 범위에 따라 계층으로 분리한 모델로, 네트워크 프로토콜들의 집합이다.

- OSI 7 Layer에 대한 내용은 이전 포스팅에서 다룬 바가 있으므로 TCP/IP 4 계층에 대해 설명할 것이다.

https://kimcoder.tistory.com/367

 

OSI 7Layer 설명 및 예시

1. OSI 7Layer이란? 서로 다른 두 기종간에 메세지를 주고받을 수 있는 이유는 통신 방식에 대한 약속(프로토콜)이 있었기 때문이며, 여기서 프로토콜의 3요소는 의미, 형식, 순서이다. OSI는 Open System

kimcoder.tistory.com

 

1) TCP/IP 4 계층 구조

(1) 애플리케이션 계층

- 응용 프로그램과 직접 관계하는 계층

- 사용자의 입출력 부분

 

(2) 전송 계층

- 종단간의 통신을 다루는 최하위 계층

- 주로 TCP, UDP 프로토콜을 이용

※ TCP : 3-way handshake 방식을 통한 가상연결 방식을 사용하여 패킷의 loss 없이 순서를 보장해주는 신뢰성을 보장함

※ UDP : 패킷의 수신 여부와 순서를 신경쓰지 않고 데이터만 전달함. 속도가 빠르기 때문에 실시간 통신에 사용됨

- 오류검출 및 복구, 흐름제어, 중복검사 수행

- Port를 열어서 응용프로그램들이 전송을 할 수 있게 함

 

(보충 개념) TCP의 3-way handshake와 4-way handshake

- 3-way handshake는 [클라이언트의 요청 -> 서버의 응답 -> 클라이언트의 확인 응답] 과정을 거친다. 

- 4-way handshake는 주로 연결을 해지할 때 수행되는 절차로, [클라이언트의 연결 해지 요청 -> 서버의 응답 -> 잠시 뒤에 서버의 연결 해지 준비가 끝나면 클라이언트로 플래그 전송 -> 클라이언트의 응답] 과정을 거친다.

 

(3) 인터넷 계층

- 목적지로 IP 패킷을 전송하는 기능 및 라우팅을 담당하는 계층

- 비연결적인 특징을 가짐

 

(4) 네트워크 접근 계층

- 유선랜과 무선랜을 통해 데이터를 전달해주고 에러 확인, 흐름 제어, 접근 제어를 수행하는 계층

 

(보충 개념) 유선랜 - IEEE802.3, Ethernet

- 전이중화 통신과 CSMA/CD 방식을 사용한다. 대표적인 케이블로는 주로 트위스트 페어 케이블과 광섬유 케이블이 있다.

※ 전이중화 통신 : 양쪽 장치가 서로 동시에 통신할 수 있는 통신 방식

※ CSMA/CD : 데이터를 보낸 이후에 충돌이 발생한다면 일정 시간 이후에 재전송함

 

(보충 개념) 무선랜 - IEEE802.11

- 반이중화 통신과 CSMA/CA 방식을 사용한다. 공기에 주파수를 쏘아 통신하며, 주로 5GHz 대역을 사용한다.

※ 반이중화 통신 : 양쪽 장치가 서로 통신은 할 수 있지만, 동시에는 통신할 수 없는 통신 방식이다. 두 장치가 동시에 전송하면 충돌이 발생할 수 있다.

※ CSMA/CA : 데이터를 보내기 전에 회선이 비어 있는지를 판단하고, 회선이 비어 있다면 데이터를 전송함

 

 

2) 계층 간 데이터 전달

(1) 캡슐화와 비캡슐화

캡슐화는 상위 계층에서 하위 계층으로 이동하면서 헤더를 붙여나가는 과정을 의미하고, 비캡슐화는 하위 계층에서 상위 계층으로 이동하면서 헤더를 떼어나가는 과정을 의미한다.

 

(2) 계층 간 데이터 전달 과정

먼저, 송신측은 애플리케이션 계층부터 네트워크 접근 계층까지 내려가면서 캡슐화를 진행한다.

-> 송신측과 수신측의 네트워크 접근 계층 간에 통신을 한다.

-> 수신측은 네트워크 접근 계층부터 애플리케이션 계층까지 올라가면서 비캡슐화를 진행한다.

 

(3) PDU

- 각 계층의 데이터 통신 단위를 PDU(Protocol Data Unit)라고 하며, PDU는 제어 정보들이 포함된 헤더와 데이터를 의미하는 페이로드로 구성되어 있다.

- 각 계층의 PDU는 다음과 같다.

  • 애플리케이션 계층 : 메시지
  • 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
  • 인터넷 계층 : 패킷
  • 네트워크 접근 계층 : 프레임과 비트

 

 

 

3. 네트워크 기기

- 통신 계층별로 사용되는 네트워크 기기는 다르며, 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 없지만 그 반대는 불가능하다.

 

1) 애플리케이션 계층 기기 - L7 스위치

- 스위치는 여러 장비를 연결하며, 목적지로 가는 포트로 데이터를 전송해주는 장비다.

- L7 스위치는 서버의 부하를 분산하는 로드밸런서 역할을 한다. 덕분에 시스템은 더 많은 트래픽을 처리할 수 있고, 서버 이중화 기능을 통해 서비스를 안정적으로 운용할 수 있다.

- 바이러스나 불필요한 데이터들을 걸러내는 필터링 기능과 트래픽 모니터링(헬스 체크) 기능을 지원한다.

 

(보충 개념) L4 스위치

- L4 스위치도 로드밸런서 역할을 한다. 그러나 스트리밍 관련 서비스에서는 사용할 수 없고, 메시지가 아닌 IP와 포트를 기준으로 트래픽을 분산한다.

- 헬스 체크 기능을 지원한다.

 

 

2) 인터넷 계층 기기

(1) 라우터

- 최적의 경로를 결정해서 패킷을 포워딩해주는 장비

 

(2) L3 스위치

- 하드웨어 기반의 라우팅을 담당하는 장치

- 링크 계층에서 동작하는 L2 스위치의 기능도 갖고 있음

 

 

3) 데이터 링크 계층 기기

(1) L2 스위치

- MAC 주소를 읽어 패킷을 전송하는 장치

- MAC 주소 테이블을 통해 관리함

 

(2) 브리지

- 두 개의 LAN을 연결해주는 장치로, 통신망을 확장할 때 쓰임

- MAC 주소 테이블을 통해 관리함

 

 

4) 물리 계층 기기

(1) NIC(Network Interface Card)

- 컴퓨터를 네트워크에 연결시키기 위한 장치

- LAN 카드라고도 불리며, MAC 주소로 LAN 카드를 식별함

 

(2) 리피터

- 신호를 증폭시켜서 전달하는 장치

 

(3) AP(Access Point)

- 패킷을 복사하는 장치

- 유선랜에 흐르는 신호를 무선랜 신호로 변환해주기 때문에 공유기라고도 불림

 

 

 

4. IP 통신

1) ARP와 RARP

- ARP는 IP 주소를 MAC 주소로 바꿔주는 프로토콜이고, RARP는 MAC 주소를 IP 주소로 바꿔주는 프로토콜이다.

- 노드를 거쳐 패킷을 보내려면 해당 노드의 MAC 주소를 알아야하기 때문에 종단간의 통신에 ARP와 RARP는 반드시 필요하다.

- 특정 IP 주소에 해당하는 MAC 주소를 가지는 장치를 찾기 위해 ARP 요청을 모든 장치에 보내고(브로드캐스트), 해당 IP 주소에 맞는 장치는 MAC 주소를 반환(유니캐스트)하는 식으로 동작한다.

 

 

2) 홉간의 통신

- 패킷이 여러 개의 라우터를 거쳐가는 것을 의미한다.

- 라우팅 테이블 : 목적지 라우터로 가는 경로 정보가 들어있는 테이블

- 게이트웨이 : 서로 다른 네트워크 간의 통신을 가능하게 해주는 관문역할을 하는 장치로, 라우팅 테이블에서 확인할 수 있다.

 

 

3) IP 주소 체계

- IPv4는 32비트, IPv6은 128비트로 이루어져 있다.

※ IPv6 예시 : 2001:0bd8:3c4d:0015:0000:0000:1a2f:1a2d

- 클래스 기반 할당 방식(CIDR) : 클래스를 A, B, C, D, E로 나누어 IP를 할당하는 방식이다. IP 주소를 크게 네트워크 주소와 호스트 주소로 나누게 되는데 클래스별로 범위가 다르다. 이 방식의 단점은 낭비되는 주소가 많다는 것이다.

- DHCP : IP 주소를 수동으로 설정하지 않고도 자동으로 IP 주소를 할당해주는 프로토콜

- NAT : 공인 IP와 사설 IP로 나눠서 많은 주소를 처리하는 방법으로 포트포워딩에 활용된다. 공인 IP는 외부와 통신하는 주소이고, 사설 IP는 하나의 공인 IP을 사용하는 각 호스트를 식별하는 주소다. 보통 공유기에는 NAT 기능이 탑재되어 있다. 그리고 호스트의 IP 주소가 외부에 노출되지 않는다는 보안상의 장점이 있다.

 

 

4) ICMP

- IP 패킷의 오류 메시지를 제어하는 프로토콜

 

 

 

5. HTTP

- HTTP : HyperText Trasnfer Protocol

 

1) HTTP/1.0

- 한 연결당 하나의 요청만 처리한다.

- 수많은 핸드셰이크가 발생하여 RTT(패킷 왕복 시간)가 증가한다.

- RTT의 증가에 따른 과부하를 극복하기 위해 사용한 기법들은 다음과 같다.

  • Image Splitting : 많은 이미지들을 합친 하나의 이미지를 이용하는 방법
  • 코드 압축 : 공백이나 줄바꿈을 없애고 코드의 크기를 최소화하는 방법
  • 이미지 파일 인코딩 : 이미지 파일을 문자열로 인코딩하는 방법

 

 

2) HTTP/1.1

- 연결을 유지하는 옵션이 표준화되어 요청마다 매번 연결을 하지 않아도 되도록 발전한 버전

- HOL Blocking : 큐의 앞 패킷이 지연될 때 뒤 패킷들도 같이 지연되는 현상

- 많은 메타데이터들이 압축이 되지 않아 헤더가 무거웠다.

 

 

3) HTTP/2

- TCP 기반으로 돌아가는 버전

- HTTP/1.x 버전보다 지연 시간과 응답 시간이 줄었다.

- 지원되는 기법들은 다음과 같다.

  • 멀티플렉싱 : 하나의 연결 안에 여러 개의 스트림을 사용하여 데이터를 송수신하는 기법으로, HOL Blocking 현상을 해결
  • 헤더 압축 : 허프만 코딩 압축 알고리즘을 사용하여 헤더의 비트 양을 압축하는 기법이다. 허프만 코딩은 빈도가 낮은 정보는 많은 비트 수를 사용해서 표현하고, 빈도가 높은 정보는 적은 비트 수를 사용해서 표현하는 방법이다.
  • 서버 푸시 : 클라이언트의 요청 없이 서버가 자원을 푸시해주는 방법이다. 예를 들어, html을 푸시할 때 그 안에 포함된 css나 js 파일을 알아서 같이 푸시해준다.

 

 

4) HTTP/3

- UDP와 QUIC 기반으로 돌아가는 버전

- 핸드셰이킹 과정이 없기 때문에 초기 연결에 대한 지연 시간은 감소한다.

- 첫 연결 설정에 1-RTT만 소모된다.

- FEC(전진 오류 수정) : 수신측이 패킷 에러를 발견하고 에러검출 및 에러수정을 하는 방식

 

 

 

6. HTTPS

- HTTP에 SSL/TLS 계층을 포함한 프로토콜로, 암호화가 제공되는 HTTP라고 이해하면 된다.

 

1) SSL/TSL

- SSL(Security Socket Layer) 또는 TLS(Transport Layer Security Protocol)은 전송 계층에서 보안을 제공하는 프로토콜로, 핸드셰이킹을 통해 보안 세션을 만들어 상태 정보를 관리한다.

※ 세션 : 서버의 자원을 이용할 수 있는 기간

※ 0-RTT : 이미 방문했던 사이트에 다시 방문할 때는 보안 세션에 필요한 통신을 하지 않아도 되는 것

- 클라이언트에서 사이퍼 슈트를 서버에 전달하면 서버는 암호화 알고리즘 리스트를 제공할 수 있는지 확인하고, 제공할 수 있다면 인증 과정을 거쳐 암호화된 통신을 수행한다.

사이버 슈트는 다음 3가지 정보가 나열된 규약이다.

  • 프로토콜 - ex) TLS
  • AEAD 사이퍼 모드 : 데이터 암호화 알고리즘 - ex) AES_128_GCM
  • 해싱 알고리즘 : 데이터를 더 작은 길이를 가진 데이터로 변경하는 알고리즘 - ex) SHA256

- 인증 메커니즘은 CA(Certificate Authorities)에서 발급한 인증서를 통해 이루어진다. 자신의 서비스가 CA 인증서를 발급받으려면 자신의 사이트 정보와 공개키를 CA에 제출하고 비공개키 기반의 인증서를 발급 받아야 한다.

- 키 교환 암호화 알고리즘으로는 키 값을 혼합하는 디피-헬만 알고리즘을 사용한다.

※ 디피-헬만 알고리즘 참고 : https://www.crocus.co.kr/1233

 

 

2) SEO(Search Engine Optimization)

- HTTPS는 많은 사용자들이 서비스 페이지를 볼 수 있도록 검색엔진을 최적화할 때도 도움이 된다. canonical 설정, <meta> 태그 설정, 사이트맵 관리가 검색엔진 최적화의 대표적인 방법이다.

※ 사이트맵 : 사이트에 있는 페이지, 동영상 및 기타 파일과 그 관계에 관한 정보를 검색엔진에게 제공하기 위한 파일

 

 

3) HTTPS 구축 방법

  • CA에서 구매한 인증키로 구축
  • 서버 앞단에 HTTPS를 제공하는 CDN이나 로드밸런서를 세팅

 

 

 

7. 기타 용어 정리

1) 통신 프로토콜

FTP : File Transfer Protocol

SMTP : Simple Mail Transfer Protocol
DHCP : Dynamic Host Configuration Protocol

HTTP : HyperText Trasnfer Protocol

 

 

2) 네트워크 용어들

- CDN : 가까운 지역에서 콘텐츠를 제공하는 네트워크

- DNS : 도메인 이름과 IP 주소를 매핑해주는 서버

- WWW : World Wide Web

- SYN, ACK, ISN : 각각 Synchronisztion, Acknowledgement, Initial Sequence Number을 의미함

- AP : Access Point의 약어로 공유기라고도 불리며, 유선랜에 흐르는 신호를 무선랜 신호로 변환해줌

- Wifi : 단말기가 무선랜 신호에 연결할 수 있게 하는 기술로, 공유기가 필요함

- BSS :무선랜의 가장 기본적인 구성 단위로, 동일 BSS 내의 공유기들과 장치들의 집합이다. 하나 이상의 연결된 BSS 그룹을 ESS(Extended Service Set)이라고 한다.

- 클라우드 컴퓨팅 : 컴퓨터 자원을 빌려서 언제 어디서나 중앙 컴퓨터에 접근할 수 있도록 하는 컴퓨팅

- 애드 혹 네트워크 : 유선망 없이 모바일 호스트만으로 구성한 네트워크

 

 

3) 보안 용어들

- CORS(Cross Origin Resource Sharing) : 다른 오리진(프로토콜+호스트+포트번호)에서 리소스를 가져오지 못하게 하는 HTTP 헤더 기반 매커니즘

- SSH(Secure Shell) : 원격 호스트에 접속할 때 사용되는 보안 프로토콜

- SSL(Secure Socket Layer) : 보안 소켓 계층

- IPsec : IP 패킷 단위의 보안 프로토콜

- 스니핑 : 남의 정보를 도청하는 행위

- 백도어 : 정상적인 인증 과정을 거치지 않고 접근하는 행위

- 하이재킹 : 가로채기

- 크로스사이트 스크립팅(XSS) : 웹페이지에 악의적인 스크립트를 삽입하는 공격

- 메모리 버퍼 오버플로우 : 할당된 메모리의 범위를 넘어선 위치에 접근하는 공격

- 개인키 암호화 : 동일한 키로 데이터를 암호화하고 복호화하는 기법 / 간단하지만 관리할 키가 많음

- 공개키 암호화 : 공개키로 암호화하고 비밀키로 복호화하는 기법 / 복잡하지만 관리할 키가 적음

- 해싱 : 다양한 크기의 데이터를 고정된 크기의 데이터로 변환하는 것

- DoS : 다수의 공격자가 대량의 요청을 한 곳의 서버에 집중적으로 보내는 공격으로 스머핑, 디도스 등이 해당한다.

- TearDrop : 패킷의 offset 값을 조작해서 오류로 인한 과부하를 발생시키는 공격

- Land : 송신 IP 주소와 수신 IP 주소를 같게 설정하여 자신에 대해 무한히 응답하게 하는 공격

- APT : 지능형 지속 위협 / 지속적으로 악성코드를 침투시키는 공격

- 트로이 목마 : 정상 프로그램으로 위장하고 있다가 해당 프로그램이 실행되었을 때 공격

- 랜섬웨어 : 내부 파일을 암호화해서 사용자가 열지 못하게 하는 공격

- NAC(Network Access Control) : 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록해서 일관된 관리 기능을 제공하는 보안 솔루션

- VPN : 가상 사설 통신망 / 단말의 실제 IP 주소를 가상 IP 주소로 대체

- OTP(One Time Password) : 일회용 비밀번호로 인증하는 기술

 

반응형

'IT 상식 > CS' 카테고리의 다른 글

[CS] 자료구조 요약  (0) 2022.11.26
[CS] 데이터베이스 요약  (0) 2022.11.20
[CS] 운영체제 요약  (0) 2022.11.10
[CS] 디자인 패턴과 프로그래밍 체계 요약  (0) 2022.11.01
[CS] 면접 기타 예상 질문  (0) 2021.06.11

댓글