[Network] Principles of network applications

seb·2023년 4월 7일
0

네트워크

목록 보기
3/9
post-thumbnail

📚 Network

ㄴ 📒 Chap.2

ㄴ 📄 Principles of network applications


📌 Client-Server architecture


client와 server 간에 데이터를 주고받는 방식으로 client는 데이터를 요청하여 받고, server는 데이터를 보낸다.

Server

  • 항상 동작하는 호스트, client의 요청을 받아들이기 위해 서버는 항상 켜져있어야 한다
  • 고정 IP 주소
  • 수많은 client의 요청을 받아들이기 위해 Data center를 통해 운용되기도 하며 이를 통해, 확장성을 갖춘다.

Client

  • 서버와의 간헐적 연결
  • 동적 IP 주소
  • Clients간의 직접 연결은 이루어지지 않는다

ex) HTTP, IMAP, FTP


📌 Peer-to-Peer architecture

Peers(end systems)끼리 직접 연결을 통해 데이터를 주고 받는다.

  • server처럼 항상 동작하지 않는다
  • 피어 (peer)는 다른 피어들에게 서비스 ‘요청’과 서비스 ‘제공’을 동시에 수행
  • self scalability (자기 확장성): 새로운 피어는 새로운 서비스를 요구하지만 새로운 서비스 용량도 제공한다
  • 피어 (peer)는 간헐적으로 연결되며 동적 IP주소를 갖는다. 새로운 IP주소가 부여되어도 link를 유지한다

ex) P2P file sharing, Skype


📌 Process communicating

Process호스트에서 안에서 동작하는 프로그램이다. 하나의 호스트에서 다수의 Process가 동작할 수 있다. 동일한 호스트의 Process끼리의 통신은 OS에서 inter-process communication를 관리한다. 서로 다른 Process끼리의 통신은 message의 교환을 통해 이루어진다.

Process는 client process, server process로 나뉘어진다.

  • client process : 통신을 시작하는 프로세스
  • server process : client의 접속을 기다리는 프로세스

P2P application은 클라이언트 역할과 서버 역할 둘 다 수행하기 때문에 client process, server process 두 가지 모두 가지고 있다.


📌 Sockets

프로세스 간의 통신은 Soket을 통해 이루어지게 된다.

Soket은 application layer와 transport layer 사이에 있는 interface이다. process에서 message를 socket을 통해 transport layer에 전달하면 message는 destination host에 도착하게 된다.


📌 Addressing processes

목적지 호스트 프로세스에서 message를 수신하기 위해서는 identifier(식별자)를 가지고 있어야 한다.

  • IP 주소
  • 포트 번호

대표적인 식별자는 32bit의 IP주소이다. 그렇다면 IP주소만 가지고 프로세스에게 전달할 수 있을까? 불가능하다. IP주소만을 가지고서는 목적지 호스트에 도달하는 것 까지만 가능하다. 같은 호스트에는 여러 프로세스가 동작하고 있기 때문에 프로세스를 구분하는 식별자가 필요하다.

이를 구분하는 식별자가 16bit의 포트번호이다. 대표적인 포트번호로는 HTTP server : 80, mail server : 25가 있다. 0 ~ 1023 까지의 포트번호는 이미 정해져 있고 나머지 번호를 사용하게 된다.

예를 들어, 민수에게 편지를 보낸다면 IP주소는 민수의 집 주소인 것이고 포트 번호는 민수네 가족들 중에서 민수를 뜻한다. IP 주소를 통해 호스트를, 포트 번호를 통해 process를 구별한다.


📌 Transport service requirement

application 마다 transport service에 요구사항이 다르다

  • Reliable data transfer (신뢰적 데이터 전송)
    ex) file transfer, web transactions

  • timing guarantee (시간 보장)
    ex) Internet telephony, interactive games

  • throughput (처리율)
    ex) multimedia

  • security (보안)
    ex) encryption, data integrity

📌 Internet transport protocols services

1. TCP service :

  • reliable transport : 신뢰적인 데이터 전송을 보장
  • flow control : 흐름 제어, 목적지 버퍼를 넘치지 않게 보낸다
  • congestion control : packet drop이 되지 않도록 라우터의 버퍼를 넘치지 않게 보낸다
  • connection-oriented : 연결지향형 client와 server가 제어정버를 교환한다

timing, mininum throughput guarantee, security는 제공하지 않는다.

2. UDP service :

  • unreliable data transport : 비신뢰적인 데이터 전송

reliability, flow control, congestion control, timing, throughput guarantee, security, or connection setup을 제공하지 않는다.

많은 것을 제공하지 않는 UDP Service를 사용하는 이유가 무엇일까?

  • 가볍다
    ex) 테스트 파일을 보내는데 연결 설정하여 flow control, congestion control 까지 할 이유가 없다

  • application에서 기능을 제작하고 느린 TCP를 사용하지 않고 UDP를 사용하는 경우


📌 Securing TCP

일반 TCP & UDP 소켓은 암호화를 시키지 않는다. 따라서, password를 TCP를 통해 보내게 되면 타인이 볼 수 있게 된다. 그래서 등장하게 된 것이 Transport Layer Security (TLS) 이다. TLS는 정보를 암호화하여 송수신하는 프로토콜이다. TLS를 사용하여 암호화된 연결을 하는 HTTP를 HTTPS이다. TLS는 app으로부터 message를 받아 소켓으로 전달한다.


🔎 [참고 문헌]

Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson


0개의 댓글