2.1 네트워크의 기초
2.1.1 처리량과 지연 시간
69 page
- 트래픽: 특정 시점에 링크 내에 흐르는 데이터의 양/ 트래픽이 많을 때는 서버가 다운될 수 있다.
- 처리량
- 트래픽 중 전체 혹은 일부가 처리되고 이 처리되는 양이 처리량이다.
- 실제 얼마나 많은 데이터가 전달되는지에 대한 결과적인 개념
- End to End Application의 처리량은 대역폭과 지연시간에 의해 결정됨
- 대역폭: 네트워크에서 전송되는 데이터의 범위 (허용할 수 있는 동접수와 같은 의미), 대역폭이 낮으면 처리량이 떨어진다.
지연시간?
CDN? 장거리인 경우에 CDN 사용해서 지연시간을 줄인다.
2.1.2 네트워크 토폴로지와 병목현상
70 page
모든 노드가 연결되도록 배치하는 형태
71 page
- 버스 토폴로지
- A->B로 보내려면 모든 모드에 보내고 B 제외하고 다 거절하는 것
- 장점
- 스타 토폴로지
- 장점
- 설계, 구현 쉬움
- 중앙 관리
- 확장 가능
- 단점
- 비쌈
- 중앙 노드 장애 -> 전체 네트워크 사용 불가
- 허브, 스위치에 과부하 -> 전체 성능 하락
- 장점
- 링형 토폴로지
- peer-to-peer node
- 항상 단방향. 바로 왼쪽에 있어도 시계 방향만 가능하면 모든 노드를 거쳐서 가야함
- 토큰을 가진 노드가 데이터를 전송한다. 상담 세션에서 인형 주고받듯이 토큰이 노드 사이에 순환하고 토큰을 가진 노드가 데이터를 전송하는 방식
- 장점
- 버스 토폴로지보다 퍼포먼스가 좋다. (폐쉐루프이므로)
- 모든 노드가 동등한 권한을 가진다
- 단점
- 단방향이다
- 노드 혹은 링크 장애가 있으면 전체에 영향을 미친다.
- 보안 없음
- 메시 토폴로지
- 모든 노드가 다른 노드에 직접 연결되어있음 -> 100% 내결함성(fault tolerant)와 안정성 제공
- 장점
- 내결함성
- 안정성
- 단점
- 비쌈
- 확장 어려움
- 브로드캐스팅에 문제 있음 (끝없는 메아리처럼)
- 하이브리드 토폴로지
- 여러개의 토폴로지가 연결된것
2.1.3 네트워크 분류
2.1.4 네트워크 성능 분석 명령어
직접 해봄
2.1.5 네트워크 프로토콜 표준화
79 page
네트워크 프로토콜이란
마치 세계의 다른 지역에서 온 두 사람이 서로의 모국어를 이해하지 못하지만 공유하는 제 3언어(프로토콜)로 소통할 수 있는 것.
2.2 TCP/IP 4계층 모델
2.2.1 계층구조
82 page
DNS란?
Domain Name System. 웹사이트의 IP 주소와 도메인 주소를 이어주는 환경/시스템.
여기에 알기 쉽게 정리되어있다.
왜 UDP 쓸까?
전화할 때 이미 지나간 패킷은 중요하지 않고 현재 빠르게 데이터 전송하는게 중요함.
88 page
반이중화 통신은 단방향 통신인가?
-> 아님. 상호 통신이 가능하지만 동시에는 안되는 것을 의미함.
수신 중엔 완료까지 기다려야하며 충돌이 일어날 수 있으므로 충돌방지 시스템이 필요함
92 page
지그비?
저전력, 초소형, 저가의 디지털 라디오를 사용한 가정, 사무실에서의 근거리 무선통신 기술. 와이파이나 블투보다 근거리 단순, 저렴
2.2.2 PDU
2.3 네트워크 기기
2.3.1 네트워크 기기의 처리 범위
2.3.2 애플리케이션 계층을 처리하는 기기
99 page
로드밸런싱이란
10,000명의 사람들이 웹사이트를 이용한다고 할 때, 대용량 트래픽을 어떻게 감당할까?
애플리케이션을 확장해야하는데, 얼마나 많이 확장해야 하고, 또 특정 유저는 어떤 애플리케이션 서버를 사용해야할까?
로드밸런서는 쏟아지는 트래픽을 여러 대의 서버로 분산해주는 기술이다. 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 한다.
위의 케이스같이 대용량 트래픽을 여러대의 서버로 분산해야할 때, 유저와 애플리케이션 서버들 사이에 로드밸런서를 두면 된다.
로드밸런서는 하드웨어 혹은 소프트웨어 정의 장치일 수 있다.
로드밸런서는 인터넷에서 들어오는 모든 트래픽을 가로채 어디 서버로 갈건지 결정하고 애플리케이션 서버들과 통신하여 서버 추가 혹은 감소를 결정한다.
로드 밸런싱 방법은 여러가지가 있고 시나리오에 따라 최적의 방법이 다르며 구축 비용 또한 다르다. 정적 로드밸런싱과 동적 로드밸런싱으로 나뉜다.
로드밸런싱 기법에 대해서는 배달 기사 배치를 생각하면 쉬울 것이다.
또 상위 계층의 장비는 하위 계층의 장비가 가진 기능을 모두 포함하며 (물리 < ... < 애플리케이션)으로 갈 수록 정교한 로드밸런싱이 가능하다고 한다.
L4 로드밸런서는 네트워크 계층(IP, IPX)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산합니다. IP주소나 포트번호, MAC주소, 전송 프로토콜에 따라 트래픽을 나누는 것이 가능합니다.
반면 L7 로드밸런서의 경우 애플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산하기 때문에 HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능합니다. 쉽게 말해 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능한 것입니다. 위 그림과 같이 URL에 따라 부하를 분산시키거나, HTTP 헤더의 쿠키값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있습니다. 또한 L7 로드밸런서의 경우 특정한 패턴을 지닌 바이러스를 감지해 네트워크를 보호할 수 있으며, DoS/DDoS와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서도 활용되고 있습니다.
헬스체크: 로드밸런싱 서비스를 제공하는 다수의 서버의 상태를 점검하기 위해 사용되는 기술.
100 page
서버 이중화: 운영 중인 서비스의 안정성을 위해 각종 자원을 이중또는 그 이상으로 구성하는 것.
목적
1. 장애 또는 재해 시 빠른 서비스 재개를 위함 (Failover)
2. 원활한 서비스의 성능을 보장하기 위함 (로드밸런싱)
로드밸런서와 가상 IP(VIP)
cf. 가상 IP: 로드밸런싱의 대상이 되는 여러 서버들을 대표하는 가상의 아이피. 클라이언트들은 서버의 IP로 직접 요청을 하는 것이 아니라 로드밸런서가 가지고 있는 가상 아이피를 대상으로 요청한다.
따라서 한 서버에 장애가 발생해도 사용자는 아무 영향 없이 서비스 이용 가능하다.
로드 밸런서의 종류 (L 옆의 숫자는 계층)
스위치 | 계층 | 로드밸런싱 기반 |
L2 | 데이터 링크 계층 | Mac 주소 기반 |
L3 | 네트워크 계층 | IP 주소 기반 |
L4 | 전송 계층 | Port 기반, 주요 프로토콜은 TCP/UDP |
L7 | 어플리케이션 계층 | URL, HTTP 헤더, 쿠키 등 사용자 요청 기반. 즉, 패킷 내용을 확인하고 그에 따라 트래픽을 특정 서버에 분배 가능. 주요 프로토콜: HTTP, HTTPS, FTP |
101 page
인터넷 계층은 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
라우터: 여러개의 네트워크를 연결, 분할, 구분시켜주는 역할. 상위 통신망(WAN)과 하위 통신망(LAN) 사이를 중계해주는 기계
공유기(라우터) 뒷면을 보면 WAN 포트와 LAN 포트가 있는 걸 확인할 수 있다. 라우터는 통신사에서 받은 공인 IP를 가상 IP 여러개로 할당한다. 만약 WAN 선을 LAN 포트에 꽂으면 본래 L3 스위치인 공유기(라우터)가 마치 L2 브릿지 처럼 동작한다. (DHCP 기능이 꺼지기 때문. 따라서 와이파이나 다른 컴퓨터 기기 등 사용이 불가능하고 연결한 컴퓨터만 공인 IP로 네트워크 접속이 가능하다.)
102 page
브릿지: LAN에서 연결된 장비가 많으면 많을수록 데이터가 충돌한 공간이 많아진다. 브리지는 충돌 도메인을 나누어주는 역할을 하는 장비인데, 구역을 나누고 통신을 위해 다리를 놓는 것이다.
리피터: 신호 증폭
라우터, 브릿지, 리피터, 게이트웨이 비교: https://tomyself148.tistory.com/44
질문: 이해가 안되는게 계층 상 네트워크 계층(3계층)이 더 세부 계층? 상위 계층인데 왜 네트워크 계층에서 다른 네트워크간 연결을 처리하고 하위 계층인 데이터링크 계층에서 더 미시적인 같은 네트워크간의 연결을 처리하는거지?? 심지어 데이터 링크 계층은 엔드 포인트의 맥 주소를 가진 LAN 카드가 속한다. 혼란스럽다 어디서부터 잘못이해한거지???? 좃댄듯
104 page
공유기 vs AP
공유기: 하나의 IP를 여러대의 컴퓨터가 공유할 수 있게 함. NAT + 허브 + 스위치 + 라우터. 우리가 흔히 쓰는 유무선 공유기가 무선 공유기 + AP 기능이 들어간 것
AP: 무선 인터넷을 지원하지 않는 네트워크에 무선 인터넷을 사용할 수 있도록 하는 네트워크 장비. 라우터 (NAT) 기능이 없음
cf. NAT: Network Address Translation 네트워크 주소변환
cf. DHCP: 인터넷에 접속하는 컴퓨터에 IP 주소등의 정보를 할당하는 프로토콜
111 page
DHCP
장점: 효율적인 IP 사용. eg) 인터넷 서비스 사업자가 IP 주소 구매 -> 10만명 고객 대상 -> 5만개만 해도 됨
112 page
공인 IP vs 사설 IP
공인 IP: 인터넷 업체가 사용자에게 할당하며 공유기가 인터넷과 통신하도록 하는 역할을 하는 외부 IP 주소.
사설 IP: 공유기가 노트북, 스마트 TV, 휴대폰 등 홈 네트워크에 연결된 장치에 할당한 내부 IP 주소. 사설 IP 주소는 로컬 네트워크에서 할당되며 다른 네트워크의 IP 주소와 중복될 수 있음
2.5 HTTP
책에 나온 HTTP 버전들 외에도 많은 HTTP 버전이 있으니 확인해보세요.
참고: https://yozm.wishket.com/magazine/detail/1686/, https://brunch.co.kr/@swimjiy/39
2.1 HTTP/1.0
전체 흐름 정리
HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 | |
해결 | - | keep-alive 옵션으로 한 번의 tcp 연결 후에 여러 개의 파일을 송수신할 수 있음 |
1. 헤더압축 2. 멀티플렉싱 3. 서버 푸시 |
QUIC 계층 위에서 UDP 기반으로 돌아가 초기 연결 시 지연시간이 감소한다.; |
문제 | 매번 TCP 3-way handshake를 해서 RTT 증가 | 1. 헤더의 중복: 다양한 기능 지원에 따라 헤더에 많은 메타데이터가 담김. 하지만 매 요청마다 헤더를 중복 전송해서 낭비됨 2. HOLB: 멀티플렉싱이 안되어 서버가 항상 요청받은 순서대로 응답해야하므로 이전 응답에 문제가 생기면 다음 요청들이 지연됨 3. 클라이언트 요청이 없으면 서버는 먼저 데이터를 못보냄 |
HOLB는 해결되었으나 TCP의 HOLB가 해결안됨. TCP는 순서대로 와야하는데 어느하나 로스되면 전체 연결이 중단됨. | - |
116 page
아래는 텍스트를 Base64 인코딩한 예시이다.
2.2 HTTP/1.1
2.3 HTTP/2
119 page
멀티플렉싱
단일 링크를 통해 여러개의 신호를 동시에 전송할 수 있도록 하는 기술
메시지들을 프레임이라는 단위로 잘라서 전송한다. 각 프레임들은 특정 스트림에 속하는 메세지와 연결된다.
이 모든 프로세스가 한개의 TCP 커넥션 상에서 발생하므로 (한명의 웨이터가 처리하므로) 여러개의 TCP 커넥션으로 병렬처리했던 HTTP/1.1와 다른 멀티플렉싱이다.
cf. 바이너리 프레이밍: 멀티플렉싱의 핵심으로, 텍스트 형식이었던 HTTP 메시지를 더 작게 쪼개 바이너리 형태로 캡슐화한 것. 각 프레임은 어떤 스트림에 속하는지 정보를 가진 프레임 헤더 기능을 지니고 있다. 이러한 프레임은 목적지에 도착해서 완전한 시퀀스인 메세지로 재조립된다.
여기서 HTTP/1.1과 HTTP/2의 차이를 애니메이션으로 이해할 수 있다.
2.4 HTTPS
HTTP vs HTTPS
HTTP는 암호화가 되지 않은 텍스트를 전송하므로 제 3자가 정보를 조회할 수 있다.
HTTPS는 애플리케이션과 전송 계층에 SSL 이라는 보안 계층을 추가하여 네트워크 상에서 제 3자가 정보를 볼 수 없도록 암호화를 지원한다.
126 page
SHA-256 알고리즘
대표적인 해시함수. 블록체인 등에 쓰이며 매우 안전하다.
2.5 HTTP/3
QUIC 더 알아보기
'IT 도서 리뷰' 카테고리의 다른 글
[CS 전공지식 노트] CH4 데이터베이스 (0) | 2023.06.19 |
---|---|
[CS 전공지식 노트] CH3 운영체제 (0) | 2023.06.14 |
[CS 전공지식 노트] CH1 디자인패턴과 프로그래밍 패러다임 (0) | 2023.05.29 |
PyTorch로 시작하는 딥러닝 - CH7 생성적 신경망 (0) | 2021.11.14 |
PyTorch로 시작하는 딥러닝 - CH6 시퀀스 데이터와 텍스트 딥러닝 (0) | 2021.11.12 |