여러가지 프로토콜에 대한 사용자 인터페이스를 제공한다. 사용자와 응용 프로그램 사이에 데이터 교환을 가능하게 하는 계츠이다. HTTP, FTP, 메일 프로그램 등을 제공한다.
client-server 구조로 서버와 클라이언트가 통신하는 구조이다.
server
항상 켜져있고 고정 IP 사용
client
단점: Peers(clients)끼리 연결할 때마다 IP 주소가 바뀌기 때문에 이것을 관리하기 복잡하다.
HTTP 프로토콜은 응용 계층 프로토콜로 TCP/IP 위에서 동작한다.
HTTP 리소스는 Uniform Resource Locators(URLs)를 통해 네트워크 상에서 위치가 정의되며, 해당 URL를 표현하기 위해 Uniform Resource Identifiers (URI's)를 사용하여 표현한다.
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
HTTP는 Client에서 request를 보낸 후 Server에서 response가 오면 현재 연결을 끊는 connection less 방식으로 동작한다. 따라서 수백만명이 접속하는 웹서비스 형태로 접속이 최소한으로 유지되어도 문제가 없는 응용 소프트웨어에 적합한 구조이다.
그러나 Client의 이전 상태에 대해 알 수 없기 때문에 HTTP 프로토콜로 웹서비스를 구현할 때 Cookie 또는 web form 안의 hidden variables를 통해 이러한 문제를 해결하고 있다.
인터넷을 사용할 때 IP 주소를 외워서 접속하는 경우는 거의 없다. 이를 위해 도메인이 사용된다.
DNS는 사람이 기억하기 쉽게 문자로 만들어진 도메인을 숫자로 된 IP 주소로 바꿔주는 시스템이다. 이를 위해 DNS 서버가 사용되는데 DNS 서버에는 IP 주소와 도메인이 저장되어 있다.
www.naver.com을 치면 바로 네이버에 접속하는 것이 아니라, DNS 서버를 한 번 거치게 된다.