2.1 네트워크 기초

68page

 

네트워크: 노드와 링크가 서로 연결되어 있으며, 리소스를 공유하는 집합.

 

2.1.1 처리량과 지연시간

처리량(Throughput): 링크내에서 성공적으로 전달된 데이터의 양
단위: bps

Throughput에 영향을 미치는 요인
1. 대역폭(bandwidth)
- 대략적인 최대동시접속자수의 척도가 됨.
- 쉽게 말해, 주어진 시간동안 전달될수 있는 최대 데이터양을 의미.(다운로드 속도가 50mbps=> 초당 서버에서 다운로드 할수있는 데이터양 50mb라는거)
2. 트래픽 양.
3. 하드웨어 스펙


지연시간(Latency) : 패킷이 목적지에 도달하고 다시 그 패킷에 대한 응답이 출발지로 돌아오기까지의 시간(즉, 왕복시간)
RTT(Round Trip Time)와 같은 의미로 쓰는듯.

latency에 영향을 주는 요인
- 전송 매체 타입(유선, 무선)
- 거리 차이
- 서버의 성능
- 라우터의 패킷 처리 시간.
- 패킷크기 등.

미국 페이스북이나, 유튜브 서버에 있는 데이터를 한국에서 조회할 때,
거리가 멀어 RTT가 커지는 경우, RTT를 줄이기 위한 방안으로는?
=> CDN을 사용하여 응답속도 높임.

 

2.1.2 네트워크 토폴리지

70page

 

네트워크 토폴로지란?
: 노드와 링크의 연결 형태를 의미.

버스
 - 하나의 회선에 여러개 노드
 - 노드 추가,삭제 쉬움
 - 설치 비용 적음 -> 소규모 네트워크 구축 쉽다.
 - 한 노드에 장애 발생해도 다른 노드에 영향X (의존성이 없으므로)

 - 메인 링크에 의존성이 크므로, 망가지면 큰 문제. (정체 현상도 발생가능성 높음)
 - 스푸핑 가능성

스타
 - 중앙 노드에 모든 노드가 연결
 - 노드 추가,삭제 쉬움.
 - 안정성 높음. (중앙노드를 거쳐야하고 ,중앙노드는 방화벽 더 철저하게 하므로)

트리
 - 추가,삭제가 리프노드를 기반으로 한것은 용이.
 - 버스와 스타의 하이브리드 형태
 -  루트노드에 문제시 전체네트워크에 큰 문제.

*백본케이블이란?
 : 쉽게 말해, 대규모 패킷 통신망이다. (여러 소형 네트워크들을 묶어 극도로 높은 대역폭으로 다른 네트워크 집합과 연결.)

링형
 ★- 노드수가 많아져도 데이터 손실없음.(충돌발생 가능성이적어서) 왜?
토큰 기반으로 통신권한 여부 판단하기 때문에
   - 하나만 에러 발생해도 전체 네트워크에 영향.

메쉬형
  - 그물망형태, 안정성 높음
  - 트래픽 분산 처리 가능 (회선이 많기 때문에)
  - 구축비용이 고가(회선이 많기 때문에)
  - 노드 추가 어려움.

* 토폴로지가 중요한 이유? 
 : 병목현상을 해결할때 척도가 됨.

유니캐스트
멀티캐스트
브로드캐스트

 

LAN(Local Area Network)
: 소규모 네트워크 - 보통 허브나 스위치로 연결.

Protocol이란
  사전적의미: 여러 컴퓨터나 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약
 즉, 각기 다른나라에서 온 두사람이 서로의 언어는 이해하지 못하나, 제3의 언어(프로토콜)로 통신이 가능한셈.

 

2.2 TCP/IP 4계층 모델

계층간 데이터 송수신 과정

http 프로토콜을 통해 웹 서버에 있는 데이터를 요청하면?

==> 애플리케이션 계층에서 전송계층으로 보내는 요청값들이 캡슐화 과정을 거쳐 전달되고, 하위 계층인 인터넷 계층, 링크계층을 통해 해당 서버와 통신을 하고, 해당 서버의 링크계층에서 다시 상위계층인 애플리케이션 계층까지 비캡슐화 과정을 거쳐 데이터가 전송.

 

캡슐화 과정 & 비캡슐화 과정

