SSL/TLS Handshake
·
CS/Network
❒ DescriptionHTTP 보다 안전한 HTTPS에 대해서 알아보고, 어떤 과정을 통해 안전한 통신을 할 수 있는지 공부하자!참고로 이와 관련해서 옛날에 공부했었는데 여기서는 부족한 부분을 추가/보충할 것이다. ※ 이번 포스팅에서는 별도로 예상 면접 질문은 뽑지 않는다.   ❒ SSL/TLS HandshakeSSL(Secure Sockets Layer) 핸드셰이크는 클라이언트와 서버 간의 보안 연결을 설정하기 위한 과정이다.이 과정은 데이터를 암호화하여 안전하게 전송할 수 있도록 하기 위해 필요한 키 교환 및 인증을 수행한다.SSL 핸드셰이크는 다음과 같은 단계로 이루어진다. 1. [Client] Client Hello 클라이언트가 서버에 연결 요청을 한다. 이때 클라이언트는 자신이 지원하는 다음 ..
HTTP 2.0
·
CS/Network
❒ Description이번에는 HTTP/2.0이 왜 등장했고, 이전 버전과 어떤 차이를 가지는지 공부하자!   ❒ 등장 배경HTTP/1.1의 메시지 포맷은 구현의 단순성과 접근성에 주안점을 두고 최적화되었기 때문에 어느정도 성능은희생시킬 수 밖에 없었다. HTTP/1.1에서 HTTP 트랜잭션은 요청과 응답으로 심플하게 구성되어있는데,응답을 받아야만 다음 요청을 할 수 있기 때문에 회전 지연(RTT: Round Trip Time)을 피할 수 없다는 단점이 있다. 물론 이 문제를 해결하기 위해서 병렬 커넥션, 파이프라인 커넥션 기술이 등장했지만, 각각 제약들도 있었고근본적인 문제가 해결이 되지 못했다. 여기서 근본적인 문제라 함은,  한 번에 하나의 요청만 처리할 수 있다는구조적 한계를 말한다. 이렇게 근..
HTTP Connection Management
·
CS/Network
❒ DescriptionHTTP가 어떻게 TCP 커넥션을 사용하고, TCP 커넥션의 문제점과 이런 부분을 어떻게 관리하는지이해하고 공부해보자!     ❒ 네트워크 지연의 이유HTTP는 TCP 바로 위에 있는 계층이기 때문에 HTTP 트랜잭션의 성능은 그 아래 계층인 TCP 성능에영향을 받는다. 즉, 대부분의 HTTP 네크워크 지연은 TCP 네크워크의 지연 때문에 발생한다.그럼 정확히 어떤 이유 때문에 지연이 발생하는지 알아보자. 1. Hand shake 지연크기가 작은 HTTP 트랜잭션은 50% 이상의 시간을 TCP를 구성하는데 쓴다.왜냐면 핸드셰이크 과정에서 패킷이 오고 가기 때문이다.  2. 확인 응답(ACK) 지연 확인 응답은 크기가 작아서 같은 방향으로 송출되는 데이터 패킷에 확인 응답을 편승(P..
TCP 제대로 이해하기
·
CS/Network
❒ Description전송계층에서 중요하게 알아야 할 TCP의 연결과정에 대해서 깊이있게 공부해보자.   ❒ TCP란?TCP는 TCP/IP 모델의 전송계층의 프로토콜 중 하나이다. 기본적으로 다음의 특징을 가지고 있다.패킷 사이의 순서 보장한다.연결 지향형 프로토콜을 사용하여 신뢰성을 구축한다.가상회선 패킷 교환 방식을 사용한다.💬 가상회선 패킷 교환 방식이란?각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고패킷들은 전송된 순서대로 도착하는 방식을 말한다. TCP는 "연결 지향형 프로토콜을 사용하여 신뢰성을 구축한다." 라고 했다.연결 지향형 프로토콜은 송신측 & 수신측 컴퓨터가 데이터를 전송하기 전에 먼저 데이터를송수신할 수 있는 신뢰성 있는 연결 통로를 만들고 데이터..
3xx - Redirection Status Code
·
CS/Network
❒ Description이번 주제는 HTTP 상태코드 중에서 리다이렉션에 관련된 300번대에 대해 자세히 알아볼 것이다.주로 301 ~ 308에 대해서 알아볼 것이면 잘 사용되지 않는 300번은 제외 했다.   ❒ Redirection 상태 코드 3xx리다이렉션 상태코드는 요청을 완료하기 위해 클라이언트가의 추가 조치가 필요할 때 내려준다.웹 브라우저는 리다이렉션 응답의 결과에 상태코드와 리다이렉션할 위치를 알려주는 Location 헤더가 있다.일반적으로 리다이렉션 응답의 결과에 Location 헤더 정보를 포함시키는 것은 좋은 습관이라고 한다.  1. 영구 리다이렉션 (301, 308)상태 코드사유 구절의미301Moved Permanently리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거(불..
[선형] Hash Table
·
CS/Data Structure
❒ Description선형 자료 구조 중 하나인 Hash Table의 특징, 충돌 로드 팩터 등등 해시 테이블에 대해서 자세히 알아보자.  ❒ 해시, 해시 함수 그리고 해시 테이블해시 테이블은 키를 값에 매핑할 수 있는 구조인 연관 배열 추상 자료형을 구현한 자료구조이다.가장 큰 특징은 대부분의 연산이 시간 복잡도 O(1)이라는 점이다. 해시는 어떤 길이의 임의 데이터를 고정 길이의 데이터로 매핑하는 것을 말한다.해시 함수는 임의의 크기의 입력 데이터를 고정된 크기의 해시 값으로 변환하는 함수입니다. 해시 테이블을 인덱싱하기 위해 해시 함수를 사용하는 것을 해싱이라고 하며, 해싱은 정보를 가능한 빠르게 저장하고 검ㅅ색하기 위해 사용하는 중요한 기법 중 하나이다. 해시 함수의 특징은 입력되는 데이터가 뭐..
[선형] Doubly-Linked List
·
CS/Data Structure
❒ Description이중 연결 리스트(Doubly-Linked List )에 대해서 알아보자.   ❒ Doubly-Linked List 실제 자바에서 제공하는 util 패키지의 LinkedList는 DL-List랑 같은 형식으로 되어있다. Singly LinkedList와의 차이라면 단일 연결리스트는 노드에 데이터와 다음 노드를 가리키는 노드 변수만을 갖고 있었다면 DL-List는 하나 더 추가되어 '이전 노드'를 가리키는 변수가 추가 된다. Singly LinkedList에 비해 검색(색인)능력이 좋아진다. 단방향으로 연결 된 Singly LinkedList의 경우 반드시 head부터 시작하여 탐색하였다. 만약 10개의 노드가 있고,9번 째 노드를 탐색하려고 한다면, head부터 탐색했어야 했다.하..
[선형] Priority Queue
·
CS/Data Structure
❒ Description우선순위 큐(Priority Queue)에 대해서 알아보자.   ❒ Priority Queue우선순위 큐(Priority Queue)는 스택과 큐와 같은 추상자료형(ADT)이다.Queue와 거의 비슷하지만, 각 요소들이 우선순위를 갖고 있다는 차이점이 있다.  P-Queue는 여러가지 자료구조로 구현이 가능하다.위와 같이 여러 구현 방식이 있지만, 최악의 경우에도 시간복잡도가 O(logN)인 'Heap(힙)' 자료구조를활용하는 방식이 가장 대표적이다.   ❒ Java에서 Priority Queue 선언하기기본적으로 아래와 같이 P-Queue를 선언한다. 이 경우는 작은 숫자가 우선순위를 가지는 P-Queue이다.PriorityQueue pq = new PriorityQueue(..
계층별 네트워크 기기
·
CS/Network
❒ Description네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만,그 반대는 불가능 하다. 이번에는 계층별 네트워크 기기에 대해서 자세히 공부한다.   ❒ 애플리케이션 계층을 처리하는 기기1. L7 스위치L7 스위치는 여러 장비를 연결하고, 데이터 통신을 중재하며 목적지가 연결된 프로토콜만 전기 신호를보내 데이터를 전송하는 통신 네트워크 장비다. L7 스위치는 로드벨런스라고 부르기도 한다.이와 관련된 내용은 깃블로그 참고하기.   ❒ 인터넷 계층을 처리하는 기기1. 라우터라우터란 여러 개의 네트워크를 연결, 분할, 구분시켜주는 역할을 하며 "다른 네트워크에 존재하는 장치끼리서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를..
[선형] Circular Queue
·
CS/Data Structure
❒ DescriptionDesign Circular Queue 문제를 풀면서 알게된 Circular Queue에 대해 학습한다.긱포기 Circular Queue 포스팅을 참고했다.   ❒ Circular Queue란?Circular-Q는 normal-Q의 확장 버전으로 다음과 같은 특징을 갖고 있다.마지막 요소(rear)와 첫 번째 요소(front)가 연결된 구조를 갖는다.이런 구조로 인해 Buffer-Ring이라고 부르기도 한다.FIFO 원칙을 기반으로 한다.  ❒ Operations of Circular-Q1. FrontQ의 앞쪽 요소를 반환한다.2. RearQ의 뒤쪽 요소를 반환한다.3. enQueue(value)새로운 요소를 삽입할 때 사용한다.새로운 요소는 항상 rear 위치에 자리한다.4. d..