Computer Networking - Networking App
Computer-Netowork-네트워크-앱
1. 네트워크 앱 작성
네트워크 앱은 각각의 엔드 시스템에서 동작
- 네트워크를 통해 통신
- 예) 웹 서버 소프트웨어가 브라우저 소프트웨어와 통신
네트워크 코어 디바이스들은 신경쓸 필요가 없다
- 네트워크 코어 디바이스들은 유저 애플리케이션을 실행하지 않음
- 오직 엔드 시스템들만 애플리케이션 레이어를 가지고 있으며, 이는 빠른 개발과 빠른 확산을 유도한다.
2. 클라이언트 - 서버 구조
서버
- 언제나 가동 중 (이여아 함)
- 영구 IP 주소
- 주로 데이터센터를 사용
클라이언트
- 서버와 통신
- 항상 네트워크에 연결되어 있진 않음
- 동적 IP를 사용하고 있을 수 있음
- 클라이언트 끼리 직접적으로 통신하지 않음 (클라이언트 - 서버 구조에서)
3. P2P 구조
- 언제나 가동중인 서버가 없음
- 대등한 엔드시스템끼리 직접적으로 통신
- 다른 피어들에게 데이터를 요청하거나 제공할 수 있음
- Self-Scalability
- 새 피어가 들어오면 그 피어는 서비스를 요구할 수 있을 뿐만 아니라 새 서비스를 제공할 수도 있음
- 피어끼리는 간헐적으로 연결되며 IP주소도 매번 바뀔 수 있다
- 유지 관리에 어려움이 있다
4. 프로세스 커뮤니테이션
프로세스
- 호스트에서 동작하고 있는 프로그램
- 같은 호스트에서, 프로세스들은 IPC (inter-process communication) 로 통신함
- 프로세스들이 서로 다른 호스트들에 있다면 메세지 (네트워크 기반) 를 통해 통신
클라이언트 프로세스
- 커뮤니테이션을 먼저 시작한 프로세스
서버 프로세스
- 클라이언트 프로세스가 연락한 것을 기다리는 프로세스
P2P에서는..
- 클라이언트 프로세스와 서버 프로세스 둘 다 가지고 있다
5. 소켓
- 프로세스는 소켓으로 메세지를 보내고 전달받는다
- 소켓은 마치 문과 같다
- Sending Process는 메세지를 문 밖에다 던져놓는다
- 이 메세지는 Transport Infrastructure를 통해 Receiving Process에 전달된다
6. 주소 Processing
- Receive 프로세스가 메세지를 받으려면 뭔가 Identifier가 필요하다
- 호스트 디바이스들은 각각 Unique한 IP 주소를 가지고 있다
- Q. 그런데 IP주소만으로 프로세스에게 메세지를 전달하기 충분해?
- 아니오. 호스트에서는 여러개의 프로세스가 동작하고 있다.
- 그렇기에 포트가 필요한 것.
- 아니오. 호스트에서는 여러개의 프로세스가 동작하고 있다.
7. App-layer Protocol defines
- 통신할 메세지의 타입
- 수신이냐, 발신이냐
- 어떤 필드가 있는지, 어떻게 필드들이 정의될 것인지 (몇 비트, 어떤 타입)
- 각 필드가 어떤 의미를 갖는가
- 메세지를 언제 어떻게 받고 전달할 것인가
8. 오픈 프로토콜
- HTTP, SMTP 등
- RFCs에 정의되어 있음
9. 사적 프로토콜
- Skype 등
10. App에게는 어떤 transport service가 필요한가
데이터 무결성
- 어떤 앱들은 데이터가 어떠한 에러도 없이 신뢰성있게 전달해야 한다.
- 파일 전송 등
- 어떤 앱들은 약간의 loss를 허용할 수도 있다
- 오디오 등
타이밍
- 어떤 앱들은 데이터가 신속하게 전달되어야 한다
- 전화, 실시간 게임 등
- 어떤 앱들은 신속한 전달이 필요없다
- 이메일 등
Throughput (한번에 전달하는 데이터 크기)
- 어떤 앱들은 예를들어 10Mbps 이상의 속도를 보장해야 한다
- 유튜브 등등의 멀티미디어, 호스팅 서비스 등
- 어떤 앱들은 속도 보장이 그다지 필요없다 (elastic)
- 이메일 등
보안
- 메세지는 수많은 컴퓨터들을 통해 이동한다
- 암호화가 중요한 transport 서비스가 될 수 있다