[CS 지식] 네트워크

5tr1ker·2023년 1월 18일
0

CS 지식

목록 보기
5/6
post-thumbnail

네트워크

컴퓨터등의 장치가 통신 기술을 이용하여 구축한 통신망이며 , 노드와 링크가 서로 연결되어 리소스를 공유하는 집합입니다.

처리량

링크를 통해 전달될 수 있는 단위 시간당 데이터량이며 , 트래픽 , 오류 , 대역폭에 영향을 받습니다. 단위로는 bps가 있으며 초당 송수신될 수 있는 비트 수를 나타냅니다.

대역폭

주어진 시간동안 네트워크에서 흐를 수 있는 최대 비트 수

지연 시간

요청이 완료되는데 걸리는 시간으로 , 어떤 메세지가 두 장치를 왕복하는데 걸리는 시간으로 패킷의 크기 , 라우터의 패킷 처리 시간에 영향을 받습니다.

네트워크 토폴로지

노드와 링크가 어떻게 배치되었는지에 대한 연결 형태입니다. 네트워크 병목 현상이 나타났을 때 네트워크 토폴로지를 활용하여 문제를 해결할 수 있습니다.

트리 토폴로지

계층형 토폴로지이며 노드와 링크가 트리 형태로 배치된 네트워크 구성입니다. 노드의 추가 삭제가 쉽지만 , 특정 노드에 트래픽이 몰리면 하위 노드가 영향을 받습니다.

버스 토폴로지

하나의 중앙 통신 회선에 여러 노드가 연결되어 통신하는 네트워크 구성이며 근거리 통신망에 사용됩니다. 설치 비용이 저렴하고 , 신뢰성이 우수하며 노드의 추가와 삭제가 쉽지만 , 스푸핑 문제가 발생할 수 있습니다. 스푸핑은 송신부의 패킷이 송신과 관련없는 노드에게 패킷을 오고갈수 있게 하는 것을 말합니다.

스타 토폴로지

중앙에 있는 노드에 모두 연결된 네트워크 구성이며 , 노드를 추가하거나 오류를 탐지하기 쉬우며 패킷 충돌 가능성이 적지만 , 설치 비용이 고가에다 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없습니다.

링형 토폴로지

각각의 노드가 양옆에 있는 노드와 연결하여 전체적으로 하나의 링처럼 연결된 네트워크 구성이며 , 노드를 추가해도 네트워크의 손실이 없으며 노드의 장애를 쉽게 발견할 수 있으며 패킷 충돌 가능성이 적습니다. 하지만 네트워크 구성 변경이 어렵고 회선에 오류가 발생하면 전체 네트워크에 오류가 발생할 수 있습니다.

메시 토폴로지

망형 토폴로지라고 하며 그물망처럼 연결된 네트워크 구성입니다. 한 노드가 망가져도 다른 경로가 있기 때문에 네트워크를 계속 사용할 수 있으며 , 트래픽 분산 처리가 가능합니다. 하지만 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가입니다.

LAN

근거리 통신망이며 전송 속도가 빠르고 혼잡하지 않습니다.

MAN

대도시 지역 네트워크로 전송 속도는 보통이며 LAN 보다 혼잡합니다.

WAN

광역 네트워크로 전송 속도는 낮으며 MAN 보다 혼잡합니다.

네트워크 프로토콜

서로 다른 장치들 끼리 데이터를 주고 받기 위한 공통된 인터페이스입니다.

TCP/IP 4계층 모델

어플리케이션 계층

응용 프로그램이 사용하는 프로토콜로 , 실제로 서비스를 제공하는 계층입니다.

전송 계층

송신자와 수신자를 연결하는 통신 서비스를 제공하며 , 어플리케이션 계층과 인터넷 계층이 데이터를 전달할 때 중계 역할을하며 크게 TCP와 UDP로 나뉩니다.

TCP

패킷의 순서를 보장하고 연결 지향 프로토콜을 이용해 연결을 하여 신뢰성을 구축하고 , 수신 여부를 확인하며 가상회선 패킷 교환 방식을 사용합니다.

UDP

패킷의 순서를 보장하지 않고 수신 여부를 확인하지 않으며 , 단순이 데이터만 전달하는 데이터그램 패킷 교환 방식을 사용합니다.

가상회선 패킷 교환 방식

각 패킷에는 가상회선 식별자가 존재하며 패킷이 전송한 순서대로 도착하는 방식입니다.

데이터그램 패킷 교환 방식

각 패킷은 독립적으로 움직이며 , 최적의 경로를 선택하며 이동하고 도착한 순서가 다를 수 있습니다.

