DNS(Domain Name System) 개인 컴퓨터의 웹에서 www.naver.com을 입력하면 어떤 과정을 통해 접속하는 지 살펴보자. DNS는 IP 주소를 기억하는 것이 어렵기 때문에 DNS가 등장한 것이다. DNS의 과정을 간략히 말하면 웹에서 www.naver.com을 입력하면 IP를 알아내기 위해 사용자에서 가장 가까운 곳에 위치한 DNS 서버에 www.naver.com의 IP주소를 문의하여 접근하게 되는 것이다. DNS의 상세한 과정을 알기 전에 먼저 Host와 IP 주소에 대해서 알아보자. IP 주소와 Hosts의 개념 Host : 인터넷에 연결된 컴퓨터 한대 한대 IP address : Host끼리 통신을 하기 위해 필요한 주소. 2대의 컴퓨터가 인터넷 통신을 위해 반드시 필요한 것은 ..
TCP는 3-way handshake 과정을 통해 연결을 설정하고 4-way handshake를 통해 해제한다. 3-way Handshake란? TCP 3-way Handshake는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. 3-way Handshake의 역할은, 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하는 것이다. 3-way Handshake의 과정을 살펴보자. 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이 때 클라이언트는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다. 서버는 SYN 요청을 받고 클라이언트에게 요청을..
네트워크 계층들 중 전송 계층에서 사용하는 프로토콜에 대해서 알아보자. 전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로서 쉽게 말하면 데이터의 전달을 담당하는 것이다. 그리고 데이터를 보내기 위해 사용하는 프로토콜이 있는데, 해당 프로토콜이 바로 UDP와 TCP이다. TCP와 UDP : 데이터를 전송하기 위해 사용하는 프로토콜 TCP 인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하는 역할을 한다. 패킷 : 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송하는데, 이 조각을 패..
인증서의 역할 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장한다. SSL 통신에 사용할 공개키를 클라이언트에게 제공한다. 추 후 클라이언트는 공개키를 통해 암호화 및 복호화를 진행하는 것이다. CA 인증서의 역할은 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지 보장하는 역할을 한다. 이런 역할을 하는 민간 기업들이 있는데, 이런 기업들을 CA(Certificate authority) 혹은 root Certificate라고 부른다. 인증서의 핵심은 클라이언트가 접속한 서버가 신뢰할 수 있는 사이트인지를 알려주는 것이다. 이것을 보증해주는 기관(CA)들이 존재하는 것이다. SSL을 통해서 암호화된 통신을 제공하려는 서비스는 CA를 통해서 인증서를 구입해야한다. CA는 서비스의 신뢰성..
HTTP 1.1 HTTP 1.1은 기본적으로 Connection당 하나의 요청을 처리하도록 설계되어 있는 것이다. HTTP 1.1은 기본적으로 연결당 하나의 요청과 응답을 처리하기 때문에 동시 전송 문제와 다수의 리소스를 처리하기에 속도와 성능 이슈를 가지고 있다. 이로 인해 HTTP 1.1은 HOL(Head Of Line) Blocking - 특정 응답 지연, RTT(Round Trip Time) 증가, 헤비한 Header 구조라는 문제점들을 가지고 있다. HOL(Head Of Line) Blocking - 특정 응답 지연 하나의 응답이 지연될 시 해당 응답이 완료될 때 까지 다음 요청은 무한대기상태가 된다. RTT(Round Trip Time) 증가 하나의 Connection에 하나의 요청을 처리하므..
SSL 디지털 인증서 SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서이다. 클라이언트가 서버에 접속한 직후 서버는 클라이언트에게 이 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다. 통신 내용이 공격자에게 노출되는 것을 막을 수 있다. 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지를 판단할 수 있다. 통신 내용의 악의적인 변경을 방지할 수 있다. SSL에서 사용하는 암호화의 종류 SSL의 핵심은 암호화이다. 대칭키 Key를 통해 암호화된 메시지를 복호화 하는 방식이다. Ex. LOVE라고 하는 메시지를 전송하자. 이 때, LOVE를 MPZF라는 메시지로 암호화하여 전송하게 되고, 해당 메시지를..
HTTPS vs HTTP HTTP는 Hypertext Transfer Protocol의 약자이다. 즉, HTML을 전송하기 위한 방식이다. HTTPS와 HTTP의 차이를 살펴보면 둘 다 HTML을 전송하기 위한 방식이라는 측면은 동일한데, S에서 차이가 판가름된다. HTTPS에서 마지막 S는 Over Secure Socket Layer의 약자로 보안이 강화된 HTTP라는 것을 짐작할 수 있다. HTTPS는 HTTP와 다르게 보안 장치가 덧붙여 있는 것으로 볼 수 있다. HTTPS를 이용하여 메시지를 전송하게 되면 제 3자는 해당 메시지를 감청할 수 없게된다. Ex. 로그인을 위해서 서버로 비밀번호를 전송할 때 HTTP를 사용하면 메시지를 중간에 감청할 수 있다. Ex. 중요 문서 같은 것을 전송하고자할 ..
HTTP HTTP는 HyperText Transfer Protocol의 약자로서, 인터넷에서 주로 사용하는 데이터를 송/수신 하기 위한 프로토콜이다. 최초 HTTP를 이용한 데이터 송수신은 GET 방시의 HTML을 위주(문서 표현)로 이루어졌으나, 추후에는 여러 메소드 및 미디어 타입이 추가됨에 따라 확장을 했다. HTTP 1.0 HTTP는 원래 0.9v 부터 시작되었다고 하지만, 사실상 1.0버전이 상용화 되어 1996년부터 사용되기 시작했다. HTTP 1.0은 단순히 open/operation/close 방식을 취하고 있는 단순한 구조이다. TCP Connection당 하나의 URL만 fetch하며, 매번 request/response가 끝나면 연결이 끊기므로 필요할 때마다 다시 연결해야하는 단점이 ..
- Total
- Today
- Yesterday
- junit
- java8
- try with resources
- jdk버전
- ifPresent
- 이펙티브자바
- 이펙티브 자바
- springboot
- java
- effectivejava
- 자바8
- Effective Java
- 점층적 생성 패턴
- flatMap
- 빈 순환 참조
- Spring
- package-private
- try catch finally
- 인프런
- 연관관계
- JPA
- mustache
- 정적팩터리메서드
- 복사 팩토리
- @Lazy
- 빌더 패턴
- 김영한
- 생성자
- 스프링부트
- 팩토리 메소드 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |