Principles of network applications
네트워크 앱 생성
end system에서 동작할 수 있게 프로그램을 구성하고 네트워크를 넘어 서로 소통한다. 예를 들면, 웹 서버 소프트웨어가 브라우저 소프트웨어와 통신하는 것과 같다. end system에서 동작하도록 프로그램을 구성하면, 네트워크 코어에서는 동작할까? 정답은 그렇다. 네트워크 코어에서는 사용자 애플리케이션으로 동작하지 않기 때문에 프로그램을 짜지 않아도 된다.
Client-Server paradigm
서버 | 클라이언트 |
항상 켜져 있고 고정된 IP 주소를 갖는다. 대부분 데이터 센터에 구축되어 있다. | 서버와 통신하며 항상 연결된 상태가 아니라서 통신할 때 켜줘야 한다. 따라서 IP 주소는 항상 바뀌고 클라이언트들과 직접적인 통신은 하지 않는다. 예를 들어, HTTP, IMAP, FTP가 있다. |
Peer-peer paradigm
항상 동작하는 서버가 없고 end system끼리 서로 통신하는 구조이다. peer들은 다른 peer들에게 서비스를 요청하고, 서비스를 제공한다. 각각은 client-server 모델의 client처럼 통신할 때 연결되고 IP 주소가 매번 바뀐다. 예를 들어 P2P 파일 쉐어링이 이에 속한다.
Processes Communication
프로세스는 호스트에서 동작하는 프로그램을 말한다. 같은 호스트 안에서, 즉 같은 컴퓨터에서 두 개의 프로세스는 내부에서 통신한다. pipe와 같은 내부 시스템 함수를 통해 통신한다고 생각하면 된다. 다른 컴퓨터에 있는 프로세스는 서로 메세지를 교환하며 통신한다.
참고로, client process와 server process는 차이가 있다. client process는 통신을 초기화하고, server process는 연결되기를 기다린다.
Sockets
서로 다른 호스트에 있는 프로세스는 소켓을 통해서 메세지를 교환한다. 전송 계층부터 물리 계층까지는 OS에 들어있기 때문에 프로토콜에 의해 communication subsystem에서 메세지를 교환할 수 있게 하는 것이다.
Addressing Processes
같은 호스트에 정말 많은 프로세스가 동작하는데, 이때 소켓은 서로 다른 프로세스를 구분해야 한다. 따라서 프로세스는 각각의 IP 주소와 Port Number을 가진다. HTTP 서버는 80번 포트, SMTP 서버는 25번 포트를 사용하기로 약속되어 있다.
응용 계층 프로토콜이 정의하는 것
이처럼 서로 다른 프로세스는 메세지를 서로 교환하며 통신한다. 이때 응용 계층과 전송 계층 사이에 있는 소켓은 이러한 메세지 교환을 가능하게 한다. 그렇다면, 응용 계층 프로토콜을 어떤 것을 정의하고 있을까?
- 메세지 종류 : request, response와 같은 메세지 타입을 정의한다.
- 메세지 문법 : 메세지의 어떤 필드가 어떻게 구분 되는지를 정의한다.
- 메세지 의미 : 각 필드에 담겨 있는 정보의 의미를 정의한다.
- 규칙 : 프로세스가 메세지를 보내고 응답할 때의 규칙을 정의한다.
- 오픈 프로토콜 : RFC에 정의되어 있으며 모든 사람들이 프로토콜 정의를 확인할 수 있다.
- 독점 프로토콜 : 외부에 공개되어 있지 않다.
응용 계층이 이용가능한 전송 계층 서비스
응용 계층은 원하는 서비스를 하위 계층에 요구하며, 전송 계층은 하위 계층에서 받아들인 서비스를 응용 계층이 원하는 형태로 바꾸어 전송하는 역할을 한다. 그렇다면, 전송 계층은 어떤 서비스를 제공할까?
먼저, data integrity(데이터 무결성)을 제공한다. 파일 전송 같은 경우 100% 신뢰성 있는 데이터 전송을 요구하기 때문에 보낸 사람의 데이터와 받은 사람의 데이터가 같은지 확인한다. 두번째는 전송 계층에서는 어느 정도 보장된 가용 처리율(Throughput)을 제공한다. 멀티미디어 같은 경우, 최소한의 throughput으로 효과적인 전송을 하도록 요구한다. 세번째는 timing이다. 지연 없이 빠른 데이터 전송을 제공한다. 마지막으로 security 서비스를 제공한다.
전송 서비스 요구 사항
앞서 언급한 것처럼, 계층 구조에서 상위 계층은 항상 서비스 유저, 하위 계층은 서비스 제공자라고 할 수 있다. 상위 계층에서 서비스를 요구하면, 하위 계층에서는 요구에 맞게 서비스를 제공해야 한다. 전송 계층에서는 네트워크 계층이 제공하는 서비스(best-effort)를 응용 계층에서 요구하는 서비스로 변환해 제공한다.
인터넷 전송 프로토콜 서비스
TCP 서비스
- 신뢰성 있는 전송
- 흐름 제어
- 혼잡 제어
- timing, 최소 처리율 보장, 보안은 제공하지 않는다.
- connection-oriented(연결 지향) : 물리적인 망은 connecitionless 이지만, 전송 계층에서는 logical connection을 만들어서 마치 connection이 있는 것처럼 만들어 준다.
UDP 서비스
- 비신뢰성 전송
- 신뢰성, 흐름 제어, 혼잡 제어, timing, 최소 처리율, 보안, 연결 설정은 보장하지 않는다.
TCP에 비해서 UDP는 제공하지 않는 것이 많다. 그럼에도 UDP를 사용하는 이유가 뭘까? 단순히 응용 계층에서 요구하기 때문이다. 데이터의 내용보다는 처리 속도를 우선시하는 경우에, UDP를 사용한다. 예를 들어, 비디오 스트리밍 같은 경우, 데이터가 약간 손실이 되더라고 실시간으로 데이터를 제공해야 하기 때문에 처리 속도가 빨라야 한다.
'CS > 네트워크' 카테고리의 다른 글
[컴퓨터망] 2. Application Layer(E-mail, SMTP, IMAP, DNS) (0) | 2024.04.13 |
---|---|
[컴퓨터망] 2. Application Layer(Web과 HTTP) (0) | 2024.04.13 |
[데이터통신] 2. Physical Layer(멀티플렉싱, 전송 매체) (0) | 2024.04.06 |
[데이터통신] 2. Physical Layer(디지털 전송, 아날로그 전송) (1) | 2024.04.06 |
[데이터통신] 2. Physical Layer(신호, 신호의 왜곡) (0) | 2024.04.06 |