network apps
- Web
- text messaging
- social networking
- multi - user network games
- streaming stored video (youtube, hulu, netflix)
- P2P file 공유
- voice over IP (Skype)
- real-time video conferencing (zoom)
- internet search
- remote login
- ...
network app 만들기
아래 프로그램들을 작성
- 다른 종단 시스템에서 동작
- 네트워크를 통해서 서로 통신
- 예) Web : 웹 서버 소프트웨어는 브라우저 소프트웨어와 소통한다.
네트워크 코어 장비에서 동작하는 소프트웨어를 만들 필요는 없음
- 네트워크 코어 장비들은 앱 계층에서 작동하지 않는다.
- 종단 시스템에서의 애플리케이션은 빠른 앱 개발과 전파를 가능하게 함
Application Architectures
- 클라이언트 - 서버
- Peer - to - peer (P2P)
- client - server와 P2P 혼합 방식
Client - Server 패러다임
일반적으로 네트워크 앱은 클라이언트와 서버로 구부된다.
서버(Server) :
- 클라이언트에게 요청된 서비스를 제공
- 서버는 항상 동작, 고정 IP를 가짐
- 예) Web 서버는 요청하는 웹 페이지를 보낸다. 메일 서버는 email을 전달한다.
클라이언트(Client) :
- 서버와 접속을 개시 ("speaks first")
- 서버로부터 서비스를 요청 (request)
- 간헐적으로 연결된다.
- 동적 IP 주소를 가진다
- Web : 브라우저가 클라이언트 역할, e-mail : 메일을 읽는 사람이 클라이언트
Pure P2P Architecture
- 항상 켜져있는 서버가 없다.
- 임의의 종단 시스템이 직접 통신함
- 피어들은 다른 피어로부터 서비스를 요청하고, 다른 피어에게 서비스를 제공
- 자체 확장성(self scalability) : 새로운 피어가 새로운 서비스 수요를 가져오는 동시에 새로운 서비스 제공 용량도 추가됨
- 피어들은 간헐적으로 연결되며 IP 주소가 변경됨
- 예시) Gnutella
- 매우 확장 가능하지만 관리하기 어려움
Hybrid of client - server and P2P
Napster
- 파일 전송은 P2P 방식
- 파일 검색은 중앙 집중식 :
- 피어들이 콘텐츠를 중앙 서버에 등록함
- 피어들이 동일한 중앙 서버에 쿼리를 보내서 콘텐츠를 찾음
인스턴트 메시징 (Instant Messaging) :
- 두 사용자가 채팅하는 것은 P2P 방식
- 접속 상태 감지 / 위치 확인은 중앙 집중식
- 사용자가 온라인 상태가 되면 자신의 IP 주소를 중앙 서버에 등록함
- 사용자가 친구의 IP 주소를 찾기 위해 중앙 서버에 연락함
스카이프(Skype)
- P2P 기반의 VoIP (Voice-over-IP) 애플리케이션
- 중앙 서버 : 원격 사용자의 주소를 찾는데 사용됨
- 클라이언트 간 연결 : 서버를 거치지 않고, 직접 연결
Processes Communicating
프로세스(process) : 호스트에서 동작하는 프로그램
- 동일 호스트 내에서 두 프로세스는 프로세스 간 통신(inter-process communication)(defined by OS)을 사용하여 통신
- 다른 호스트에서 수행되는 프로세스들은 응용 계층 프로토콜(application-layer protocol)로 통신
- 네트워크를 통한 메시지 교환으로 통신
- 클라이언트 프로세스 : 통신을 시작하는 프로세스
- 서버 프로세스 : 통신 요청을 기다리는 프로세스
- 참고 : P2P 아키텍처를 사용하는 애플리케이션에는 클라이언트 프로세스와 서버 프로세스가 모두 존재함
소켓 (Sockets)
- 프로세스는 소켓을통해 메시지를 송/수신함
- 소켓 : 호스트 내의 응용 계층과 전송 계층 사이의 인터페이스
- 애플리케이션과 네트워크 간의 API 역할
- 소켓은 문에 비유됨
- 송신 프로세스는 메시지를 문 밖으로 밀어내듯이 전송함
- 송신 프로세스는 문 밖에 있는 전송 인프라가 메시지를 수신 프로세스의 소켓으로 전달해 줄 것이라고 가정함
- 애플리케이션 개발자가 전송 계층에 대해 가지는 제어 :
- 전송 프로토콜 선택
- 몇 가지 매개변수를 설정할 수 있는 능력(예 : 버퍼, 세그먼트 크기 등
프로세스 주소 지정 (Addressing Processes)
- 프로세스가 메시지를 수신하려면, 반드시 식별자가 필요함
- 호스트는 고유한 32비트 IP 주소를 가짐
- 프로세스가 실행되는 호스트의 IP 주소만으로 프로세스를 식별하는데 충분할까?
- No, 많은 프로세스들이 동일 호스트에서 실행된다.
- 식별자는 IP 주소와 프로세스에 할당된 포트 번호를 포함
- 예시 포트 번호 :
- HTTP 서버 : 80
- Mail 서버 : 25
응용 계층 프로토콜
- 서로 다른 종단 시스템에서 수행되고 있는 응용 프로세스들이 어떻게 서로에게 메시지를 전달하는 가를 정의
- 교환되는 메시지 타입
- request & response messages
- 여러 메시지 타입의 문법(Syntax)
- 메세지의 무슨 필드가, 어떻게 구분되는지
- 필드의 의미(Semantics)
- 필드 정보 의미
- 언제 그리고 어떻게 프로세스가 메시지를 전송하고, 메시지에 응답을 하는지를 결정하는 규칙
- 공개 도메인(오픈) 프로토콜 (Public-domain protocols):
- RFC(인터넷 표준 문서)에 정의되어 있으며, 모든 사람이 프로토콜 정의에 접근할 수 있음
- 상호 운용성을 허용함
- 예시 : HTTP, SMTP
- 독점 프로토콜 (Proprietary protocols) :
- 예시 : KaZzA, Skype, Zoom
어플리케이션들은 어떤 전송 서비스를 필요로 하는가?
- 전송 프로토콜은 네트워크를 통해 메시지를 수신 프로세스까지 전달할 책임이 있음
- 어플리케이션의 서비스 요구 사항
- 데이터 손실 (Data Loss)
- 일부 애플리케이션(예 : 오디오)은 일부 데이터 손실을 허용할 수 있음
- 다른 애플리케이션(예 : 파일 전송, Telnet)은 100% 신뢰할 수 있는 데이터 전송이 필요
- 대역폭 (Bandwidth, Throughput)
- 일부 애플리케이션(예 : 멀티미디어, 인터넷 전화)은 최소한의 대역폭이 있어야 효과적임
- 다른 애플리케이션 (예 : 탄력적인 애플리케이션, 이메일, Telnet, FTP)은 사용 가능한 대역폭을 최대로 활용함
- 지연 시간(Timing)
- 일부 애플리케이션 (예 : 인터넷 전화, 인터랙티브 게임)은 낮은 지연이 있어야 효과적임)
- 보안 (Sercurity)
- 암호화, 데이터 무결성 등
- 데이터 손실 (Data Loss)
전송 서비스 요구사항

