웹 서비스의 전체적인 흐름
·
CS/Network
❒ Description웹 서비스의 전체적인 흐름을 이해하고 도식도를 그려보자!   ❒ 흐름다음과 같은 흐름으로 우리는 인터넷을 사용하다.1. URL을 입력한다. 2. IP 주소를 얻기 위해 DNS 서버에 질의한다. 3. TCP/IP 커넥션을 맺는다. 4. HTTP 요청을 보낸다. 5. 서버에서 요청을 처리한다. 6. HTTP 응답을 보낸다. 7. 브라우저가 응답을 렌더링한다. 8. 추가 리소스 요청 및 렌더링 9. 세션이 유지되거나 종료된다. 10. TCP 연결을 종료한다.  아래 그림은 TCP/IP 4계층 모델과 Application의 흐름을 더 자세히 이해하고자 그려봤다.   참고로 중간에 Middleware가 있는데 이것은 곧 Servlet Container이다. Servlet Container ..
HTTP 3.0
·
CS/Network
❒ DescriptionHTTP/3.0은 현대 웹의 성능과 안전성을 향상시키기 위해 개발된 HTTP 프로토콜이다. 이전의 2.0과는 근본적으로 다른 방식으로동작하며, 주로 QUIC(Quick UDP Internet Connections)을 기반으로 한다.  ※ 별도의 예상 면접 리스팅 X   ❒ 등장 배경HTTP/3.0은 주로 네트워크 성능과 신뢰성을 개선하기 위해 개발되었다. HTTP/2.0은 기존의 HTTP/1.x에서많은 개선을 이뤄냈지만, 여전히 TCP 위에서 동작하기 때문에 몇 가지 근복적인 문제를 안고 있다. 특히, TCP의 HOL Blocking 문제가 큰 이슈였다. TCP 연결에서 패킷 손실이 발생하면, 손실된 패킷이 재전송되기 전 까지 나머지 패킷들은 대기해야 한다. 이는 특히 네트워크가 ..
SSL/TLS Handshake
·
CS/Network
❒ DescriptionHTTP 보다 안전한 HTTPS에 대해서 알아보고, 어떤 과정을 통해 안전한 통신을 할 수 있는지 공부하자!참고로 이와 관련해서 옛날에 공부했었는데 여기서는 부족한 부분을 추가/보충할 것이다. ※ 이번 포스팅에서는 별도로 예상 면접 질문은 뽑지 않는다.   ❒ SSL/TLS HandshakeSSL(Secure Sockets Layer) 핸드셰이크는 클라이언트와 서버 간의 보안 연결을 설정하기 위한 과정이다.이 과정은 데이터를 암호화하여 안전하게 전송할 수 있도록 하기 위해 필요한 키 교환 및 인증을 수행한다.SSL 핸드셰이크는 다음과 같은 단계로 이루어진다. 1. [Client] Client Hello 클라이언트가 서버에 연결 요청을 한다. 이때 클라이언트는 자신이 지원하는 다음 ..
[LeetCode#46] Permutation
·
Algorithm/문제풀이
❒ Description제목Permutation링크https://leetcode.com/problems/permutations/description/자료구조비선형 (그래프)시간복잡도 O(n!)Permutation(순열)이란, 모든 가능한 경우를 그래프 형태로 나열한 결과라고 할 수 있다.이 문제는 BackTraking을 통해서 해결하는 문제인데, 모든 가능한 순열을 생성하기 때문에nums의 크기가 커질수록 시간이 급격히 증가한다. ❒ Solution1. Solution1public class Solution { public List> permute(int[] nums) { List> results = new ArrayList(); List elements = Arrays.s..
HTTP 2.0
·
CS/Network
❒ Description이번에는 HTTP/2.0이 왜 등장했고, 이전 버전과 어떤 차이를 가지는지 공부하자!   ❒ 등장 배경HTTP/1.1의 메시지 포맷은 구현의 단순성과 접근성에 주안점을 두고 최적화되었기 때문에 어느정도 성능은희생시킬 수 밖에 없었다. HTTP/1.1에서 HTTP 트랜잭션은 요청과 응답으로 심플하게 구성되어있는데,응답을 받아야만 다음 요청을 할 수 있기 때문에 회전 지연(RTT: Round Trip Time)을 피할 수 없다는 단점이 있다. 물론 이 문제를 해결하기 위해서 병렬 커넥션, 파이프라인 커넥션 기술이 등장했지만, 각각 제약들도 있었고근본적인 문제가 해결이 되지 못했다. 여기서 근본적인 문제라 함은,  한 번에 하나의 요청만 처리할 수 있다는구조적 한계를 말한다. 이렇게 근..
[프로그래머스#42576] 완주하지 못한 선수
·
Algorithm/문제풀이
❒ Description제목완주하지 못한 선수링크https://school.programmers.co.kr/learn/courses/30/lessons/42576자료구조선형 (해시)시간복잡도O(n + k)이번 문제는 해시맵을 사용하여 간단하게 해결 할 수 있는 문제인데 다른 풀이에서 HashMap을 생성할 때 Stream을 이용한 풀이가 있어서 메모.   ❒ Map 생성Code 1다음과 같은 배열 `"A", "B", "C", "A", "C", "A"`에서 각 요소가 몇 번 나왔는지를 Map 자료구조로 표현할 때나는 주로 아래와 같이 코드를 작성했다.Map counter = new HashMap();for (String name : students) { counter.put(name, counter.get..
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)이라는 점이다. 해시는 어떤 길이의 임의 데이터를 고정 길이의 데이터로 매핑하는 것을 말한다.해시 함수는 임의의 크기의 입력 데이터를 고정된 크기의 해시 값으로 변환하는 함수입니다. 해시 테이블을 인덱싱하기 위해 해시 함수를 사용하는 것을 해싱이라고 하며, 해싱은 정보를 가능한 빠르게 저장하고 검ㅅ색하기 위해 사용하는 중요한 기법 중 하나이다. 해시 함수의 특징은 입력되는 데이터가 뭐..