둘셋 개발!

[네트워크] Application layer 1 (Http, Cookies, Web Caching, FTP, SMTP, DNS) 본문

네트워크

[네트워크] Application layer 1 (Http, Cookies, Web Caching, FTP, SMTP, DNS)

23 2022. 6. 10. 20:23

 

Application layer

protocol stack의 가장 위에 존재하고

사용자가 직접 접하는 프로토콜 이다.

protocol stack 구조

(출처: https://blog.naver.com/netrance/110112688107)

 


- socket을 통해 바로 밑에 있는 trasport layer와 소통

여기서 socket이란, process와 network사이의 인터페이스로,

process 입장에서 network로 나가는 문과 같은 존재이다.

 

socket의 역할

 


HTTP 

HyperText Transfer Protocol의 약자로 

web에서 데이터를 전송할 수 있는 프로토콜이다.

 

여기서 hyperText란,

단순한 text 차원을 넘어선 문서로, 네트워크를 통해 다른 문서로 접근할 수 있다.

 

 

- TCP 연결을 기반으로 동작한다 

TCP의 port는 80이므로 port는 80번 이다.

80번 port로 연결하는 http

- Simple stateless protocol

http client가 필요한 것을 그때그때 요구하고 http server는 요구에 대해 단순 응답할 뿐 http client의 상태를 유지하지 않는다.

매번 상태를 유지하게 되면 서버가 부하되는 문제가 발생한다..!

 

 

- HTTP Request / Response

http는 client가 server가 hypertext의 구성요소를 하나씩 요청해서 받아간다.

 

한 object당 요청과 응답을 주고 받는다.

(여기서 object는 html, png,video clip을 말함)

 

 

 

 

- Non-Persistent vs Persistent Connection

http연결에는 Non-Persistent connection과 Persistent connection이 있다.

 

1. Non-Persistent connection

위에서 object 단위로 요청하고 응답했다고 했다. 

따라서 object 전송하기 전에 TCP 연결을 맺고 object 응답을 하면 TCP release를 한다.

이 연결방식을 사용하면 시간이 오래 걸리고 server에서 TCP연결 관리에 부담이 간다.

 

2. Persistent Connecion

한번 TCP 연결을 맺으면 모든 obejct를 전송을 한다.

다른 obeject를 요청하고 응답할 때도 같은 TCP연결을 사용한다는 것이다.

만약 일정시간 동안 connection을 사용하지 않으면 release된다.

 

         - piperlining  (파이프라이닝)

          : persistent connection이긴 하지만 object를 하나씩 보내는 것이 아니라 여러 object에 대한 request를 보내고 respons도 한꺼번에 받는다.

           동시에 처리 가능한 일들은 동시에 처리하는 기술이다.

파이라이닝 연결 방식

 

- HTTP Message Format

1. HTTP request message format

http request format

   ❶ method : get인지 post인지

   ❷ URL

   ❸ Version: http의 버전

   ❹ header field name & value: host주소, persistent여부, user-agent, 기타

   ❺ Entity body: 부가적으로 server에게 보낼 정보

 

ex) 

GET / somedir / page.html HTTP/1.1

Host: www.~~~

Connection: close

User-agent: Uni/5.0

Accept-language: fr

2. Http response message format

http response format

 

 

   ❶ version: http 버전

   ❷ status code: http 상태코드

   ❸ phrase: http 상태 메세지

   ❹ header fileld-name & value: persistent 여부, 전송날짜, 서버 프로그램, 생성날짜, 길이, 내용 형태

   ❺ Entity body: 실제 hypertext 내용 (위에서 계속 말했던 그 object!!!)

 

ex)

HTTP/1.1 200 OK

Connection: close

Data: Tue, 09 ...

Server: Apache/2.2.3

Last-Modified: Tue, 11,...

Content-Length: 719

Content-Type: text/html

 

( hypertext )

 


Cookies

http는 기본적으로 stateless로 동작하는데,

user의 idenfitication 등 state가 있어야 하는 동작들이 필요해지면서

http에게 state를 가지게 해주는 것이 바로 Cookie 이다

 


Web Caching

web server를 대신해서 http response msg를 전달하는 것으로

response time을 줄일 수 있고 traffic 양을 줄일 수 있다.

 

- Proxy server  (Web cache)

: web server을 대신에서 응답해주는 개체

 

- 순서

1. Http에 접속하면 우선 proxy server에 접속

2. 복제본이 있으면 바로 response 받음

3. 없으면 proxy server가 원래 server로부 부터 데이터를 받아온 후 Client에게 response 보냄

 


FTP 

File Transfer Protocol 로 

server에서 서비스를 열면 client가 접속하여 명령어를 이용해서

데이터 (file)을 가져가거나 업로드 하는 방식

 

하지만 오늘날에는 보안상의 문제로 잘 사용하지 않고

클라우드를 사용

 


Electronic Mail (email)

말그대로 이메일...!

 

- Asynchronous communication medium

: 그때그때 동기화를 하지 않아도 되고 천천히 보내도 상관없음

 


SMTP

Simple Mail Transfer Protocol의 약자로

mail server간의 mail을 주고 받기 위한 프로토콜이다

 

- mail server

우리가 만약 네이버에서 메일을 보내면 네이버 메일 시스템이 mail server가 되는 것이다.

 

 

- 메일이 보내지는 과정

메일을 전송하면 mail server는 SMTP를 통해 상대방 mail server에게 TCP연결에 기반으로 메일을 전송한다. 

상대방 mail server에게 메일이 정상적으로 보내지기 전까지 한쪽 mail server가 mail 내용을 가지고 있다.

SMTP 기반  메일 전송 과정

 


MAP

Message Access Protocols의 약자로

상대방 mail server에서 상대방 agent에게 mail를 보낼때

사용하는 프로토콜

 

 

필요한 시점에 agent가 mail서버에서 mail을 받아간다

 

 

- MAP 방식

1. POP3

: 보통 소규모 회사들이 사용하는 방식으로 mail서버에서 꺼내면 그 서버에서는 내용이 제거 된다. 말그대로 pop!

 

2. IMAP (Internet MAil Access Protocol)

: gail, naver, damn과 같은 대규모 회사들이 사용하는 방식으로 Copy & Paste 방식이다.

 

- HTTP: pull protocol ( client가 server로부터 데이터를 땡겨옴)
- SMTP: push protocol (상대방 server에 데이터를 밀어넣음)

 

 


DNS

Domain Name System의 약자로

host이름과 IP 주소를 매핑해주는 시스템이다.

 

사람에게 더 친숙한 이름으로 internet 주소를 사용할 수 있게 해준다.

 

 

 - host name 

알파벳 기반으로 된 internet host 주소이다.

ex) uni.com, smuschool.edu, efw.kr

 

 

- DNS 구조

host이름과 매핑된 Ip주소를 제공하는 서버가 한대라면 부담이 너무 크고, host와 DNS의 거리가 너무 멀면 Ip주소를 얻는데 시간이 오래걸리는 등 다양한 문제가 발생하게 된다.

 

따라서 이를 해결 하고자 DNS는 분산형태로 데이터베이스를 운영한다.

 

DNS 구조

1. Root DNS server: 전세계 10여개가 있다.

2. Top-level Domain server : .com, .org, .kr 등을 다룬다 (국가, 기관 등)

3. authoritative DNS server: 실제 IP 주소를 회신하는 서버