해당 포스팅은 한양대학교 이석복 교수님의 컴퓨터네트워크 강의를 정리한 글입니다.
http://www.kocw.net/home/search/kemView.do?kemId=1169634
1. Application
- service계층의 가장 최 끝단에 위치한 부분이다.
- 이 부분만 작성해주면 되고, 나머지 부분은 OS의 책임이다.
1) Client-server architecture
a. server
- 항상 host되어 있다.
- IP주소는 고정된 주소 값을 가져야 한다. (클라이언트측에서 항상 가능해야하기 때문에)
b. client
- 서버와 통신을 하는 주체이다.
- server와는 다르게 가변 주소여도 가능하다. (어차피 접속하는 측이기 때문에)
2) Process communicating
- process: host에서 동작하는 program
- 같은 호스트에서 여러개의 process는
inter-process communication을 통해서 서로 통신한다.
- 하지만 서로 다른 호스트끼리 통신을 한다면?
messages를 서로 공유해야한다.
- P2P 구조 애플리케이션은 서로 서비스를 가지기 때문에 client process와 server를 모두 가지게 된다.
2. Sockets (session)
- process는
socket을 통해서 서로 메시지를 주고 받는다.
- 소켓끼리 연결을 인덱싱 하는 요소
- IP주소 및 PORT
- Socket은 Application Layer와 Transport Layer 사이에 위치하고 있으며, 프로세스는 Socket이 제공하는 API나 함수를 통해 메시지를 송수신한다.

3. Web and HTTP
- web page는 objects로 구성되어 있다.
- object는 HTML file, JPEG image, Java applet, audio file 등등.. (Presentation layer)
- web page는 여러개의 referenced objects를 가지고 있는 base HTML-file로 구성되어 있다.
- 각 object는
URL로 구분 가능하다.
1) HTTP overview
HTTP: hypertext transfer protocol
- Web's application layer protocol
- 단순히 파일을 주고 받는거라 보면 된다.
- 해당 방식은 TCP를 사용하기에 TCP connection이 요구된다.

a) uses TCP:
- client는 TCP connection을 만든다.
- 서버는 TCP connection을 클라이언트에서 받은 것을 허용한다.
- 서로 메시지를 교환한다.
- TCP connection이 닫힌다.
- HTTP는
stateless하다.
- 즉, 이전에 받은 정보들을 유지하지 않는 것이다.
b) HTTP connections
- non-persistent HTTP
- 한 TCP connection에 많아도 1개의 object가 전달된다.
- 그 후 connection이 닫혀버림.
- 즉, 여러개의 object를 다운 받는 다는 것은 여러번의 connection이 필요하다는 뜻이다.
- persistent HTTP
- 여러개의 objects는 single TCP connection으로 보내질 수 있다.