이 장에서는 응용 프로그램 계층에 대해 소개한다
네트워크 또는 internetwork의 목적은 사용자에게 서비스를 제공하는 것이다
로컬 사이트의 사용자는 원격 사이트의 컴퓨터에서 서비스를 받기를 원한다
이 목적을 달성하기 위해서 두 개의 프로그램을 실행한다
이것은 인터넷으로 연결된 두 대의 컴퓨터가 각각 서비스를 제공하기 위해 그리고 서비스를 요청하기 위해 각각 프로그램을 실행해야 한다는 것을 의미한다
UDP를 사용하는 서버는 일반적으로 반복적이며, 서버가 한 번에 하나의 요청을 처리한다
서버는 수신된 요청을 수신하고 요청을 처리한 후 클라이언트에 보낼 응답을 UDP에 제공한다
데이터그램은 서비스를 기다리는 큐에 저장된다
모두 한 클라이언트에서 온 것일 수도 있고 여러 클라이언트에서 온 것일 수도 있다
두 경우 모두 도착 순서대로 하나씩 처리된다
서버는 well known포트를 사용한다
이 포트에 도착하는 모든 데이터 그램은 그림에 표시된 것처럼, 서비스 대기 줄에 대기한다
TCP(또는 SCTP)를 사용하는 서버는 일반적으로 concurrent이다
connection oriented적이다
서버와 각 클라이언트 사이에 연결이 설정된다
각 연결에 포트가 필요하고 동시에 여러 연결이 열려 있을 수 있으므로 이 유형의 서버는 하나의 포트만 사용할 수 없다
서버는 하나의 잘 알려진 포트만 사용할 수 있다
클라이언트 프로세스와 서버 프로세스의 통신을 위해서
인터페이스는 두 엔티티 사이의 상호작용을 위해 설계된 instruction set이다
통신 채널을 사용하려면 응용 프로그램(클라이언트 또는 서버)이 운영 체제에 소켓 생성을 요청해야 한다
그러면 응용 프로그램은 데이터를 보내고 받기 위해 소켓에 연결할 수 있다
데이터 통신이 일어나려면 통신의 한 쪽 끝에 각각 한 쌍의 소켓이 필요하다
Family
Type
Protocol
인터페이스를 사용하는 프로토콜 정의
Local Socket Address
Remote Socket Address