일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- Locking Read
- MySQL
- 동시성
- 동시성 문제
- 가비지 컬렉터
- java
- reflection
- Di
- db
- iterator
- text
- iterable
- Atomic Type
- MVCC
- Varchar
- 스프링
- jpa
- 자바
- Synchronized
- 가비지 컬렉션
- gc
- 데이터 타입
- 백엔드
- Lock
- foreach
- CAS
- Today
- Total
목록Network (13)
과정을 즐기자
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cbWZZe/btsAyTK29En/F7H34sDjW4pkKmc3wGKboK/img.png)
HTTP는 인터넷 상에서 가장 많이 사용되고 있는 애플리케이션 프로토콜입니다. HTTP는 웹에서 데이터를 주고 받는 프로토콜로 클라이언트-서버 구조입니다. HTTP를 사용하여 HTML 문서, 이미지, 동영상을 주고 받을 수 있습니다. HTTP 헤더에는 메세지의 속성 정보, 상태 정보가 있고 HTTP 바디에는 실제로 전송하려는 데이터가 들어갑니다. 이러한 HTTP는 1991년부터 시작하여 지속적으로 발전해왔습니다. 이번 글에서는 HTTP의 버전별 특징에 대해 알아보겠습니다. HTTP/0.9 처음부터 존재하던 버전은 아니었고 초기 버전으로 구분하기 위해 이후에 붙여진 버전입니다. 요청은 단일 라인으로 구성되며 리소스에 대한 메소드는 GET만 존재합니다. HTTP 헤더도 없고 HTML 파일만 전송 가능했던 버..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/VyazG/btssIn8tSod/zv4uqTN6KjA1xXTSGlJngK/img.png)
이번 글에서는 서버가 처리할 수 있는 요청의 수는 어떻게 결정되는지 알아보겠습니다.그 전에 먼저 전체적인 웹 서비스의 흐름을 간단하게 살펴보겠습니다. 우선 크게 3가지 서버로 나눌 수 있습니다. 웹 서버, WAS, DB입니다.웹 서버는 Nginx, Apache 등이 있고 정적인 컨텐츠를 처리, 보안, 로드 밸런서 등의 역할을 합니다.WAS는 Tomcat, Jetty 등이 있고 애플리케이션 로직같은 동적 컨텐츠를 처리합니다.DB는 MySQL, Oracle, MongoDB 등이 있고 데이터를 저장하는 역할을 합니다. 사용자의 요청이 오면 웹 서버, WAS, DB를 거쳐 응답을 반환합니다.물론 이때 DB를 거치지 않고 웹 서버나, WAS에서 바로 응답을 반환할 수도 있습니다. 스프링부트를 사용하면 톰캣 서버..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/syYIc/btsqM7TyOlx/IkxlKuASmUwKQ0akucLlT1/img.png)
이번 글에서는 저번 글에 이어서 애플리케이션 계층(L7)이 하는 일에 대해 알아보겠습니다. 물리 계층(L1), 데이터 링크 계층(L2), 네트워크 계층(L3), 트랜스포트 계층(L4)이 하는 일은 이전 글들을 참고해주세요 L7 - 애플리케이션 계층 L7은 개발자가 직접 다루는 애플리케이션이 하는 일에만 집중합니다. 하위 계층에서 어떤 프로토콜이 어떻게 동작할 지 모르더라도 개발자는 L7 계층의 프로토콜을 이용하여 애플리케이션을 만들 수 있습니다. L7의 프로토콜로는 DHCP, DNS, SSH, FTP, STMP, IMAP, HTTP 등이 있습니다. 지금부터 이러한 프로토콜에 대해서 알아보겠습니다. DHCP 우리가 사용하는 컴퓨터는 연결된 라우터와 같은 네트워크에서 겹치지 않는 IP 주소를 할당받아야 합니..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wijvv/btsqh3pTicH/ANvBq8zBsShhqf1lJECsp0/img.png)
이번 글에서는 Stateless인 HTTP에서 로그인을 어떻게 유지하는 지에 대해서 생각해보며 성능을 고려하여 세션 기반 인증, 토큰 기반 인증을 비교해보겠습니다. 세션 기반 인증 세션을 저장하는 곳 세션 기반 인증은 서버측에서 사용자들의 정보를 기억해야 합니다. 사용자가 로그인 요청을 하면 서버에서는 로그인 할 수 있는 회원인지 확인한 후 로그인 가능하면 Set-Cookie에 Session Id를 반환합니다. 그러면 사용자의 다음 요청시 쿠키의 헤더를 보고 서버는 사용자가 로그인 유지를 할 수 있도록 합니다. 하지만 이때 문제점이 있습니다. 사용자의 세션 정보는 서버가 가지고 있는데 트래픽이 늘어나 서버가 여러 대로 늘어난다면 사용자는 로그인을 요청했던 서버에게 요청을 할 때만 로그인을 유지할 수 있다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b0VGwv/btspdXEtJtF/aggyw5kL34dcAdBI1aOinK/img.png)
이번 글에서는 저번 글에 이어서 트랜스포트 계층(L4)이 하는 일에 대해 알아보겠습니다. 물리 계층(L1), 데이터 링크 계층(L2), 네트워크 계층(L3)이 하는 일은 이전 글들을 참고해주세요 L4 - 트랜스포트 계층 L4는 송신자와 수신자를 연결하는 통신 서비스를 제공합니다. 직접 물리적으로 데이터를 옮기는 것은 아니지만 송신자, 수신자가 통신을 할 수 있게 연결해주는 역할입니다. L4는 호스트 내에서 애플리케이션을 구분하는 용도로 포트라는 것을 사용합니다. 포트는 16비트로 사용하기 때문에 2^16으로 부호없는 정수 0 ~ 65535번이 될 수 있습니다. IP 뒤에 콜론으로 포트 번호를 붙입니다. 포트는 논리적인 개념으로 간단하게 프로세스 주소라고 할 수 있습니다. 이렇게 L4는 송신자, 수신자를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LXOrc/btsoCEytRzM/5sUefns4bwNs68NrTQavf0/img.png)
이번 글에서는 저번 글에 이어서 네트워크 계층(L3)이 하는 일에 대해 알아보겠습니다. 물리 계층(L1), 데이터 링크 계층(L2)이 하는 일은 이전 글을 참고해주세요 물리 계층(L1), 데이터 링크 계층(L2)이 하는 일 이번 글에서는 물리 계층(L1), 데이터 링크 계층(L2)에 대해서 알아보겠습니다. L1 - 물리 계층 L1에는 케이블, 리피터, 허브가 있습니다. L1은 실제로 데이터를 물리적으로 전송해주는 역할을 합니 320hwany.tistory.com L3 - 네트워크 계층 이전에 스위치와 허브로만 이루어진 브로드캐스트 영역을 나눠야할 필요성이 있었습니다. LAN 영역에서 LAN 영역으로 넘어가게 되면 기존에 사용하던 출발지 MAC 주소, 목적지 MAC 주소만으로는 다른 LAN 영역에 있는 컴..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lJMTB/btsohArzXjV/0PkkYvTZGInQeOLygKAd30/img.png)
이번 글에서는 물리 계층(L1), 데이터 링크 계층(L2)에 대해서 알아보겠습니다. L1 - 물리 계층 L1에는 케이블, 리피터, 허브가 있습니다. L1은 실제로 데이터를 물리적으로 전송해주는 역할을 합니다. 데이터는 디지털이지만 디지털은 물리적으로 보낼 수 없습니다. 즉 디지털 데이터가 아날로그로 변환되고 이것을 전기신호, 전자기파(가시광선, 전파 등)로 보내는 것입니다. 케이블 이렇게 데이터를 보내는 것은 케이블을 통해서 가능합니다. 케이블은 UTP 케이블, 동축 케이블, 광 케이블이 있습니다. UTP 케이블은 현재 가장 많이 사용되며 흔히 볼 수 있는 랜선이라고 생각하시면 됩니다. 동축 케이블은 반이중 통신이고 설치가 어렵고 비싸기 때문에 잘 사용하지 않습니다. 광 케이블은 빛을 이용하기 때문에 더..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MpScY/btsmqK2MVvM/dmMbt4uOGdO2fOvql8qp4k/img.png)
이 글은 '성공과 실패를 결정하는 1%의 네트워크 원리'를 읽고 정리한 내용입니다. 브라우저에 URL을 입력하면 그것을 바탕으로 브라우저는 HTTP Request Message를 만들고 OS에 송신을 의뢰합니다. 여기까지의 과정은 이전 글에서 설명하였습니다. 웹 브라우저가 메세지를 만든다(HTTP, DNS, OS 프로토콜 스택, 소켓) 이 글은 '성공과 실패를 결정하는 1%의 네트워크 원리' 책의 1장으로 보고 정리한 내용입니다. HTTP Request Message를 작성한다 먼저 사용자가 브라우저에 URL을 입력합니다. URL에는 프로토콜, 웹서버 320hwany.tistory.com TCP/IP 전체 구조 이번 글에서는 그 다음 과정인 OS에 내장된 프로토콜 스택이 어떻게 송신을 의뢰하는 지를 알아..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sxJcj/btslMa8CEPB/EUQyxVKqGGSk7Yk28yVv81/img.png)
이 글은 '성공과 실패를 결정하는 1%의 네트워크 원리' 책의 1장으로 보고 정리한 내용입니다. HTTP Request Message를 작성한다 먼저 사용자가 브라우저에 URL을 입력합니다. URL에는 프로토콜, 웹서버명, 디렉토리명, 파일명 등이 정의되어 있습니다. 프로토콜에는 http, ftp, file, mailto 등이 있지만 여기서는 가장 많이 사용하는 http로 설명하겠습니다. 이제 브라우저는 URL의 정보를 보고 HTTP Request Message를 만듭니다. 이렇게 브라우저가 만든 HTTP Request Message를 서버에 전송하고 서버로부터 HTTP Response Message를 받습니다. HTTP 구조에 대한 자세한 내용은 이전 글을 참고해주세요. HTTP 특징 HTTP 메소드 ..
HTTP header 란 HTTP 메세지에는 start line, header, empty line, message body 4부분으로 나뉘었는데 이번 글에서는 header에 대해서 알아보겠다. HTTP header에는 HTTP 전송에 필요한 모든 부가 정보가 들어있다. message body의 크기, 내용, 압축, 인증, 클라이언트 정보, 서버 정보 ... HTTP header는 header field ":" OWS field value 형식으로 작성한다. 예를들면 Content Length: 3423으로 작성할 수 있다. HTTP header 종류 이러한 header는 4가지로 분류할 수 있다. General header : 메세지 전체에 적용되는 정보 request header : 요청 정보 res..