일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift
- async
- SwiftUI
- WeatherKit
- RxSwift
- 네트워크
- 프로토콜
- CS
- forEach
- 디자인 패턴
- 세종대학교
- 실습
- 구름톤 유니브
- uikit
- 기초문법
- 이론
- MVVM
- ios
- 스트럭트
- mvc
- AppStore
- 협업
- 토이프로젝트
- collectionview
- 대표
- 반응형
- 앱개발
- struct
- 딕셔너리
- 학과별커뮤니티
- Today
- Total
스윞한 개발자
5. 네트워크(HTTP) 본문
안녕하세요 이번에는 CS 네트워크 마지막 포스팅 애플리케이션 계층인 HTTP에 대해 공부하고 정리해 보겠습니다.
# HTTP
1) HTTP/1.0
*RTT : 패킷 목적지 -> 출발지 까지의 왕복 시간
1.0은 기본적으로 하나의 연결 당 하나의 요청을 처리하도록 설계되었습니다. 이로 인해 RTT가 증가한다는 단점을 가지고 있습니다.
매번 연결할 때마다 RTT가 증가하기에 스플리팅, 코드 압축, 이미지 Base64 인코딩 등을 사용했습니다.
- 이미지 스플리팅
많은 이미지를 다운 받게 되면 과부하되기 때문에 많은 이미지가 합쳐 있는 하나의 이미지를 다운 받고, 이를 기반으로 이미지를 표기하는 방법입니다.
- 코드 압축
개행, 빈칸 등을 없애 코드의 길이를 최소화하는 것입니다.
- 이미지 Base64 인코딩
이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법입니다. 이 방법을 사용하면 이미지의 별도 HTTP 연결을 할 필요가 없어지지만 크기가 커지는 단점이 있습니다.
2) HTTP/1.1
매번 TCP 연결을 하는 것이 아니라 keep-alive 옵션을 두고 여러 개의 파일을 송수신할 수 있게 바뀌었습니다. 1.0에도 해당 옵션은 있었지만 표준화되지 않았습니다.
한번 핸드셰이크가 발생하면 그 다음부터 발생하지 않습니다. 하지만 문서 안에 포함된 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례하여 대기 시간이 길어지는 단점이 있습니다.
* HOL Blocking
Head Of Line Blocking은 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하를 말합니다.
2) HTTP/2
SPDY 프로토콜에서 파생된 HTTP/1.X 보다 지연 시간을 줄이고 응답을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜입니다.
*멀티플렉싱 : 여러 개의 스트림(데이터 요소)을 사용하여 송수신한다는 것입니다. 특정 스트림이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 정상적으로 동작합니다.
헤더 압축시에는 허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 가집니다.
(문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수, 낮은 정보는 높은 비트 수를 사용)
또한, 클라이언트의 요청없이 서버가 바로 리소스를 푸시할 수 있습니다.
2) HTTPS
애플리케이션 - 전송 계층 간 신뢰계층인 SSL/TLS 를 넣어 통신을 암호화 하는 것을 의미합니다.
* SSL/TLS
제 3자가 메시지를 도청하거나 변조하지 못하도록 합니다. 사용자 정보를 가로채는 네트워크상의 인터셉터를 방지할 수 있습니다.
데이터 암호화와 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘 등이 사용됩니다.
클라이언트에서 서버와 키를 공유하고 이를 기반으로 인증, 인증 확인 등의 작업이 일어나는 단 한 번으 RTT가 생긴 후 데이터를 송수신합니다.
'사이퍼슈트'를 서버에 전달하면 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는지 확인하고 그렇다면, 서버에서 클라이언트로 인증서를 보내 인증, 해싱 알고리즘으로 데이터 송수신이 일어납니다.
*사이퍼슈트 : 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약을 말합니다.
2) HTTP/3
QUIC라는 계층에서 돌아가며, UDP 기반으로 돌아갑니다. 멀티플렉싱이 가능하며 초기 연결시 지연 시간 감소라는 장점이 있습니다.
번거로은 3-웨이 핸드셰이크 과정을 거치지 않아도 됩니다.
QUIC는 순방향 오류 수정 메커니즘이 적용되어 송신 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식이며 열악한 네트워크 환경에서도 낮은 패킷 손실률을 자랑합니다.
이상으로 네트워크에 대해 정리를 마치겠습니다!
다음 포스팅에서는 운영체제에 대해 공부하고 정리해 보겠습니다 감사합니다!
'CS 이론' 카테고리의 다른 글
7. 프로세스와 스레드 (0) | 2024.08.18 |
---|---|
6. 운영체제 (0) | 2024.08.17 |
4. 네트워크 기기 (0) | 2024.08.11 |
3. 네트워크 (0) | 2024.08.10 |
2. 디자인 패턴, 프로그래밍 패러다임 (0) | 2024.08.08 |