천재적인 CS/네트워크

네트워크 HTTP, HTTPS

강하다이녀석 2023. 12. 16. 22:14

 

NAT 

NAT(network Address Translation) 은 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법. 

현재 IPv4주소 체계에서는 공인 IP 개수가 부족하기 때문에 NAT를 사용하여 공인 IP를 사설 IP로 변환하여 처리.

 

192.168.0.xxx는 사설 IP, NAT 장치를 통해 하나의 공인 IP인 121.165.151.200으로 외부 인터넷에 요청.

-> 하나의 IP를 기반으로 각각 다른 IP를 가지는 거 처럼 인터넷 사용 가능. 

NAT 장치를 통해 사설<->공인 IP변환.

 

공유기와 NAT

주로 여러 대 호스트가 하나의 공인 IP ㅈ소를 사용하여 인터넷에 접속할떄 씀.

인터넷 회선하나에 공유기를 달아서 여러 PC를 연결하여 사용.(공유기에 NAT 기능이 있기 떄문)

 

NAT 보안

내부 IP주소, 외부 IP주소가 달라서 어느정보 보안 기능.

 

NAT 단점

여러 명이 동시에 인터넷 접속 : 호스트 숫자에 따라서 접속 속도가 느려짐.

 

HTTP

애플리케이션 계층, 웹서비스 통신에 사용.

 

HTTP/1.0

한 연결 당 하나의 요청을 처리. -> RTT증가

 

RTT 증가

서버로부터 파일을 가져올 때마다 TCP의 3웨이 핸드셰이크를 계속해서 열어야 하므로 RTT가 증가

RTT
패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 왕복 시간.

 

RTT 증가 해결방법

  1. 이미지 스플리팅
  2. 코드 압축
  3. 이미지 Base64인코딩

이미지 스플리팅(==이미지 스프라이트)

이미지가 합쳐있는 하나의 이미지를 다운로드 받고, 이를 기반으로 background-image의 position을 이용하여 이미지를 표기

 

코드 압축

코드를 압축하여 개행문자, 빈칸 등을 없애 코드 크기를 최소화

이미지 Base64 인코딩

이미지를 64진법으로 이루어진 문자열로 인코딩.

장점 : 서버와의 연결을 열고 이미지에 대해서 서버에 HTTP 요청을 할 필요 x

단점: 크기가 37%정도 커짐.

 

HTTP/1.1

매번 TCP 연결을 하는 것이 아니라  한 번 TCP 초기화를 한 후 keep-alive 옵션으로 여러 파일을 송수신.

한번 3웨이 핸드셰이크 발생 후에는 다음에는 발생 x

단점:

  1. 문서 안에 포함된 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례해서 대기시간이 길어짐.
  2. HOL blocking
  3. 무거운 헤더 구조 : 쿠키 등 많은 메타데이터가 들어가있는데 압축이 되지 않아 무거웠다, 

 

HOL Blocking

네트워크에서 같은 큐에 있는 패킷이 그 첫번쨰 패킷에 의해 지연될 때 발생하는 성능 저하 현상. 

-> 순차적으로 앞에게 느리게 받아지면 뒤에는 대기하면서 다운로드가 지연되고, 느려짐. 

 

 

HTTP/2

1.x 보다 지연 시간을 줄이고 응답시간을 더 빠르게 할 수 있으며, 멀티플렉싱, 헤더압축, 서버푸시, 요청의 우선 순위 처리를 지원하는 프로토콜.

 

멀티플렉싱

여러개의 스트림을 사용하여 송수신.->특정 스트림의 패킷이 손실되어도 나머지 스트림은 멀쩡

병렬적 스트림으로 데이터 전송. 스트림 내의 데이터도 쪼개져 있다.

독립된 프레임으로 조각내어 송수신 후 다시 조립.

- 단일 연결로 여러 요청을 받을 수 있음. -> HOL Blocking 해결

- 헤더 압축 : 허프만 코딩 압축 알고리즘을 사용하눈 HPACK 압축 형식.

허프만 코딩 
: 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트수로 표현, 낮은 정보는 비트 수를 많이 사용하여 표현하여 전체 데이터의 표현에 필요한 비트 양을 줄임.

 

서버 푸시

클라이언트 요청없이 서버가 바로 리소스 푸시.

 

HTTPS

애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청.

이를 통해 통신을 암호화

SSL/TLS

전송 계층에서 보안을 제공하는 프로토콜

제3자가 메시지를 도청하거나 가로채지(인터셉터) 못하도록 함.

보안 세션을 기반으로 데이터를 암호화 하며, 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 함호화 알고리즘, 해싱 알고리즘이 사용됨

 

보안 세션

보안이 시작되고 끝나는 동안 유지되는 세션, 

핸드셰이크를 통해 보안 세션을 생성하고, 상태 정보 공유.

 

1-RTT

- 클라이언트와 서버와 키를 공유하고 이를 기반으로 인증, 인증 확인 등의 작업.