3 way handshake

처음에 클라이언트는 ISN을 담아 SYN을 서버에 보냅니다. 서버는 클라이언트의 SYN을 수신하고 서버의 ISN과 승인번호로 클라이언트의 ISN + 1 을 담아 SYN + ACK 를 보냅니다. 마지막으로 클라이언트는 승인번호로 서버의 ISN + 1 을 담아 ACK 를 보냅니다.
SYN : 연결 요청 플래그
ACK : 확인 플래그
ISN : 초기 연결을 하기 위한 고유 시퀀스 번호

4 way handshake

클라이언트는 서버에 FIN 세그먼트를 보내고 FIN_WAIT 상태가 됩니다. 이후 서버는 ACK 를 클라이언트에 보내고 CLOSE_WAIT 단계가 됩니다. 일정 시간 후 서버는 FIN을 보내고 LAST_ACK 단계가 됩니다. 서버의 FIN 세그먼트를 받은 클라이언트는 TIME_WAIT 단계가 되고 서버에 ACK를 보내고 서버는 CLOSED 상태가 되고 클라이언트는 일정 시간 TIME_WAIT를 유지한 뒤 종료합니다.

이때 클라이언트는 TIME_WAIT를 일정 시간 유지하는 이유는 패킷 지연으로 뒤늦게 도착한 패킷을 처리하기 위해 기다립니다. 그리고 두 장치가 연결이 닫혔는지 확인하며 만약 서버가 LAST_ACK에서 종료되었다면 다음 연결시 오류가 발생할 수 있습니다.

인터넷 계층

장치로부터 받은 네트워크 패킷을 IP 주소를 이용해 목적지로 전송하는 계층이고 , 데이터를 받았는지 확인하지 않는 비연결형 특징을 가지고 있습니다.

링크 계층

실질적으로 데이터를 전송하며 장치들 간의 주고받는 신호의 규칙을 정하는 계층입니다.

전이중화 방식

양쪽 장치가 동시에 송수신할 수 있는 방식이며 , 송신로와 수신로가 나뉘어져 데이터를 주고 받습니다. 현대 고속 이더넷이 이러한 방식을 사용합니다.

CSMA / CD

반이중화 통신에 쓰이며 데이터를 전송한 이후에 충돌이 발생하면 일정 시간 이후에 다시 데이터를 전송합니다.

유선 LAN

트위스티드 페어 케이블

여덟개의 구리선을 두개씩 꼬아 만든 케이블이며 , 구리선을 실드처리 하지 않고 덮은 UTP 와 실드 처리하고 덮은 STP로 나뉩니다.

광섬유 케이블

레이저를 이용해 통신을 하기 때문에 구리선에 비해 고속 통신과 장거리 통신에 용이합니다. 한번 들어간 빛은 내부에서 계속 반사되면서 전진합니다.

무선 LAN

반 이중화 통신

양쪽 장치는 통신을 할 수 있지만 , 동시에 송신할 수 없으며 양쪽 장치가 동시에 송신할 경우 충돌이 발생해 패킷이 손실될 수 있습니다. 그렇기 때문에 충돌 방지 시스템이 필요합니다.

CSMA/CA

반 이중화 통신에 쓰이며 데이터를 송신하기 전에 캐리어 감지를 통해 충돌 가능성을 피합니다. 먼저 캐리어 감지를 통해 회선이 비어있는지 확인합니다. 그 다음 IFS를 이용해 회선이 사용중이면 일정시간동안 기다리며 , 무선 매체가 사용중일 경우 그 간격을 넓혀 기다립니다. 이후에 데이터를 송신합니다.

MAC 주소

컴퓨터가 네트워크에 접속하기 위해 사용되는 LAN카드를 식별하기 위한 식별번호입니다.

계층간 데이터 송수신 과정

캡슐화 과정

상위 계층의 헤더와 데이터 부분을 하위 계층의 데이터에 포함시키고 해당 계층의 헤더를 추가하는 과정을 말합니다.

  • 어플리케이션 계층 -> 전송 계층 : 세그먼트화 / 데이터그램화 ( TCP 헤더 )
  • 전송 계층 -> 인터넷 계층 : 패킷화 ( IP 헤더 )
  • 인터넷 계층 -> 링크 계층 : 프레임화 ( 프레임 헤더 , 프레임 트레일러 )

비캡슐화 과정

하위 계층에서 상위 계층으로 올라가며 해당 계층의 헤더를 제거하는 과정을 말합니다.

  • 전송 계층 -> 어플리케이션 계층 : 메세지화

PDU

네트워크의 어떤 계층에서 다른 계층으로 데이터가 전달될 때 데이터 단위를 말합니다.

  • 어플리케이션 계층 : 메세지
  • 전송 계층 : 세그먼트 ( TCP ) / 데이터그램 ( UDP )
  • 인터넷 계층 : 패킷
  • 링크 계층 : 프레임

네트워크 기기

스위치

여러 장비들을 연결하며 데이터 전송을 중재하고 , 목적지가 연결된 포트로만 데이터를 전송하는 기기입니다.

어플리케이션 계층

L7 스위치

로드밸런서라고도 하며 , 서버의 부하를 분산시켜주는 기기입니다. 클라이언트로부터 오는 요청을 뒷쪽의 여러 서버로 나눠주어 서버가 처리할 수 있는 트래픽을 증가시켜줍니다. 그리고 불필요한 데이터나 바이러스를 걸러주는 필터링 기능을 가지고 있으며, 응용 프로그램 수준의 트래픽 모니터링도 가능합니다. 만약 장애가 발생한 서버가 있다면 트래픽 분산 대상에 제외해야 하는데 이는 정기적인 헬스 체크를 통해 감시합니다.

L7 스위치와 L4 스위치의 차이

L4 스위치는 전송 계층을 처리하는 기기로 IP와 포트를 기반으로 트래픽을 분산시킵니다. 반면에 L7 스위치는 URL 과 HTTP , 쿠키를 기반으로 트래픽을 분산시킵니다.

헬스 체크

L4 스위치와 L7 스위치는 헬스 체크를 통해 정상적인 서버를 판별해야하는데 , 정기적으로 서버에 요청을 보내는것을 말합니다. 만약 요청이 정상적으로 이뤄졌다면 정상적인 서버이고 , 요청이 처리되지 않았다면 비 정상적인 서버입니다.

서버 이중화

로드벨런서의 대표적인 기능으로 두개 이상의 서버를 기반으로 가상 IP를 제공하여 사용자에게 안정적인 서비스를 제공하는 것을 말합니다.

인터넷 계층

라우터

다른 네트워크들을 연결 , 구분 , 분할해주는 역할을 하며 다른 네트워크와의 데이터를 전송할 때 패킷의 소모를 최소화 해주며 경로를 최적화하여 최소 경로로 포워딩 해주는 장비입니다.

L3 스위치

L2 스위치에서 라우터 기능을 추가한 것으로 라우터라고 불러도 무방하며 하드웨어 기반의 라우팅을 담당합니다.

데이터 링크 계층

L2 스위치

장치들의 MAC 주소를 MAC 주소 테이블에 관리하며 연결된 장치로 패킷이 왔을 때 패킷을 전송합니다. IP 주소를 이해하지 못해 MAC 주소를 기반으로 스위칭을 합니다.

브리지

두개의 근거리 통신망을 상호 접속할 수 있게하는 연결장치로 , 포트와 포트사이를 잇는 다리 역할을 하며 장치로 부터 얻은 MAC 주소는 MAC 주소 테이블에 저장합니다.

물리 계층

NIC

네트워크 인터페이스 카드는 LAN 카드라고도 불리며 컴퓨터가 네트워크에 접속하기 위해 사용됩니다. 네트워크 인터페이스 카드는 식별번호인 MAC 주소를 가지고 있습니다.

리피터

들어오는 약한 신호를 증폭시켜 다른쪽 방향으로 신호를 내보내는 장치입니다. 현대에는 광 케이블이 많이 보급되어 잘 사용하지 않습니다.

AP

패킷을 복사하는 장치입니다.

IP 주소

ARP

IP주소를 통해 MAC 주소를 구하는 프로토콜이며 , ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환시켜줍니다.

MAC 주소를 찾는 방법

A 장치가 ARP Request 브로드캐스트를 이용해 IP 주소에 해당하는 MAC 주소를 요청합니다. 이후 IP 주소에 해당하는 B 장치가 ARP Reply 유니캐스트를 이용해 MAC 주소를 응답합니다.

홉바이홉 통신

영어로 건너뛰다라는 뜻으로 패킷이 여러 라우터를 통해 전달되는 모습을 표현한것으로 , 통신 장치에 있는 라우팅 테이블의 IP 주소를 이용해 라우팅 과정으로 시작 주소부터 목적지 주소까지 패킷을 전달하는 통신을 말합니다.

라우팅 테이블

