공부기록
Application Layer 본문
Application Layer?
- OSI 계층들과 응용 프로그램을 인터페이스 한다.
- 응용 계층의 프로토콜들은 다음을 정의한다.
- 교환되는 메세지의 유형 (request, response message)
- syntax : 다양한 메세지 유형들의 문법
- 메세지 안에 있는 필드와 그 필드들이 어떻게 표현되는지
- symentic : 필드들의 의미
- 필드의 정보들이 무엇을 의미하는가
- timing : 언제 그리고 어떻게 프로세스가 메세지를 보내고 메세지에 반응하는지
Web and HTTP
- 개요
- 웹페이지는 오브젝트들로 구성되어 있다.
- 오브젝트들은 HTML, JPEG, JAVA applet, audio file,... 등등이 될 수 있다.
- 각 오브젝트는 URL에 의해 참조될 수 있다.
- URL (Uniform Resource Locator) : 웹 리소스에 대한 참조이다.
- 웹페이지는 오브젝트들로 구성되어 있다.
- HTTP (Hypertext Transfer Protocol)
- Web의 application layer protocol이다.
- 인터넷에서 하이퍼 텍스트 문서를 주고 받을 수 있는 통신 규약
- client/server 구조를 가진다.
- client
- 웹 오브젝트를 보여주고, 요청하고, 응답받는 브라우저를 말한다.
- server
- 요청(http request)에 대해 오브젝트를 보내주어 반응하는 (http response) 웹 서버를 말한다.
- client
- TCP를 사용한다.
- "stateless"하다.
- 서버는 지난 클라이언트에 대한 정보를 가지지 않는다.
- "stateful"하는 것은 복잡한다.
- 이전 정보를 저장해야함
- 만약 서버 또는 클라이언트에 오류가 나면 state는 일관성있지 못하게 되어 복구되거나 수정되어야한다.
- "stateful"하는 것은 복잡한다.
- 따라서 많은 요청을 처리하는데 유용하다.
- 서버는 지난 클라이언트에 대한 정보를 가지지 않는다.
- HTTP 연결에는 non persistent와 persistent가 있다.
- non-persistent
- 한 번의 TCP 연결에 하나의 오브젝트만 수신된다.
- persistent
- 한 번의 TCP 연결에 여러개의 오브젝트가 수신될 수 있다.
- non-persistent
- HTTP Massages
- Request Messages
- 구조
- request line : method, url, version
- header lines : header name : value (여러 개의 key : value set)
- Entity body
- POST
- entity body에 데이터가 들어간다.
- body 데이터가 외부로 들어나지 않는다.
- GET
- 데이터가 URL 필드에 들어가게 된다.
- 따라서 모든 데이터가 들어나게 된다.
- Method types
- GET
- 데이터를 가져온다.
- POST
- 데이터를 담아 생성 요청
- 요청 시마다 새로운 데이터를 생성한다.
- PUT
- 데이터 변경 요청
- 요청 시 마다 같은 리소스를 반환한다. (멱등성)
- DELETE
- 데이터 삭제 요청
- GET
- 구조
- Response Messages
- 구조
- status line (protocol, status code, status phrase)
- header lines
- data
- 구조
- Cookie
- 쿠키는 stateless한 http 프로토콜에서 sateful하기 위해 사용된다.
- cookie header line of http response message
- cookie header line in http request message
- cookie file kept on user's host, manasged by user's browser
- back-end database at website
- 쿠키를 통해 할 수 있는 것
- 인증
- 정보 저장
- 유저 세션 정보
- 어떻게 state를 유지하는가
- http 메세지가 state를 전송하여, 클라이언트에 저장한다.
- 쿠키는 stateless한 http 프로토콜에서 sateful하기 위해 사용된다.
- Request Messages
DNS
Domain Name System?
분산된 데이터베이스
많은 네임서버들의 계층적 구조로 구현되어 있다.
Application-layer protocol
호스트, 라우터들, 네임 서버들이 이름을 찾기 위해 통신한다. 이름을 찾는 것은 호스트네임을 IP주소로 바꾸는 것을 말한다.
DNS가 제공하는 서비스들
호스트네임을 IP로 바꾸어 준다.
여러 개의 호스트 네임을 같은 IP 주소로 이어준다. (Canonical, alias names)
부하를 분산시킨다.
DNS서버가 분산된 이유
한 곳이 오류가 터지면 모두 사용할 수 없다.
한 곳에서 모든 트래픽을 처리할 수 없다.
데이터베이스의 거리가 멀어진다.
유지보수하는데도 용이하지 않다.
'CS > Network' 카테고리의 다른 글
REST, REST API (0) | 2021.05.26 |
---|---|
웹의 동작원리 (0) | 2021.05.26 |
Link Layer (0) | 2021.05.26 |
Network Layer (0) | 2021.05.25 |
Transport Layer (0) | 2021.05.25 |