HTTP, SMTP, SSH, FTP가 대표적이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층이다.
처음에는 서버와 브라우저간에 데이터를 주고받기 위해 설계된 프로토콜이며, 현재는 서버와 서버간 통신할 때에도 많이 이용한다.
기본적으로 한 연결당 하나의 요청을 처리하도록 설계. 이는 RTT 증가를 불러오게 되어 있다.
RTT : 패킷이 목적지에 도달 후 다시 출발지로 돌아오기까지 걸리는 시간.
background-image
의 position
을 이용하여 이미지를 표기하는 방법.HTTP/1.0 방식에서 발전한 방식이며, 매번 TCP 연결을 하는것이 아닌, TCP 초기화 이후 keep-alive
옵션을 통해 여러개의 파일을 송수신할수 있도록 바뀜.
HTTP/1.0에도
keep-alive
가 있었지만 표준화가 되어있지 않았으며, HTTP/1.1에서 기본옵션으로 설정됨.
최초 TCP 3-way 핸드쉐이크가 발생하면 그 이후로 발생하지 않지만, 문서 안에 포함된 다수의 리소스(이미지, css, script 등)을 처리하려면 요청할 리소스 개수에 비례해 대기시간이 길어지는 단점이 존재
특징
SPDY 프로토콜에서 파생된 HTTP/1.x보다 지연시간을 줄이고 응답시간을 더 빠르게 할수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순의 처리를 지원하는 프로토콜
- 허프만 코딩
문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트수를 사용하여 표현하고, 빈도가 낮은 정보는 비트수를 많이 사용하여 표현하여 전체 데이터의 표현에 필요한 비트양을 줄이는 원리로 동작.
HTTPS는 어플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말하며, 이를 통해 통신을 암호화한다.
HTTP/2는 HTTPS 위에서 동작한다.
전송 계층에서 보안을 제공하는 프로토콜이며, 클라이언트/서버가 통신할 때 제 3자가 메시지를 도청하거나 변조하지 못하도록 막아준다.
보안 세션
보안이 시작되고 끝나는 동안 유지되는 세션. SSL/TLS는 핸드쉐이크를 통해 보안 세션을 생성, 이를 기반으로 상태정보 등을 공유한다.
클라이언트와 서버가 키를 공유하고 이를 기반으로 인증, 인증확인등의 작업이 일어나며 이후에 데이터를 송수신한다.
인증 매커니즘
CA(Certificate Authorities) 에서 발급한 인증서를 기반으로 이루어진다.
공개키를 클라이언트에 제공, 사용자가 접속한 서버가 신뢰할수 있는 서버임을 보장한다.
인증서는 서비스 정보, 공개키, 지문, 디지털 서명 등으로 이루어져 있다.
CA 발급과정
자신의 사이트 정보와 공개키를 CA에게 제출, 이후 CA는 공개키를 해시한 값인 지문을 사용하는 CA의 비밀키 등을 기반으로 CA 인증서를 발급한다.
암호화 알고리즘
대수곡선 기반의 ECDHE 또는 모듈식 기반인 DHE(Diffie-Hellman Ephermeral)을 사용한다.
- 디피-헬만 키 교환 암호화 알고리즘
처음에는 공개값을 공유, 각자의 비밀값고 혼합 후 혼합 값을 공유한다. 이후 각자의 비밀값고 또 혼합하여, 이후에 공통의 암호키를 생성하는 방식.
이런식으로 PSK(사전 합의된 비밀키)가 생성되면 악의적인 공격자가 개인키 또는 공개키를 가지고도 PSK가 없어 아무것도 할 수 없다.
해싱 알고리즘
데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘. SSL/TLS는 해싱 알고리즘으로 SHA-256과 SHA-384를 사용한다.
- 해시
다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값- 해싱
임의의 데이터를 해시로 바꿔주는 일. 함수가 담당- 해시 함수
임의의 데이터를 입력받아 일정한 길이의 데이터로 바꿔주는 함수.
TCP 위에서 돌아가는 HTTP/2와는 달리 HTTP/3은 QUIC이라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반으로 돌아가는 프로토콜. 멀티플렉싱을 가지고 있으며, 초기 연결 설정 시 지연시간 감소라는 장점이 있다.
보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜이다.
노드와 노드 간 파일 전송시 사용되는 프로토콜. 대용량 파일을 처리할 때 유용하다. 현재는 파일을 암호화해서 전송하는 FTPS 또는 SFTP로 대체되고 있다.
특징
FTPS
FTP 표준의 확장. 클라이언트가 FTP 세션이 암호화되도록 요청할 수 있게 한다.
SFTP
SSH 파일 전송 프로토콜로, SSH를 이용하여 파일을 전송한다.
인터넷을 통해 메일을 보낼 때 사용되는 프로토콜이다(Simple Mail Transfer Protocol).
텍스트 기반으로 통신하기에, SMTP 세션을 다음과 같이 표현된다. (C: 클라이언트, S: 서버)
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.com
S: 250 smtp.example.com, I am glad to meet you
C: MAIL FROM:<bob@example.com>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.com>
C: To: Alice Example <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}