2차면접준비
- 전송 계층 프로토콜
- 전송 계층에서 송수신하는 컴퓨터를 서로 정한 다음 그걸 네트워크 계층에서 라우팅을 통해 최단 경로를 연결하는 작업을 한다.
- 기본적인 단위는 세그먼트이며, 사용자와 가장 맞닿아 있는 응용 계층에서 작성된 메시지 등에 헤더를 붙인 것을 의미한다. 데이터그램은 이후 네트워크 계층에서 네트워크 계층에서 쓸 수 있는 IP 주소 등을 덧붙인 것을 의미한다. 기본적으로 네트워크 계층이 비신뢰성, 비연결성을 지향하기 때문에 전송 계층에서 연결과 보안을 신경 쓰게 된다.
NAT : IP 주소를 변환하는 기술이며, 사설 ip를 공용 ip로 변환하는데 사용됨.
기본적으론 TCP, UDP를 의미한다.
TCP
전송을 제어하는 통신규약으로, 계속 연결이 되어 있는 상태를 의미한다. 기본적으로 해당 프로토콜을 기반으로 작업하게 된다.
사용하는 데이터 타입 : 세그먼트
연결을 하는 과정에서 3 hand shake와 연결을 종료하는 4 hand shake가 있다. 이 과정에서 연결(syn), 데이터 교환(ack), 종료(fin)이 오간다.
흐름 제어 : 수신 속도가 송신 속도보다 빠를 때, 여러 명의 플레이어가 동시에 같은 속도로 업데이트가 되도록 할 때 등의 속도를 제어한다. 오류 제어 : 오류가 발생했을 때 오류가 난 부분을 다시 보낼 수 있다. 순서 제어 : 대량의 데이터를 보내게 되었을 때 이 데이터를 어떻게 보낼 것인가 나누는 것.UDP
TCP와 다르게 성능을 중시하는 연결 방식으로, 기존의 IP 방식과 비슷하게 비연결 방식의 프로토콜이다.
보안적인 부분에서 문제가 있으나 속도 처리 관점에서 tcp보다 빠르다.
헤더에 체크섬을 추가하여 최소한의 보안성을 챙긴다.
- 대칭키, 비대칭키(공개 키) 암호화
데이터 보안에서 신경써야 할 것
- 기밀성 : 데이터를 인가된 사용자만 볼 수 있도록 보호한다.
- 무결성 : 데이터가 변경되지 않도록 보호
- 가용성 : 데이터가 필요할 때 접근할 수 있도록 보장한다.
암호화는 원문 데이터를 알아볼 수 없는 형태로 변경하는 것.
복호화는 암호화 되어 있는 데이터를 원본 데이터로 되돌리는 과정(디코딩)
대칭 키 암호화
암호화 할 때 사용된 키와 복호화 할 때 사용하는 키가 동일한 방식. 구조가 간단하다는 장점이 있지만 키가 누출되었을 때 보안의 의미가 사라져 버린다.
사용 예시
AES(Advanced Encryption Standard, 현재 가장 많이 사용되는 대칭키 암호화 알고리즘), DES, 3DES
비대칭 키 암호화(공개 키 암호화)
암호화 하는 데 쓰는 키(공개 키)와 복호화 하는 데 쓰는 키(개인 키)가 다르다.
(기본 절차)서버에서 데이터를 보내줄 때 먼저 사용자에게 데이터를 보낼 것이란 호출을 한다(ask), 그 후 개인 사용자는 서버에 공개 키(통장 번호 등의 공개되어도 큰 문제가 없는 키)를 보내고, 서버에선 공개 키로 데이터를 암호화 한 뒤 사용자에게 준다. 사용자는 개인이 가진 개인 키를 이용해 받은 정보를 복호화 한다.사용 예시 : RSA(가장 널리 알려진 비대칭 키 알고리즘), ECC
인증서와 디지털 서명
네트워크에서 사용되는 인증서라는 용어는 일반적으로 공개 키 인증서를 의미한다.
데이터 등의 유효 기간이나 발급 기관, 소유자 정보 등을 같이 보내며, 이걸 암호화 할 때 한 번에 암호화 한 뒤 보내여 복호화 한 뒤 이걸 기준으로도 또 검사를 한다.
- 로드밸런싱
로드밸런싱의 정의 : 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법(쉽게 말하면 서버를 나누는 방법).
트래픽은 서버의 가용성에 큰 영향을 미치며 중앙 집중식 서버를 작업할 경우 서버가 고장나거나 했을 때 서비스 전체가 맛이 갈 수 있다.
해당 문제를 예방하기 위해 서버를 분산시키는 등으로 트래픽을 나누는 걸 로드밸런싱이라 한다.
vertical scale up 스케일 업 : 서버 자체의 퍼포먼스를 늘리는 방법(cpu 등을 교체하거나 하는 등으로 서버 하나의 성능을 올린다.)
horizontal scale up : 서버를 분산 시스템으로 운영한다. 즉, 병렬적으로 데이터를 관리할 수 있도록 한다.
로드 밸런싱 알고리즘
- 라운드 로빈 : 들어온 순서대로 분류를 하는 방법, 정해진 시간 할당량에 의해 실행을 제한한다. 시간 할당량을 매 프로세스에 주고 할당된 시간 내에 완료 못한 프로세스는 줄 뒤로 보내는 방식. 장점 : 기본적으로 간단하다.
- 랜덤 알고리즘
기반 알고리즘(최소 연결, ip 해시, 가중치 기반)
L4 로드 밸런서 L7 로드밸런서 여기서부터 포트 정보를 바탕으로 로드를 분산하는 것이 가능함, 속도가 빠르고 효율이 높음 L4보다 섬세한 라우팅이 가능함. 캐시 기능을 제공함 패킷의 내용을 살펴볼 수 없다. ip가 수시로 바뀌는 경우라면 연속적인 서비스를 제공하기 어려움 복호화 하기 때문에 비용이 좀 더 크다.