캡슐화는 상위 계층의 헤더와 데이터를 하위계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정으로 이루어진다.

 

★데이터 송수신 시 캡슐화 & 비캡슐화 과정이 필요한 이유

단편화된 데이터는 헤더 등으로 감싸지는데 제 3자가 데이터를 해독하기 어렵고(기밀성) , 체크섬 등으로 데이터 위변조를 감지할 수 있으므로(무결성) 보안에 유리함.

또 캡슐화된 데이터에 송수신자의 주소 정보가 포함되는데, 이를 통해 수신자가 데이터가 신뢰할 수 있는 송신자로부터 온 것인지 확인 할 수 있기 때문에 데이터 통신의 신뢰성을 확보할 수 있다.(인증)

 

마지막으로, 여러개의 데이터를 동시에 전송할 수 있게 함(멀티플렉싱).

 

- 보안

- 멀티플렉싱 가능

 

PDU

계층간 데이터가 전달될 때, 단편화를 통해 세분화된 데이터 블록 단위를 말함.

 

*TCP/IP계층 자세한건 따로 다룰예정.

 

2.3 네트워크 기기

*TCP/IP 계층 다루는데에서 같이 다룸

 

내결함성

시스템이 장애나 오류 상황에도 계속해서 작동하거나 정상 상태로 복구할 수 있는 능력. 

내결함성은 시스템의 가용성과 신뢰성을 향상시키는 중요한 개념이다.

 

내결함성 향상시키는 방법.
-Load Balancing (부하 분산): 네트워크 트래픽을 여러 경로로 분산하여 부하를 균형시켜 서비스의 가용성을 향상.
-Fault Detection and Recovery (장애 감지 및 복구): 장애를 감지하고 자동으로 복구하는 기능을 구현하여 서비스 중단을 최소화.

 

로드밸런서 이용하여 서버 이중화 기능을 구현할 수 있다.  

서버 이중화: 운영 중인 서비스의 안정성을 위해 각종 자원을 이중또는 그 이상으로 구성하는 것.
목적
1. Failover : 장애 또는 재해 시 빠른 서비스 재개를 위함 
2. Load Balancing : 원활한 서비스의 성능을 보장하기 위함 

 

 

사무실 같은데서 허브사서 연결하는 게 스타 토폴로지인가? 
=>그렇다.
일반적으로 사용되는 네트워크 구성 형태 중 하나이며, 사무실, 학교, 데이터 센터 등 다양한 환경에서 사용됨

 

DS     - 여러 AP를 연결하는 백본망
BSS   - WLAN에서 최소 단위의 넷
           - Ad-Hoc
           - 동일 BSS내에 있는 AP와 STA간에 통신
ESS    - 하나의 DS에  다수의 BSS 연결됨.
           - 로밍은 ESS에서만 가능하다.
로밍    - ESS내에서 BSS를 이동하는 과정
*국제로밍 - 해당 현지의 통신 업체와 계약 맺고 ESS의 범위를 확장하는 개념.


Ad-Hoc모드 - station끼리 직접 통신.

2.4 IP  주소

2.4.1 ARP

105 page

 

2.4.3 IP 주소 체계

109 page

- 클래스 기반 할당 방식

- DHCP

- NAT

 

★DHCP 
DHCP 서버가 PC와 같은 이용자(client) 단말에 자동으로 IP주소 및 기타 정보를 할당해주는 네트워크 관리 프로토콜

 

그 정보라고 하면: 유무선 IP 환경에서 단말의 IP 주소, 서브넷 마스크(Subnet Mask), 디폴트 게이트웨이(Default Gateway) , IP 주소, DNS 서버 IP 주소, 임대기간(Lease Time) 등의 정보.

 

효율적인 IP 사용가능.

eg) 인터넷 서비스 사업자가 IP 주소 구매 -> 10만명 고객 대상 -> 5만개만 해도 됨

 


공유기가 AP기능, DHCP기능 추가된 라우터라고 볼수있음.

또 공유기는 스위칭 허브에 NAT기능이 추가된것.

 

@NAT을 사용하는 이유?
사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함

@데이터 링크 계층은 '직접 연결된' 서로 다른 2개의 네트워크 장치간 데이터전송을 담당. 
유선공유기는 데이터링크 계층의 기기인가? => 그렇다!

 