송신지부터 수신부까지 도달하기위해 사용되며 게이트웨이와 목적지에 대한 정보 , 목적지로 가기위한 방법을 가지고 있습니다.

게이트웨이

서로 다른 프로토콜 , 통신망에 있는 네트워크와 통신을 가능하게 해주는 관문 역할을 합니다.

DHCP

IP 주소를 자동으로 할당하기 위한 네트워크 관리 프로토콜이며 , IP 주소를 설정하지 않아도 인터넷에 접속할 때 마다 자동으로 IP를 할당해 주는 프로토콜입니다.

NAT

패킷이 라우터 장치를 통과할때, IP 주소 정보를 다른 주소 정보로 매핑하는 방법으로 여러 호스트가 하나의 공인 IP 주소로 인터넷에 접속할 때 사용됩니다. 내부 IP 주소와 외부 IP 주소가 다르기 때문에 어느정도 보안이 가능하지만 , 접속한 호스트의 숫자에 따라 인터넷 성능이 저하될 수 있습니다.

HTTP

HTTP/1.0

한 연결당 하나의 요청을 처리하게 설계되었고 , 서버에서 파일을 가져올 때 마다 TCP의 3way Handshake를 해야하기 때문에 RTT가 증가했습니다. 이는 서버의 부담이 많이되고 사용자 응답 시간이 길어지게 되었고 이미지 스플리팅과 이미지 Base64 인코딩 , 코드 압축을 사용해서 해결했습니다.

  • 이미지 스플리팅 : 여러개의 이미지를 합쳐놓은 하나의 이미지를 다운받고 css를 이용해 이미지를 표시합니다.
  • 코드 압축 : 코드의 개행 문자나 빈 공간을 제거하여 파일의 크기를 줄이는 것입니다.
  • 이미지 Base64 인코딩 : 이미지를 64진법의 문자열로 인코딩하는 방법으로 파일이 37% 가량 커지는 단점이 있습니다.

HTTP/1.1

매번 TCP 연결을 하는것이 아니라 keep-alive 옵션을 이용해 한번의 TCP 연결로 여러번의 파일을 송수신할 수 있게 바뀌었습니다. HTTP/1.0 버전에서도 keep-alive 옵션이 있지만 표준화가 되어있지 않았고 , HTTP/1.1 버전부터 표준화가 되어 기본 옵션으로 장착되었습니다. 다만 무거운 헤더구조와 Hol Blocking 문제가 있습니다.

  • Hol Blocking : 네트워크 큐에서 첫번째 패킷의 지연으로 뒤에 있는 패킷도 지연되어 발생하는 성능 저하

HTTP/2.0

HTTP/1 보다 지연시간을 줄이고 응답시간을 빠르게할 수 있으며 멀티플렉싱 , 헤더 압축 , 서버 푸시를 지원합니다.

  • 멀티플렉싱 : 여러개의 스트림을 사용하여 데이터를 송수신하는것을 말합니다. 일부 스트림이 손실되어도 다른 스트림은 정상작동하며 , 병렬로 데이터를 송수신하기 때문에 Hol Blocking 문제를 해결할 수 있습니다.
  • 헤더 압축 : HTTP/1 의 무거운 헤더구조를 허프만 코드 압축을 이용해서 헤더를 압축했습니다.
  • 서버 푸시 : 요청 없이 서버가 리소스를 푸시할 수 있습니다. HTML 파일을 읽으면 CSS 파일을 먼저 서버가 푸시합니다.

HTTP/3.0

TCP에서 작동하는 HTTP/2 와는 달리 UDP에서 작동하며 , QUIC 계층 위에서 작동합니다. 또한 멀티플렉싱과 초기 연결 설정 시 지연 시간 감소라는 장점이 있습니다.

  • 초기 연결 설정 시 지연 시간 감소 : TCP가 아니기 때문에 3 way Handshake를 할 필요가 없으며 클라이언트의 한 요청에 서버가 응답함으로써 통신이 시작되며 순방향 오류 수정 매커니즘을 가지고 있어 열악한 네트워크 환경에서 낮은 패킷 손실율을 자랑합니다.

HTTPS

HTTP/2 는 HTTPS 위에서 작동하며 , HTTPS 는 애플리케이션과 전송 계층사이에서 신뢰계층인 TLS/SSL 을 추가한 HTTP 요청입니다.

  • TLS/SSL : 전송 계층에서 보안을 제공하는 프로토콜로 클라이언트와 서버가 통신할 때 제 3자가 메세지를 도청 , 변조하지 못하게 합니다.
profile
https://github.com/5tr1ker

0개의 댓글