일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BindingResult
- DTO
- application layer
- 커밋 되돌리기
- compgen
- @SubscribeMapping
- 무한정 대기
- JPA
- 은행원알고리즘
- 기본키 전략
- 백준
- 알고리즘
- 티스토리챌린지
- intelij spring config
- API
- 런타임 상수
- spring
- allocationSize
- 프로그래머스
- 쉘 스크립트
- 쿠키
- 오블완
- 파이썬
- @Autowired
- Git
- JDBC
- m:n
- 편향된 지수
- 컴파일 타임 상수
- 리눅스
- Today
- Total
둘셋 개발!
[네트워크] Application layer 1 (Http, Cookies, Web Caching, FTP, SMTP, DNS) 본문
Application layer
protocol stack의 가장 위에 존재하고
사용자가 직접 접하는 프로토콜 이다.
(출처: https://blog.naver.com/netrance/110112688107)
- socket을 통해 바로 밑에 있는 trasport layer와 소통
여기서 socket이란, process와 network사이의 인터페이스로,
process 입장에서 network로 나가는 문과 같은 존재이다.
HTTP
HyperText Transfer Protocol의 약자로
web에서 데이터를 전송할 수 있는 프로토콜이다.
여기서 hyperText란,
단순한 text 차원을 넘어선 문서로, 네트워크를 통해 다른 문서로 접근할 수 있다.
- TCP 연결을 기반으로 동작한다
TCP의 port는 80이므로 port는 80번 이다.
- 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
❶ 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
❶ 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 내용을 가지고 있다.
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는 분산형태로 데이터베이스를 운영한다.
1. Root DNS server: 전세계 10여개가 있다.
2. Top-level Domain server : .com, .org, .kr 등을 다룬다 (국가, 기관 등)
3. authoritative DNS server: 실제 IP 주소를 회신하는 서버
'네트워크' 카테고리의 다른 글
[네트워크] Application Layer 2 (multimedia traffic, Streaming, CDN, RTP, SIP, QOS, Best-Effort Network) (0) | 2022.06.13 |
---|---|
[네트워크] L4 Transport Layer (0) | 2022.06.07 |
[네트워크] Protocol Function 2 (0) | 2022.06.03 |
[네트워크] Protocol Functions 1 (0) | 2022.06.03 |
[네트워크] Protocol의 뜻, 구조, 모델 (0) | 2022.05.17 |