2022. 2. 6. 18:25ㆍMajor`/컴퓨터 네트워크
Application Architecture
클라이언트 - 서버 구조 (Client - Server)
▶ 서버 (Server)
- 항상 켜져있는 Host :: 항상 인터넷에 연결되어 있다
- 고정 IP 주소
- Client가 많은 경우, 데이터 센터 형식으로 확장
▶ 클라이언트 (Client)
- 반드시 서버와 통신을 해야 한다 :: 클라이언트끼리 통신 X
- 유동 IP 주소 :: 인터넷에 연결될 때마다 변경 가능
- 인터넷에 연결되고 끊김을 반복한다
P2P 구조 (Peer to Peer)
Peer : Communication 하는 User의 호스트
- 하나의 Peer는 다른 Peer에게 서비스를 제공하기도 하고 서비스를 요청하기도 한다
- 높은 자기 확장성(Self-Scalability)
- 서버가 없고 Peer들끼리 알아서 통신을 한다
- Peer는 Request + Service Capability 둘다 보유
- Peer들은 일반적인 User의 호스트이기 때문에
- 인터넷에 연결되고 끊김을 반복 + 유동 IP주소 보유
- 관리가 어렵다
프로세스? (Client & Server)
클라이언트 프로세스
- 통신을 초기화하는 프로세스 (접속 초기화)
서버 프로세스
- Client Process의 접근을 기다리는 프로세스
클라이언트-서버 구조
- 클라이언트 : 클라이언트 프로세스 보유
- 서버 : 서버 프로세스 보유
P2P 구조
- Peer : 클라이언트 프로세스/서버 프로세스 둘다 가지고 있을 수도 있고 둘 중에 하나만 가지고 있을 수도 있다
소켓 (Socket)
Layer 1 ~ 4 : OS가 제어
Layer 5(Application) : App Developer가 제어
- Application Layer : 교환할 메시지를 생성
- 해당 메시지를 Transport Layer에게 전달해달라고 부탁한다
- 이떄 Application ↔ Transport 간에 교환을 위한 door가 존재한다
- 해당 door : 소켓(Socket)
- 해당 메시지의 최종 목적지 = 프로세스
- 목적지는 IP주소(host 구분) + 포트번호(프로세스 구분)를 통해서 식별할 수 있다
Application-Layer가 필요로 하는 Transport-Layer의 서비스
(1) 데이터 무결성
- Data의 손실이 없는 보장된 Data 전송 서비스
(2) 시간 보장
- 특정 시간 내에 모든 Data를 전송하는 서비스
- 온라인게임 / 화상전화
(3) 처리율
- 최소한의 처리율
- ex) 롤 프레임 30ms/10ms :: 10ms를 선호
(4) 보안
- Application에게 하나 이상의 보안 서비스를 제공
- 송신 프로세스의 Data를 암호화
- 암호화된 Data를 해독해서 수신 프로세스에게 전달
Transport-Layer가 제공하는 서비스
TCP
(1) 연결지향형 서비스
- 서로 지속적인 통신을 통해서 Data의 신뢰성을 확보한다
- 프로세스들 간에 3-way handshake를 통해서 연결 확립
- Data 송수신
- 4-way handshake를 통해서 연결 종료
(2) 신뢰적 Data 전송
- 송수신 프로세스 간에 Data의 손실이 없이 올바른 순서로 Data를 전달
(3) 흐름 제어 (Flow Control)
- 송신 프로세스가 수신 프로세스의 Data 수신 속도에 맞춰서 송신
(4) 혼잡 제어 (Congestion Control)
- Network가 Congestion 상태에 이르면 프로세스의 전송 속도를 알아서 낮춘다
※ 제공하지 않는 서비스
- 시간 보장
- 최소 처리율 보장
- 보안
UDP
- 비연결형이기 때문에 두 프로세스가 통신 전에 hanshake를 하지 않는다
- 비신뢰적인 Data 전송 서비스 제공
- Only 실시간 Application의 전송속도만을 위해 최선을 다한다
- 혼잡 제어/패킷 오버헤드를 걱정할 필요가 없다
※ 제공하지 않는 서비스
- 혼잡 제어
- 흐름 제어
- 시간 보장
- 최소 처리율 보장
- 보안