Application Layer는 프로토콜 스택에서 가장 상위 계층이다.
Application layer는 eny system 들에게 여러 가지 서비스를 제공받거나 받는 부분을 책임진다.
즉, 이메일, 파일전송, 웹 서핑 등과 같은 서비스를 제공하고 제공받기 위해서 어떤 형식으로 메시지를 주고받아야 하는지의 프로토콜이 ㅁ여있는 계층이라고 생각하면 편합니다.
Application Layer는 두가지 구조가 있습니다.
Client - Server 구조와 P2P 구조가 있습니다.
Client - Server 구조
컴퓨터와 컴퓨터가 통신하는 구조. 클라이언트가 요청하면 서버가 응답하는 방식.
Client
- 서비스를 제공받는(요청하는) 호스트
- ex) 데스크톱 , 스마트폰, 노트북, 태블릿
Server
- 서비스를 제공해주는 호스트
- ex) 데이터베이스, 웹 애플리케이션 서버, 파일 서버
장점
- 서버가 모든 접근과 데이터를 관리하기 때문에 보안상 우수하며 안전.
단점
- 한 번에 많은 클라이언트가 요청을 하면 오류가 발생할 수 도 있음.
- 서비스 제공자 관점에서 설치 및 유지 관리 비용이 많이 들어감.
P2P(Peer to Peer architecture)
정해진 클라이언트, 서버가 없이 모든 컴퓨터가 서로 데이터를 주고받을 수 있는 네트워크 구조.
이때 각 컴퓨터를 노드(Node) 또는 피어(Peer)라고 부른다.
즉 모든 컴퓨터가 클라이언트, 서버의 역할을 수행할 수 있다.
Clinet-Server와 P2P 의 차이
P2P는 탈중앙화된 네트워크, 클라이언트-서버 네트워크는 중앙화된 네트워크.
P2P는 모든 컴퓨터가 clinet-server, 클라이언트는 역할이 구분되어 있다.
Sockets
TCP / IP 프로토콜 스택에서는 5계층이 존재한다.
그중 하위 4개 계층(Physical, Link, Network, Transport)은 모두 운영체제에 구현되어 있고, 개발자들은 신경 쓰지 않아도 되는 부분이다. 따라서 하위 4개 계층에서는 개발자가 특별히 패킷을 생성해 줄 필요 없이 자동으로 패킷들이 생성되어 전송된다.
애플리케이션에서는 패킷이 자동으로 생성, 전달되지 않아서, 애플리케이션에서 생성되는 메시지를 전달해 주는 과정이 필요하다.
이러한 과정에서 Socket을 활용한다.
Socket은 Application Layer와 Transport Layer 사이에 위치하고 있으며, 프로세스는 Socket이 제공하는 API나 함수를 통해 메시지를 송수신한다.
Process <- > Process를 하기 위해서는 주소가 필요하다.
각 host 들은 32 - bit 고유 주소를 가지고 있다.
이 고유주소는 특정 호스트를 식별할 뿐, 호스트 내의 프로세스를 특정하지는 않는다.
그러면 우리는 프로세스를 어떻게 식별할까요?
프로세스를 식별하기 위해서 우리는 Port number를 활용해야 합니다.
Port number는 동일 IP 주소 내에서 특정 프로세스를 식별하는 데 사용됩니다.
대표적으로 HTTP Server는 80번 Port를 사용하고, Mail Server는 25번 Port를 사용한다.
각 Port number 별로 담당하는 프로세스가 정해져있다! 라고 생각하시면 편하겠습니다.
Host Identifier = IP Adderss , Port number로 구성되어 있습니다.
IP Address를 통해서 Host를 특정하고, Port number를 통해서 호스트 내 프로세스를 특정해 줍니다!
Application Layer Protocol defines
Application Layer 프로토콜들의 규정에 대해서 알아보자
📗types of message exchange
기본적으로 메시지를 요청(Request)하거나 응답(Response)하는 방식으로 동작한다.
📗Message syntax
메시지의 어느 필드가 어떻게 기술되어야 하는지, 각자의 필드는 어떻게 구분되는지
📗Message semantics
메시지의 각각의 필드에 담긴 정보들에 대한 의미
📗Rules
언제 어떻게 프로세스들이 요청하고 응답해야 하는지
Application Layer에서 Transport Layer에게 요구하는 요소
💡Data Integrity : (무결성)
- 특정 앱(file transfer, web transactions)은 데이터 전송에 100% 신뢰성을 보장해야 한다.
- 특정 앱(audio)은 data loss가 가능하다.
💡Timing : (타이밍)
- 특정 앱(internets , telephony, interactive games)들은 낮은 delay에서도 효과적으로 동작해야 한다!
💡Throughput : (처리량)
- 특정 앱(multimedia)은 효율적인 최소 처리량을 요구한다
- 특정 앱(elastic)은 그들이 얻는 처리량을 이용한다!
💡Security
- encryption
Internet transport protocol services
TCP
📕reliable transport (신뢰성 있는 전송)
송 수신 프로세스 간의 신뢰성을 보장
📕flow control
송 수신 프로세스 간의 데이터 처리 속도를 컨트롤함.
📕congetsion control
수신 프로세스를 컨트롤한다. 수신 쪽 네트워크의 부담이 커질 경우
📕does not provide
timing, minimum throughpt, 보안을 제공하지 않음.
📕connection- oriented
클라이언트와 서버 프로세스 간의 set-up이 필요하다.
UDP
📕unreliable data transfer
송 수신 프로세스 간의 신뢰성을 보장하지 못함
보내는 데이터와 받는 데이터가 일치 안 할 수도 있음.
그저 보내기만 하면 UDP의 역할은 끝!
📕does not provide
신뢰성, flow control, congetsion control, timing, throughput guarantee, security, connection set up
을 제공하지 않음.
Securing TCP
TCP & UDP sockets
- 어떠한 보안도 제공하지 않는다.
- 패스워드를 원문으로 소캣에 보내면 인터넷에 원문상태로 돌아다닌다.
- 검색될 수도 있고, 가로채질 가능성도 있다.
따라서 TLS ( Transport Layer Security)가 등장했다.
TLS의 3가지 요소
- 암호화
- 제삼자로부터 전송되는 데이터를 숨긴다.
- 인증 : 정보를 교환하는 당사자가 요청된 당사자임을 보장해 준다.
- 무결성 : 데이터가 위조되거나, 변조되지 않았는지 확인한다.
- 제삼자의 개입으로 데이터가 바뀌었는가! 를 검증
😃요약
- Application Layer에는 2가지 구조가 있다.
- Clinet - Server / Peer - Peer
- 각각의 장단점이 있지만 추세는 Clinet - Server로 기울어 가는 중
- 클라이언트-서버 구조는 역할이 정해져 있다.(클라이언트, 서버)
P2P 구조는 역할이 정해져 있지 않고, 모두가 그 역할을 수행할 수 있다.
- Host를 식별하기 위해서는 IP주소가 있지만, Host 내에 Process를 식별하기 위해서 Port 번호가 있다.
- 따라서 Host Identifier는 IP Address, Port number가 있다.
- Port number를 통해서 어떤 프로세스에 패킷이 할당될지 알 수 있음.
- 인터넷 전송 프로토콜 서비스에는 UDP, TCP 두 방식이 있다.
- TCP는 신뢰성이 보장(송 수신 데이터가 일치) , UDP는 신뢰성을 보장하지 않고, 데이터를 보내는 작업을 중시함.
- 각각의 장단점이 있고, 쓰임도 분명함.
'Computer Science > Network' 카테고리의 다른 글
[컴퓨터망] - 쿠키와 웹 캐시 (0) | 2023.04.11 |
---|---|
[컴퓨터망] - Web and HTTP (0) | 2023.04.09 |
[컴퓨터망] - Protocol stack (0) | 2023.04.08 |
[컴퓨터망] - Circuit Switching vs Packet Switching (0) | 2023.04.07 |
[컴퓨터망]- 네트워크 구성(Network Edge/Core, Access net work) (0) | 2023.04.07 |