인터넷 전송 프로토콜 서비스들
TCP(Transmission Control Protocol) 서비스 :
- 연결 지향(connection-oriented) : 클라이언트와 서버 프로세스 간에 설정이 필요함
- 신뢰할 수 있는 전송 : 송신 프로세스와 수신 프로세스 간에 신뢰할 수 있는 전송 제공
- 흐름 제어(flow control) : 송신자가 수신자를 과도하게 압도하지 않도록 조절함
- 혼잡 제어(congestion control) : 네트워크가 과부할 상태일 때, 송신자를 조절함
- 제공하지 않는 것
- 타이밍(지연)
- 최소 대역폭 보장
- 보안
UDP (User Datagram Protocol) 서비스 :
- 신뢰할 수 없는 데이터 전송 : 송신 프로세스와 수신 프로세스 간에 신뢰할 수 없는 데이터 전송 제공
- 제공하지 않는 것
- 연결 설정
- 신뢰성, 흐름 제어
- 혼잡 제어
- 타이밍 또는 대역폭 보장

TCP 보안 (Securing TCP)
- TCP와 UDP
- 암호화 없음
- 명확한 텍스트 비밀번호가 소켓에 전송되면 인터넷을 통해 명확한 텍스트로 전송됨
- SSL (Secure Socket Layer) :
- 암호화된 TCP 연결 제공
- 데이터 무결성 보장
- 종단점 인증 제공
- SSL은 응용 계층에 위치함
- 애플리케이션은 SSL 라이브러리를 사용하며, 이 라이브러리는 TCP와 통신함
- SSL 소켓 API :
- 명확한 텍스트 비밀번호가 소켓에 전송되면 인터넷을 통해 암호화되어 전송됨
'Network' 카테고리의 다른 글
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 3장 전자 메일 (3) | 2024.10.11 |
|---|---|
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 2장 Web and HTTP (5) | 2024.10.11 |
| 컴퓨터 네트워킹 하향식 접근 Chapter 1, 6장 공격받는 네트워크 (0) | 2024.10.10 |
| 컴퓨터 네트워킹 하향식 접근 - Chapter 1, 5장 프로토콜 계층과 서비스 모델 (2) | 2024.10.10 |
| 컴퓨터 네트워킹 하향식 접근 - Chapter 1, 4장 패킷 교환망에서 지연과 손실 (1) | 2024.10.10 |