- 클라이언트에서 사이퍼 슈트를 서버에 전달하면, 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는지 확인.

제공할 수 있다며느 서버에서 클라이언트로 인증서를 보내는 인증 매커니즘이 시작되고 이후 해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작.

 

Cypher Suites
프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약
1. TLS_AES_128_GCM_SHA256
2. TLS_AES_256_GCM_SHA384
3. TLS_CHACHA20_POLY1305_SHA256
4. TLS_AES_128_CCM_SHA256
5. TLS_AES_128_CCM_8_SHA256

AEAD Cypher Mode
AEAD(Authenticated Encryption with Associated Data)는 데이터 암호화 알고리즘이며 AES_128_GCM
 등이 있다.AES_128_GCM은 128비트의 키를 사용하는 표준 블록 암호화 기술과 병렬 계산에 용이한 암호화 알고리즘 GCM이 결합된 알고리즘이다.

인증 메커니즘

CA에서 발급한 인증서를 기반으로 이루어짐. 공개키를 클라이언트에 제공, 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장. 서비스 정보, 공개키, 지문, 디지털 서명 등으로 이루어짐.

 

암호화 알고리즘

키 교환 암호화 알고리즘 대수곡선 기반의 ECDHE 또는 모듈식 기반의 DHE를 사용. 둘 다 디피-헬만 방식을 근간으로 함

디피-헬만 알고리즘 : 

g, x, p를 안다면 y를 구하기 쉽지만, g, y, p를 안다면 x를 구하기 어렵다는 원리에 기반한 알고리즘이다.
공개값을 공유하고, 각자의 비밀 값과 혼합한 후 혼합 값을 공유. 그 다음 또 각자의 비밀값과 혼합하여 공통의 암호키 PSK가 생성. 
-> 공격자가 공개키, 개인키가 있어도 PSK가 없어 공격 불가

해싱 알고리즘

데이터를 추정하기 힘든 더 작고, 섞여있는 조각으로 만드는 알고리즘. SSL은 SHA-256, SHA-384알고리즘을 사용

 

SHA-256

해싱을 해야 할 메시지에 1을 추가하는 등 전처리를 하고 전처리된 메시지를 기반으로 해시 반환.

해시: 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값
해싱: 임의의 데이터를 해시 함수를 가지고 해시로 바꿔주는 일

 

0-RTT : 사용자가 이전에 방문한 사이트로 다시 방문하면 SSL/TLS에서 보안 세션을 만들 떄 걸리는 통신을 하지 않아도 됨,

 

SEO(Search Engine Optimization, 검색 엔진 최적화)

  1. 캐노니컬 설정 : 
  2. 메타 설정 : html 파일의 <meta> tag
  3. 페이지 속도 개선
  4. 사이트맵 관리

 

HTTPS 구축 방법

  1. CA에서 구매한 인증키를 기반으로 구축.
  2. 서버 앞단의 HTTPS를 제공하는 로드 밸런서.
  3. 서버 앞단에 HTTPS를 제공하는 CDN을 두기.

(나의 nginx가 하는 역할은 뭐지?)

 

HTTP/3

TCP 위에서 돌아가는 HTTP/2와 달리 QUIC계층 위에서 돌아가며, UDP 기반이다.

- 멀티플렉싱 + 초기 연결 설정 시 지연 시간 감소.(TCP가 아니므로 통신 시작에 3-웨이 핸드셰이크 과정이 없다)

 

QUIC

  • 첫 연결 설정에 1-RTT만 소요.(클라가 서버에 신호를 한 번 주고, 서버도 응답하면 바로 본 통신 시작 가능)
  • 순방향 오류 수정 메커니즘: 전송 패킷이 손실되면, 수신측에서 에러를 검출하고 수정. 열악한 네트워크 환경에서도 낮은 패킷 손실률 자랑.
  •  

https://evan-moon.github.io/2019/10/08/what-is-http3/

 

HTTP/3는 왜 UDP를 선택한 것일까?

는 의 세 번째 메이저 버전으로, 기존의 HTTP/1, HTTP/2와는 다르게 UDP 기반의 프로토콜인 을 사용하여 통신하는 프로토콜이다. HTTP/3와 기존 HTTP 들과 가장 큰 차이점이라면 TCP가 아닌 UDP 기반의 통

evan-moon.github.io

https://ykarma1996.tistory.com/86

 

HTTP3 란 무엇일까

HTTP/3는 HTTP 프로토콜의 3번째 메이저 업데이트 버전이다. HTTP/2 버전이 배포된지도 약 4년 밖에 안지났는데 벌써 3버전이 배포된 것은, HTTP 프로토콜이 모든 웹 통신의 근간이 되는 프로토콜인 점,

ykarma1996.tistory.com

 

OSI 7계층과 TCP/IP 4계층의 차이점.

www.naver.com을  을 주소창에 입력했을떄?