열렬히.뛰기

7장 : 응용계층

네트워크 > 네트워크 이론 (1) > 네트워크 (1) : 모두의 네트워크 > 7장 : 응용계층

javascript
사용자
-----------------
응용 계층
표현 계층
세션 계층
전송 계층
네트워크 계층
데이터 링크 계층
물리 계층
-----------------
전선 

이 책에서는 응용 계층과 표현 계층을 같이 서술한다. 세션 계층은 생략한듯.

응용 계층이란?

  • 서비스를 요청하는 쪽 (클라이언트)에서 사용하는 애플리케이션
  • 요청자 = 사용자 = 클라이언트, 제공자 = 서버
    • 서버 프로그램을 의미
javascript
웹 사이트 = HTTP, 파일전송 = FTP, 메일 = SMTP, POP3, IP 주소 해석 = DNS 등등

HTTP

웹 사이트 접속을 위한 프로토콜.

작동원리

javascript
클라이언트 ----(HTTP 요청)----> 서버
클라이언트 <---(HTTP 응답)----- 서버

요청과 응답을 할 때, http 메시지라는 것을 보냄.
자세한 이야기는 http 완벽 가이드에서...
javascript
GET /example/path HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

HTTP/1.1 200 OK
Date: Sat, 01 Jan 2022 12:00:00 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1234

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

HTTP 1.1과 지속기능

  • HTTP 1.0에서는 요청을 보낼 때마다 연결하고 끊는 작업을 반복.
  • HTTP 1.0+에서 keep-alive를 추가했으나, 여러 단점이 생김.
  • HTTP 1.1에서 이를 개선해 항상 지속 상태로 두는 기능이 생김.
  • 콘텐츠 표시 기능을 확실히 개선한 HTTP/2 버전도 2015년에 출시됨.

DNS

IP 주소 해석을 위한 프로토콜

  • URL을 IP주소로 해석하는 기능 = 이름 해석.
  • 이러한 역할을 하는 서버를 DNS 서버라고 하며, 전세계에 흩어져 있다.
javascript
1. URL을 입력한다.

2. DNS 서버로 URL을 보낸다.

3. DNS 서버는 URL을 IP주소로 번역해 다시 보낸다.

4. 보내준 IP 주소를 이용해 클라이언트는 웹 서버로 HTTP 요청을 보낸다.

SMTP / POP3

메일을 송/수신하기 위한 프로토콜

  • 메일 받기 = SMTP 프로토콜, 포트번호 25번
  • 메일 보내기 = POP3 프로토콜, 포트번호 110번
  • 서버 간 메일 전송에도 SMTP 이용 (ex. 지메일 → icloud.com)
javascript
1. 사용자1 -> 메일서버1, SMTP
2. 메일서버1 -> 메일서버2, SMTP
3. 메일서버2 -> 사용자2, POP3 

1번 과정을 좀 더 살펴보자.

javascript
1. 사용자1의 컴퓨터에서 세션 시작을 통지
2. 사용자1의 컴퓨터에서 송신자의 메일 주소를 통지
3. 사용자1의 컴퓨터에서 목적지 메일 주소를 통지
4. 사용자1의 컴퓨터에서 메일 본문 전송을 통지.
5. 사용자1의 컴퓨터에서 메일 본문을 송신
6. 사용자1의 컴퓨터에서 세션 종료를 통지

3번 과정 역시 잘 파고보면..

javascript
1. 사용자2의 컴퓨터에서 세션 시작을 통지
2. 사용자2의 컴퓨터에서 수신자의 사용자 이름을 통지. 메일서버2에서는 OK
3. 사용자2의 컴퓨터에서 수신자의 비밀번호를 통지. 메일서버2에서는 "비밀번호 확인"
4. 사용자2의 컴퓨터에서 메일을 확인. 메일서버2에서는 "있음"
5. 사용자2의 컴퓨터에서 메일의 전송을 요청
6. 사용자2의 컴퓨터에서 세션 종료를 통지.