네트워크란 노드와 링크가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미
처리량이란 링크를 통해 전달되는 단위 시간당 데이터양을 말한다
요청이 처리되는 시간 두 장치 사이를 왕복하는데 걸린 시간
지연시간은 매체 타입(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간 영향을 받는다
노드와 링크가 어떻게 배치되어 있는지, 연결 형태를 의미
계층형 토폴로지, 트리 형태 배치한 네트워크 구성
중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성, 근거리 통신망(LAN)에서 사용
*스푸핑
LAN상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것을 말함
중앙에 있는 노드에 모두 연결된 네트워크 구성
각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식
그물망처럼 연결되어 있는 구조
토폴로지가 중요한 이유는 병목 현상을 찾을 때 중요한 기준이 되기 때문이다
근거리 통신망
도시지역 통신망
광역 네트워크
네트워크 병목 현상 발생 시 분석을 해봐야한다
네트어크 병목 현상의 주된 원인은
ping을 통해 알 수 있는 것
1. 해당 노드의 패킷 수신 상태
2. 도달하기까지의 시간
3. 해당 노드까지 네트워크가 잘 연결되어 있는지
접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용
1. 네트워크 접속
2. 라우팅 테이블
3. 네트워크 프로토콜
등의 리스트를 보여줌
주로 서비스의 포트가 열려 있는지 확인할 때 사용
DNS 관련 내용 확인위해 사용
특정 도메인에 매핑된 IP를 확인하기 위해 사용
목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어
네트워크 프로토콜이란 장치 간 데이터 송수신 시에 설정된 공통된 통신규약
IEEE, IETF라는 표준화 단체에서 정한다
인터넷 프로토콜 스위트 표현 방법 두가지 TCP/IP, OSI 7계층
이하 내용은 TCP/IP 4계층 모델 기준
애플리케이션 계층은 FTP, HTTP, SSH, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있고 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 한다.
대표적으로 TCP, UDP
각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식
패킷이 독립적으로 이동하며 최적의 경로를 선택하며 간다. 여러 패킷으로 나뉘어 다른 경로로 전송될 수 있으며 도착한 순서가 다를 수 있다
TCP는 3way handshake로 신뢰성을 확보한다
1. SYN 단계: 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냄. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호
2. SYN+ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN +1을 보낸다
3. ACK 단계: 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보낸다
해제 시에는 4way handshake 과정 발생
1번: 클라이언트가 먼저 FIN 보냄, FIN_WAIT_1 상태로 변경하고 서버 응답 대기
2번: 서버는 ACK라는 승인을 보냄, CLOSE_WAIT 상태로 변경, 클라이언트가 이를 받으면 FIN_WAIT_2 상태로 들어감
3번: 서버는 ACK를 보내고 일정 시간 이후에 FIN 보냄
4번: 클라이언트는 TIME_WAIT이 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 됨. 이후 클라이언트는 어느 정도 시간 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제된다
굳이 TIME_WAIT 하는 이유는?
1. 지연 패킷이 발생할 경우 대비 데이터 무결성 문제 발생할 수 있기 때문
2. 두 장치가 연결이 닫혔는지 확인하기 위해서. 만약 LAST_ACK 상태에서 닫히게 된다면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기 때문에 접속 오류가 나타나게 될 서 이다.
장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
IP, ARP, ICMP 등이 있다
비연결적인 특징을 가지고 있다
전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달한다
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위를 PDU라고 한다
PDU = 헤더 + 페이로드
네트워크 기기는 계층별로 처리 범위를 나눌 수 있다, 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있다. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다.
스위치는 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비이다.
L4스위치는 전송 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용할 수 없으며 메시지를 기반으로 인식하지 못하고 IP와 포트(특히 포트)를 기반으로 트래픽을 분산한다
L4, L7 모두 헬스 체크를 통해 정상적인 서버 또는 비정상적인 서버를 판별한다.
헬스 체크는 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것을 말함
로드밸런서의 대표기능 서버 이중화
로드밸런서는 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공한다
여러 개의 네트워크를 연결, 분할, 구분시켜주는 역할
다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 라우팅을 하는 장비
L2 스위치 기능 + 라우팅 기능
라우터라고 해도 무방
MAC주소 테이블을 통해 MAC 주소 관리
연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당
IP주소를 이해하지 못해 IP 주소를 기반을 라우팅은 불가능하며 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다. 목적지가 MAC 주소 테이블에 없다면 전체 포트에 전달하고 MAC 주소 테이블의 주소는 일정 시간 이후 삭제하는 기능도 있다.
두 개의 LAN을 상호 접속할 수 있도록 하는 통신망 연결 장치
통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 '하나의' 통신망을 구축할 때 쓰임
Network Interface Card
LAN 카드
MAC주소가 부여되어 데이터를 송수신할 수 있도록 컴퓨터에 설치되는 장비
들어오는 약해진 신호 정도를 증폭시켜 다른 쪽으로 전달하는 장치
패킷을 복사하는 기기
컴퓨터 간의 통신은 사실 ARP 통해 알아온 MAC주소 기반 통신
ARP란 IP주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할하는 프로토콜
ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환
라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트
서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어
1. IPv4: 32비트를 8비트 단위로 점을 찍어 표기
2. IPv6: 64비트를 16비트 단위로 점을 찍어 표기
A, B, C, D, E 다섯 개의 클래스로 구분된 클래스 기반 할당 방식
하지만 이 방식은 사용하는 주소보다 버리는 주소가 많은 단점이 있었고 이를 해소하기 위해 DHCP와 IPv6, NAT가 나옴
DHCP는 IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
NAT는 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법. IPv4의 IP주소 부족 단점 해소
NAT를 쓰는 이유는 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함
NAT를 이용하면 내부 네트워크 IP주소가 노출되지 않기 떄문에 보안 가능
여러명이 동시에 인터넷 접속하므로 숫자가 늘어날수록 접속 속도가 느려질 수 있다
IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에 이를 통해 동, 구까지 위치 추적이 가능하다
애플리케이션 계층에서 사ㅛㅇㅇ되는 프로토콜이며 HTTP/1.0부터 HTTP/3.0까지 발전했다
기본적으로 한 연결당 하나의 요청을 처리한다. 이는 RTT 증가를 불러오게 되었다
서버로 파일 요청을 할 때마다 TCP의 3way handshake가 계속 열리기 때문에 RTT가 증가한다
이미지 스플리팅. 코드 압축, 이미지 Base64 인코딩 사용했었다
많은 이미지를 합쳐있는 하나의 이미지로 다운받고 background-image의 position을 이용하여 이미지로 표기하는 방법
코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법
->
이미지 파일을 64진법으로 이루어진 문자열로 인코딜하는 방법
장점: 이미지에 대해 HTTP요청을 할 필요가 없어진다
단점: 37%정도 크기가 더 커진다
매번 TCP 연결을 하는것이 아니라 한번 TCP 초기화 한 후 keep-alive 옵션을 준다
네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 떄 발생하는 성능 저하 현상을 말함
HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어있고 압축이 되지 않아 무거웠다
SPDY에서 파생된 HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜
여러 개의 스트림을 사용하여 송수신하는것. 이를 통해 특정 스트림이 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 마치고 나머지 스트림은 멀쩡하게 동작할 수 있다
*스트림
시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름
이를 통해 단일 연결을 사용하여 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있다. 이를 통해 HTTP/1.x에서 발생하는 문제인 HOL Blocking을 해결할 수 있다.
HTTP/2에선 헤더 압축(허프만 코딩 압축 알고리즘)을 써서 큰 헤더 문제를 해결한다
문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트량을 줄이는 원리
클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다
HTTP/2는 HTTPS 위에서 둥작한다. HTTPS는 애플리케이션 계층과 전송 꼐층 사이에 신뢰 계층인 SSL.TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청 이를 통해 '통신을 암호화'한다
전송 계층에서 보안을 제공하는 프로토콜이다. 클라이언트가와 서버가 통신할 때 SSL/TLS를통해 제3자가 메시지를 도청하거나 변조하지 못하도록 한다
보안이 시작되고 끝나는 동안 유지되는 세션
SSL/TLS는 핸드쉐이크를 총해 보안 세션을 생성하고 이를 기반으로 상태정보 등을 공유
*세션
운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻한다
CA에서 발급한 인증서를 기반으로 이루어진다.
CA에서 발급한 인증서는 '공개키'를 클라이언트에 제공하고 사용자가 접속한 '서버가 신뢰'할 수 있는 서버임을 보장
자신의 서비스가 CA 인증서 발급 위해서 자신의 정보와 공개키를 CA에 제출
디피 헬만 키 교환 암호화 알고리즘
공개키는 중간에 공격자가 가로채도 그것을 복호화할 개인키가 없기 때문에 해킹할 수 없다
해싱 알고리즘은 데이터를 추정하기 히든 더 작고, 섞여있는 조각으로 만드는 알고리즘이다.
SSL/TLS는 해싱 알고리즘으로 SHA-256 알고리즘과 SHA-384 알고리즘을 쓴다
해시 함수의 결과값이 256비트인 알고리즘이다. SHA-256 알고리즘은 해싱을 해야 할 메시지에 1을 추가하는 등 전처리를 하고 전처리된 메시지를 기반으로 해시를 반환한다.
*해시
다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값
*해싱
임의의 데이터를 해시로 바꿔주는 일이며 해시 함수가 이를 담당
*해시
임의의 데이터를 입력으로 받아 일정한 데이터로 바꿔주는 함수
HTTPS 구축방법 3가지
HTTPS/2 : TCP 기반
HTTPS/3 : QUIC 기반, UDP 기반
QUIC는 TCP를 사용하지 않기 떄문에 통신을 시작할 대 번거로운 3way handshake 과정을 거치지 않아도 된다.