★@공인 IP vs 사설 IP

공인 IP

  • ISP(인터넷 서비스 공급자)가 사용자에게 할당하는 IP주소. 각각의 IP는 유일하기 때문에 중복 될 수 없다.
  • 공유기가 인터넷과 통신하도록 하는 역할을 하는 외부 IP 주소.
  • 외부에 공개 되어 있기 때문에 인터넷에 연결된 다른 장비로부터 접근이 가능하므로 보안 설정에 신경써야함.

사설 IP 

  • 공유기와 같은 라우터를 통해 할당받은 가상의 IP 주소. ( IPv4는 그 개수가 턱없이 부족하다. 모든 네트워크가 공인 IP를 사용하는 것이 불가능하므로)
  • 사설 IP 주소는 로컬 네트워크에서 할당되며 다른 네트워크의 사설 IP 주소와 중복될 수 있음
  • 별도 설정 없이 외부에서 접근 불가

 

 

2.5 HTTP

http 또한 따로 자세히 다룰 예정

HTTP

서버와 클라이언트가 통신하기 위한 애플리케이션 layer의 프로토콜

stateless, connectionless

 

@http vs https 특성 비교

@http 멱등성관점에서 설명

@put과 patch의 차

 

put  :보내지 않은 값은 업데이트, 요청값이 없으면 새로생성
patch : 보낸값들만 업데이트,  요청값이 DB같은데에 없으면 따로 생성안하고 넘어감.

 

GET,PUT같은경우는 멱등성 보장해야함.

(*멱등성이란?  같은 행위 여러번 반복하더라도 같은 효과 내야함)
POST :멱등성 보장X
PATCH :설계에 따라 멱등성 보장할수도 있고 없을수도 있고.

 

 

 

출처 : 면접을 위한 CS 전공지식 노트

'CS > 전공지식노트' 카테고리의 다른 글

CH3. 운영체제  (0) 2023.06.15

3.1. 운영체제와 컴퓨터

P. 134

OS(Operating System) = Kernel + System programs 

운영체제는 하드웨어와 사용자 사이의 중개 역할을 한다. (하드웨어를 관리하는 프로그램이라 볼수있음.)
애플리케이션에는 하드웨어를 관리하는 기능이 없다.(그래서 OS <--->App 상호작용 존재)

운영체제가 담당하는거 (요-------것-------들)
유저프로그램 <-- GUI 시스템콜 커널 드라이버  --> 하드웨어

운영체제 역할
1. CPU 스케줄링, 프로세스 관리
2. 메모리 관리
3. 디스크 파일 관리
4. I/O 디바이스 관리

Kernal: OS의 기본 알고리즘들을 구현해둔 로직
드라이버: 하드웨어를 제어하기 위한 소프트웨어

 

시스템콜

커널에 접근하기 위한 인터페이스.

@OS가 I/O 요청을 위한 트랩 발동시켰을때의 과정??

예를 들어 파일시스템의 파일을 읽는 함수 fs.readFile()이 I/O요청으로 들어온 경우,

올바른 I/O요청인지 확인을 먼저한 후,

유저모드에서 파일을 읽지 않고 시스템콜을 통해 커널모드로 들어가 파일을 읽고 다시 유저모드로 들어가 유저프로그램의 그 다음 로직을 수행.

==> 컴퓨터 자원에 대한 직접접근을 차단할 수 있어서 시스템의 안정성, 보안 향상


시스템콜로 분리가 되어있어서
커널모드로만 운영체제의 자원을 이용할수있게함.

modebit
구분하는 플래그임.


3.1.2 컴퓨터의 요소

P. 138

CPU, DMA컨트롤러,메모리,타이머,디바이스컨트롤러   (SW 중점으로 봤을때 이정도.)

DMA 컨트롤러
CPU에만 많은 인터럽트 요청이 들어오므로 부하를 막아주기 위해 존재.
하나의 작업을 CPU와 DMA컨트롤러가 동시에 하는거 방지.

 

DMA 컨트롤러 등장배경?

//

 

관리자 -> 커널- > HDD,SDD -> 메모리에 올림(RAM). -> CPU

