Application layer의 다양한 프로토콜들을 알아보겠습니다!
Name System
DNS
Domain을 IP address로 전환해줍니다.
사용자가 www.example.com이라는 Domain의 IP address를 DNS에게 물으면, DNS는 이에 대한 답을 해줍니다.

사용자가 www.example.com이라는 Domain에 접속하려 할 때, 다음과 같은 과정이 이루어집니다.
(그림의 "recursive"라 표현된 위치는 DNS resolver입니다.)
1. 사용자의 요청은 DNS resolver로 라우팅됨
- DNS resolver는 ISP가 관리함
- 사실, 이렇게 DNS resolver가 요청을 받은 뒤,
DNS resolver의 Cache에 "www.example.com"에 대한 IP address가 존재한다면
이것을 바로 사용자에게 전달하고,
이후 과정은 진행되지 않습니다.
2. DNS resolver는 사용자의 요청을 root name server에 전달
3. .com의 TLD(Top Level Domain) name server로 가라는 답을 받음
4. DNS resolver는 사용자의 요청을 TLD name server에 전달
5. example.com Domain의 authoritative server로 가라는 답을 받음
6. DNS resolver는 사용자의 요청을 authorative server에 전달
7. 원하는 IP 주소를 받음
8. DNS resolver는 IP 주소를 사용자의 웹 브라우저에 전달
Host Config
DHCP
DHCP는 IP 주소와 같은 통신 매개변수들을 네트워크에 연결된 장치들에 자동으로 할당해줍니다.
(그래서 이것 없이는 IP 주소를 수동으로 할당해야 하는 번거로움이 생기죠.)

가정에서는 보통 라우터가 DHCP 서버의 역할을 합니다.
DHCP 시스템은 서버와 클라이언트 두 요소가 통신합니다.
(여기서 서버는 IP 주소를 할당하는 것, 클라이언트는 이 서버에 연결된 모든 장치들입니다.)
네트워크에 클라이언트가 연결될 때, IP 주소를 요청합니다.
이 요청은 서버로 전달됩니다.
서버는 클라이언트에게 IP 주소를 할당해줍니다.
클라이언트는 이 IP 주소를 이용해 내부 / 공용 네트워크와 통신 가능합니다.
서버는 이 주소의 이용을 모니터링하다가,
클라이언트의 연결이 해제되면, 이것의 IP 주소를 다시 가져옵니다.
SMTP, IMAP, POP3

File Transfer
FTP(File Transfer Protocol)
FTP는 말 그대로 파일 전송에 쓰이는 프로토콜입니다.

그리고 서버와 클라이언트가 통신하는 구조입니다.
예를 들어, 집이 아닌 카페에서 집 PC와 파일을 공유하고 싶을 때 아래와 같이 이용할 수 있습니다.
집에서는 FTP 서버를 사용하고,
집 밖의 카페에 와서는 노트북이나 스마트폰으로 FTP 클라이언트 프로그램을 통해 FTP 서버에 접속할 수 있는 것입니다.
그러면 FTP 서버 내 집 PC의 파일을 가져올 수 있고 (즉, 집 PC의 파일을 옮겨오는 USB가 필요없어지는 것이죠.),
반대로 FTP 서버에 파일을 올려놓을 수도 있습니다.
Web
HTTP
HTTP는 HTML 문서 등을 fetch하기 위한 프로토콜입니다.
어떤 웹페이지의 텍스트, 이미지, 비디오 등은 따로따로 fetch되고, 이들이 재구성되어 완전한 문서, 즉 웹페이지를 이룹니다.

Client-server 프로토콜
HTTP는 Client-server 프로토콜입니다.
client가 보낸 메시지는 request, server가 보낸 메시지는 response라 불립니다.
이러한 소통을 시작하는 것은 언제나 server가 아니라 client 쪽입니다.
client(chrome 등) <---------> server(nodejs, apache 등)
TCP 사용
HTTP는 그 아래 transport layer의 protocol이 "reliable"해야 하기에 TCP connection을 이용합니다.
- reliable: 데이터 손실이 없음 (↔ UDP: unreliable)
Connectionless
each HTTP request and response is independent
and does not maintain a persistent connection between the client and the server.
-> server cannot inherently identify clients.
Stateless
server does not retain information about previous requests from the same client.
# 그럼, 사용자 정보를 어떻게 유지할 건가?
• Including account information in request headers (repeated authentication using ID/PW)
-> 이건 근데 위험
• Cookies (e.g., using a Session ID)
: Small data files or memory records
that a web server instructs the browser
to store on the user's local computer.
여기에 session ID가 들어있고, request header에 포함됨
(read each time the user visits the same website and can be updated frequently)

Keep-Alive
# keep-alive가 없을 때 (기본 HTTP/1.0 방식):
핸드셰이크 -> 요청 1번 → 응답 1번 → TCP 연결 종료
# keep-alive가 있을 때 (HTTP/1.1 기본 동작):
Allows multiple requests and responses over a single, persistent TCP connection
-> reduce overhead from repeated TCP connection setups
한 연결에서 HTML → CSS → JS → 이미지 순서대로 요청 가능.
If no packets are exchanged for a specified time, periodic packets are sent to check connectivity
Request
# Methods
GET
POST
HEAD: body 안 받음
OPTIONS
PUT
DELETE
TRACE
# 구조

Response
# 구조

Server-Side Scripting (SSS)
• Web servers execute server-side scripts to create dynamic web pages.
• Can access the server’s file system and generate content on demand.
• languages such as: PHP, ASP, JSP
Client-Side Scripting
• Web browsers execute client-side scripts.
• Client-side scripts cannot access the local file system of the browser.
'컴퓨터과학 > 네트워크' 카테고리의 다른 글
| [Network layer (Layer 3) in OSI 7 Layer <2>] Routing Protocols: IGP, EGP, Link State, Distance Vector, Path Vector (0) | 2024.01.08 |
|---|---|
| [Network layer (Layer 3) in OSI 7 Layer <1>] NAT, ICMP, ARP (0) | 2024.01.07 |
| [Transport Layer (Layer 4) in OSI 7 Layer] TCP, UDP (0) | 2024.01.04 |
| 인터넷, 이더넷 (0) | 2023.05.05 |
| CIDR (Classless Inter-Domain Routing) (0) | 2023.04.30 |