[Network] Layer5
application layer의 특징
- protocol stack의 가장 위에 존재한다.
- 사용자가 직접 접하는 protocol 이다.
- socket을 통해서 transport layer 와 통신한다.
- socket : 프로세스와 네트워크 사이의 인터페이스이다. (IP + Port로 식별)
- application layer가 존재하는 end system 끼리 소통한다.
transport layer에서 application layer에 제공하는 서비스
신뢰적 데이터 전송
- 보장된 데이터 전송 서비스를 제공하는 것을 의미한다.
처리율
- 어느 명시된 속도에서 보장된 가용 처리율을 제공하는 것을 의미한다.
시간
- 데이터 전송에 엄격한 시간 제한 조건이 있고 이 시간안에 전송되는 것을 보장하는 것을 의미한다.
보안
- 하나 이상의 보안 서비스를 제공한다.
- 송신 프로세스가 보내는 모든 데이터를 암호화해서 보내고 수신 프로세스가 받기 전에 암호를 해독한다.
TCP와 UDP
TCP
- 연결지향형 서비스를 제공한다.
- 신뢰적인 데이터 전송 서비스를 제공한다.
UDP
- 비연결형 서비스이다.
- handshake 과정없이 바로 데이터를 송신한다.
- 속도가 빠르다.
HTTP protocol
특징
- web을 실현해주는 전송 프로토콜이다.
- Web browser, Web Server 두 개의 프로그램으로 구성된다.
- Client : 필요할 때마다 필요한 것을 서버에 요구한다.
- Server : 단순히 client 의 요구에 대해 응답만 한다.
- stateless protocol 이다.
비지속 연결과 지속 연결
비지속 연결
(Non-persistent Connection)- 각 요구/응답 쌍이 분리된 TCP 연결을 통해서 전송된다.
- server에서 TCP 연결 관리에 대한 부담이 상대적으로 크다.
지속 연결
(Persistent Connection)- 모든 요구와 해당하는 응답들이 같은 TCP 연결 상으로 전송된다.
- 일정 시간동안 TCP 연결을 사용하지 않으면 release 한다.
HTTP 메시지
Request
- request line : Method, URL, HTTP version
- header lines : host, persistent 여부, user-agent, 기타 옵션들
- body : 부가적으로 server에 보낼 정보
Response
- status line : protocl version, status code, status message
- header lines : persistent 여부, 전송날짜, 서버 프로그램, 생성날짜, 길이, 내용 등등
- body : data, object, html …
Cookies
- HTTP에게 state를 가지게 해준다.
- backend database : Web site측에서 복잡한 state를 관리할 수 있게 해준다.
- 과정
- Server에서 client에게 response를 줄 때, Cookie를 헤더에 포함해서 준다. 이때 Server db에 Cookie를 저장한다.
- Client는 헤더에서 Cookie를 추출해서 저장하고 다음 Request 부터 헤더에 Cookie를 포함해서 보낸다.
- Server는 Request의 Cookie를 확인하고 어떤 Client의 요청인지 식별할 수 있다. (state)
Web Caching
- proxy server(Web cache)
- web server를 대신해서 http response msg를 전달한다.
- 자신의 disk에 최근 request 받은 object를 복제해서 저장한다.
- Server이면서 동시에 Client이다.
- 복제본이 없으면 proxy server는 원래 server로 요청을 한다.
- 특징
- 일반적으로 ISP에 설치된다.
- 직접 server에 요청하는 것보다 시간이 적게 걸린다.
SMTP Protocol
특징
- Mail server간 mail을 주고받기 위한 protocol 이다.
- Mail server는 SMTP를 통해 TCP 연결을 하고 상대방 mail server에게 직접적으로 Mail을 전송한다.
- TCP port는 25 사용
과정
- User agent → Client Mail server → Server Mail server → User agent2
- 여기서 서버는 Client, Server 둘 다 될 수 있다.
DNS
특징
- host name과 Internet 상에서의 숫자 상의 주소(IP address)를 mapping 해주는 시스템이다.
- host name : 알파벳 기반의 Internet host 주소
- ex) cs-study.com, network.net, youtube.co.kr
- 국가와 기관, 성격을 유추할 수 있다.
- 사람에게 더 친숙한 이름으로 Internet 주소를 사용할 수 있게 해준다.
구조
- hostname - IP address에 대한 mapping data를 보관하고 있다.
- 분산구조 형태로 database가 운영된다.
- 하나의 DNS server에 모든 mapping data를 가지는 centralized 구조에서는 문제가 많다.
- single point of failure : DNS에 장애가 발생하면 전체 Internet이 다운된다.
- traffic volume : 모든 host가 DNS에 한 번에 접근하면 서버에 부담이 많이 가게된다.
- 하나의 DNS server에 모든 mapping data를 가지는 centralized 구조에서는 문제가 많다.
- 이런 이유들로 DNS는 계층 구조를 가지게 됐다.
- 3 Layer
- Root DNS server : 전 세계 10여개 존재
- top-level domain DNS server (TLD) : com, org, uk, fr 등 유명한 것들
- authoritative DNS servers : 실제 IP 주소 회신
- Local DNS Server
- 각 기관별로 하나씩 보유하고 있다.
- 최초의 subnet 내에서 접속하는 DNS server이다.
- 우선 여기에 query를 하고 없으면 Root → TLD, Authoritative DNS server를 거쳐서 mapping 정보를 가져온 후 응답한다.
CDN (Contents Distribution Network)
배경
비디오와 같은 스트리밍 서비스가 network load의 주 원인이 되고 있고 네트워크상에서 Client와 Server사이의 거리가 일반적으로 크기 때문에 여러 ISP를 거치는 경우가 많다. 그런데 ISP의 용량이 적으면 bottlenect이 발생한다. 이러한 이유로 일반적으로 스트리밍 서비스는 여러 대의 server를 분산적으로 두고 서비스를 제공한다. 이를 CDN이라고 한다.
CDN 구축의 두 가지 원칙
- Enter deep : 각 ISP network 내에 설치
- CDN 서버 사이의 링크 라우터 개수가 줄어들기 때문에 속도가 빠르지만 그만큼 많이 설치해야 하기 때문에 비용이 많이 발생한다.
- Bring home : ISP 주변에 전용 회선으로 연결해서 설치
- 중요 지점에만 CDN을 설치함으로써 비용을 줄일 수 있다. 하지만 반대로 거리가 늘어나기 때문에 속도는 느려진다.