CPU(제어장치(CU) + 연산장치(ALU) + 레지스터)
:인터럽트에 의해 단순히 메모리에 존재하는 명령어를 실행.
 
CPU의 연산처리
1. CU가 메모리에 계산할 값을 로드, 레지스터에도 로드
2. CU가 ALU에게 명령.
3. CU가 결과값 다시 메모리에 저장.

ALU(산술논리연산장치)
실행장치라고도 하며, 산술연산(덧셈,뺄셈),논리연산(AND,OR), 시프터, 보수기


인터럽트
어떤 신호가 들어왔을때 CPU를 잠깐 정지시키는 것을 말한다.
즉, CPU에게 멈추고 interrupt handler함수를 실행하라고 보내는 event이다.

 

사용이유:  CPU는 매우 빠른 장치인데, 프린터 문서 인쇄를 지시하고 완료될 때까지 기다리고만 있기에는 너무 성능이 아까움. 따라서 인터럽트를 발생시켜 그동안 다른작업을 하고 돌아올 수 있어서.

 

하드웨어 인터럽트

 I/O디바이스에서 발생(키보드,마우스연결)

 

소프트웨어 인터럽트

트랩이라고 한다.

종류: 예외상황, system call


★@인터럽트가 발생될때의 과정을 설명해라

 

3.2. 메모리

3.2.1 메모리 계층

P. 142

'로딩중' 이라는 메시지가 뜬다는건?
--> 하드디스크 혹은 인터넷에서 데이터를 읽어 RAM으로 전송하는 과정이 아직 끝나지 않았다는 뜻이다.


일반적인 instruction 수행 과정
1. Fetch : 메모리(Text부분)에서 CPU내부의 pc레지스터로 인스터럭션을 가져옴
2. Decode : 단순히 바이너리일뿐인 인스트럭션 해석
3. Fetch Operands : Argument에 메모리값이 필요할 경우 메모리에서 도 가져옴. (일어날수도 있고 아닐 수도 있음)
4. Execute : 실행
5. Store : 레지스터에 결과값 저장

이중에서 메모리 엑세스가 일어나는 단계
1.Fetch  - 이때는, 반드시 발생한다. 메모리에서 Pc로 인스트럭션 가져와야하므로.
3.Fetch Operands - Argument에 따라 메모리접근이 또 필요할 경우에만 발생.

매 인스터럭션 수행마다 메모리 엑세스를 해야하는지?
--> 캐시를 쓰면됨.



★캐시
CPU는 프로그램 실행과정에서 메모리에서 데이터를 빈번하게 가져오는데.
CPU 연산속도가 아무리 빠르더라도,
메모리에 접근하는 시간이 느리면 아무 소용 없지않은가!.. 그래서 나온게 캐시메모리.

빠른 장치와 느린 장치사이의 속도차이에 따른 병목 현상을 줄이기 위한 메모리.(데이터를 미리 복사해놓은 임시저장소)

캐시히트: 캐시에서 원하는 데이터 찾았을때
캐시미스: 캐시에 없어서 메모리로 가서 데이터 찾아올때

웹브라우저의 캐시
★쿠키 vs 로컬 스토리지 vs 세션 스토리지

 

쿠키 

 : 웹사이트에 의해 유저의 로컬에 놓여지는 작은 텍스트 파일들을 말함.

 

매서버 요청마다 쿠키가 같이 전송됨(HTTP 특징: stateless)  --> 필요없는 정보들도 같이 실어 보냄  --> 데이터 낭비 --> 이런 데이터들을 로컬스토리지, 세션 스토리지에 저장 (서버로 전송X)

 

예시: 사이트에서 방문한 페이지 저장, 유저의 로그인 정보 저장, 사용기록 기반으로 사용자에게 관련영상이나 사이트 추천

 

유형: session 쿠키 - 만료일 있음. 브라우저나 탭이 열려있는 동안만 저장됨. 은행 사이트 자격 증명 저장에 사용

          persistent 쿠키 - 만료일 있음

 

쿠키 동작방식

  1. 클라이언트가 페이지를 요청
  2. 서버에서 쿠키를 생성
  3. HTTP 헤더에 쿠키를 포함 시켜 응답
  4. 브라우저가 종료되어도 만료 기간이 있다면 클라이언트에서 보관하고 있음
  5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
  6. 서버에서 쿠키를 읽어 변경해야할 필요가 있다고 판단되면 업데이트해서 변경된 쿠키를 HTTP 헤더에 포함시켜 응답

