[CS]/[컴퓨터네트워크]

애플리케이션계층1 - 사용자계층 네트워크애플리케이션종류

broship 2021. 2. 16. 15:22

※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다.

출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다.

 


 

계층 구조


통신이란 결국 서버와 클라이언트 어플리케이션 계층의 프로세스끼리의 통신이다

- 우리가 웹서핑할때 어플리케이션 계층끼리의 통신만 보지만 사실 서버와 클라이언트 각 엣지의 계층 구도를 지나고 라우터를 통해서 데이터가 송수신됨

- 각 엣지는 이렇게 모든 계층을 가지고 있어서 모든 중심 기능을 다 엣지가 처리

- 그에 비해 라우터는 네트워크 계층까지만 있음, 패킷을 받아서 전달하는 기본적인 기능만 수행

 

ps. 여기서 서버란?

- 서비스를 제공하는 컴퓨터

- 24시간 가동되야됨

- 영구적인 IP 주소를 가져야됨

 

 


Application 계층


process sends/receives messages to/from its socket

- 어플리케이션 계층에는 다양한 프로세스들이 존재함

- OS가 다른 컴퓨터 프로세스와의 통신을 위한 인터페이스를 내부에 만들어 놓음

- 그 인터페이스를 소켓이라고 함(프로세스의 문(door)과 같은 역활)

- 통신을 할때는 상대방 어플리케이션 계층의 프로세스의 소켓을 찾아가야됨

- 이 소켓의 주소에 해당하는게 IP주소와 포트번호

- IP주소는 해당 컴퓨터를 찾아가는 역활

- 포트번호는 한 컴퓨터 내에서 많은 프로세스중 원하는 프로세스를 찾아가는 역활

예시로

평상시 많이 찾는 네이버도 www.naver.com  이런 형식이 아닌 IP주소+포트번호 이렇게 찾아가야됨

DNS를 통해서 도메인이 IP주소로 변환되는 것임

(웹서버는 전부 80번 포트를 사용하고 있음, 네이버,다음,구글,아마존 등등등 통일적으로 찾아가기 위함)

 

 

 

 

Application layer와 tranport layer의 상관관계

- 하위계층은 상위계층에게 어떠한 기능을 만들어주기 위해 존재

- 어플리케이션 계층이 전송계층에게 원하는기능들:

1. Data Integrity: 내가 보내는 데이터가 유실되지 않고 온전하게 목적지까지 도달했으면

2. Timing: 내가 보내는 데이터가 예정된 시간 이내에 도착했으면

3. Throughput: 내가 보내는 데이터의 처리율(데이터 용량)이 충분했으면

4. Secutiry: 내가 보내는 데이터가 안전했으면

 

하지만 전송계층이 제공하는건 딱 하나, Data Integrity(TCP 프로토콜)

나머지 제공 안해주는 것들은 어플리케이션 계층에서 알아서 만들어야됨, 예시로 우리는 어플리케이션 계층에서 보안 프로그램을 따로 다운받아서 사용

 

 

어플리케이션 계층 주요 프로토콜

application application layer protocal underlying transport protocol
e-mail SMTP[RFC 2821] TCP
remote terminal access Telnet[RFC 854] TCP
Web HTTP[RFC 2616] TCP
file transfer FTP[RFC 959] TCP
streaming multimedia HTTP(e.g., Youtube),
RTP[RFC 1889]
TCP or UDP
Internet telephony SIP, RTP, proprietary
(e.g., Skype)
TCP or UDP

 

 

 

 

HTTP 프로토콜


- Hypertext tranfer protocol: 하이퍼 텍스트를 전달하는 프로토콜

하이퍼텍스트란?

쉽게말해 다른 파일들이 링크되어 있는 텍스트

더보기

사용자에게 내용의 비순차적 검색이 가능하도록 제공되는 텍스트. 문서 내의 특정한 단어가 다른 단어나 데이터베이스와 링크되어 있어 사용자가 관련 문서를 넘나들며 원하는 정보를 얻을 수 있음. 전자 사전·멀티미디어 데이터베이스·문장 작성 시스템 등에 응용됨.

- 출처: Oxford Languages

 

- http 프로토콜이란 이러한 하이퍼 텍스트를 client가 요청하면(request) server가 받아서 해당 텍스트를 응답(response)해주는 간단한 프로토콜

- HTTP 프로토콜은 stateless함(상태가 없다라는 뜻) http는 정말 단순해서 요청 들어오면 디스크에서 읽어서 보내는 역활만 담당, 그외 어떠한 작업 (예를들면 상대방의 상태나 전달된 메세지 기록등)도 하지 않음

 

 

- 이러한 http 프로토콜은 전송계층에서 TCP 프로토콜을 사용함, 그래서 request, response가 있기 이전에 먼저 TCP 커넥션을 생성해야됨(나중에 자세히 배움)

 

- http가 TCP 커넥션을 사용하는 방식에 따라 2가지로 분류됨

1. non-persistent http 지속적이지 않음

2. persistent http 지속적임

예를 들어 clinet가 server에 링크된 이미지 파일이 10개인 index.html 파일을 요청 할때, index.html에 대한 request, response과 각각 이미지 파일들에 대한 request, response이 필요한데 이때

한번의 request, response마다 tcp 커넥션을 끊으면 다시 생성하면 non-persistent

커넥션을 끊지 않으면 persistent(이게 default로 사용된다고 함)