로컬 스토리지

쿠키와 달리 HTTP 요청에서 데이터를 주고받지 않아, 클라이언트와 서버간의 전체 트래픽과 낭비되는 대역폭의 양을 줄일 수 있습니다.

 

데이터 영구적 (javascript로 지워야함), 문자열 뿐아니라 원시값이나 객체도 저장 가능

 

사용예시: 자동 로그인

 

세션 스토리지

비영구적

사용예시 : 일회성 로그인

 

@쿠키, 로컬스토리지, 세션 스토리지에 대해 아는대로 설명?
쿠키는 매 http요청 마다 쿠키를 헤더에 포함하여 보내지만, 로컬스토리지나 세션스토리지는 보내지 않는다.

따라서 전체 트래픽과 대역폭 낭비를 줄일수 있다.

로컬스토리지는 영구적, 세션스토리지는 비영구적

3.2.2  메모리 관리

P. 148

가상메모리

 

MMU (Memory Management Unit)

가상주소를 실제주소로 매핑해주는 하드웨어 장치

동작

TLB


@페이지 폴트 과정

1. mmu가 트랩발생시킴
2. 
3.
4.
5. instruction 제개


★스와핑??
메모리에 적재된 프로세스들 중에 사용되지 않는 프로세스를 보조기억장치의 일부영역(스왑영역)으로 쫓아내고,
그렇게 메모리 공간 만들어, 다른 프로세스를 적재하여 실행하는 방식

스레싱?

@페이지와 프레임의 차이
 페이지는 가상메모리를 사용하는 최소크기 단위, 프레임은 실제메모리를 사용하는 최소크기단위


연속 메모리할당
-> 외부단편화 문제

★외부단편화
프로세스들이 메모리에 연속적으로 할당되는 환경에서는 프로세스 종료시 빈공간이 생기지만,
이러한 빈공간보다 큰 프로세스를 적재할수 없어서 메모리 낭비로 이어지는 현상을 일컬음

외부단편화의 근본적인 이유
각기 다른 크기의 프로세스가 할당

내부단편화
페이징은 외부단편화 문제는 해결할 수 있지만, 내부 단편화가 야기된다.
프로세스의 논리적인 주소공간을 똑같은 크기로 자르면 마지막 페이지는 프로세스의 크기보다 공간이 많이 남게 되므로. 메모리 낭비.

★★페이징?
프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자르고,
메모리 물리 주소 공간을 프레임이라는 일정한 단위로 자른뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법

불연속적으로 할당하다?는 말


★페이지 교체 알고리즘
가상메모리를 통해 작은 물리메모리 보다 큰 프로세스도 실행할수는 있지만,

물리메모리는 여전히 한정되어 있으므로 기존에 메모리에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내야함.
--> 페이지 교체 알고리즘 기반으로 스와핑이 일어남. (스와핑은 많이 일어나지 않도록 설계해야하니까)

-offline알고리즘
-FIFO : 메모리에 가장 먼저 온 페이지를 교체 영역에 먼저 놓는것
-LRU : 가장 오래 사용하지 않은 페이지 내쫓는거
(2개의 자료구조 써서 구현함 : 해싱테이블 + 이중연결리스트 )
-NUR : Clock 알고리즘. 다른 알고리즘들과 다르게 2개의 비트만 있으면 해결
-LFU : 가장 적게 참조한 페이지 내쫓음.


@★세션기반인증 vs 토큰기반인증

세션기반인증 로그인
:세션을 사용할때 쿠키를 사용함
쿠키는 단일 도메인에서 관리하게 되어있어서(?) CORS문제

멀티도메인
네이버 메인페이지 같은경우

토큰기반인증 로그인
: ex) JWT (노는게 제일좋아 티스토리)
JWT이란 인증에 필요한 JSON토큰 (헤더 내용 서명)
세션 하이재킹
 JWT단점: 보안에 취약(-> 그래서 refresh토큰)

'CS > 전공지식노트' 카테고리의 다른 글

CH2. 네트워크  (1) 2023.06.25

+ Recent posts