1.Fundamentals of Network Application
The core of creating a network app
- 다른 end-system에서 동작
- 네트워크를 통해 서로 통신하는 프로그램을 작성하는 것
라우터나 링크 계층 스위치와 같이 네트워크 코어 장비에서 실행되는 소프트웨어 걱정 X
2.Application Architectures
Different from Network structure
애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지 지시
1. Client-Server 구조
Server
- 항상 켜져있는 host
- 고정 IP주소
- 많은 수 의 host를 갖춘 Data Center가 강력한 가상의 서버를 생성한다
Client
- 클라이언트 끼리 서로 직접적인 통신을 하지 않는다
- 서버가 항상 열려있으므로 패킷을 보내 항상 서버에 연결 가능
- 동적 IP주소를 가질 수 있다
2. P2P 구조
- 서버가 항상 켜져있지 않다(항상 켜져있는 기반구조 서버에 최소로 의존 or 의존 X)
- Peer 라는 간헐적으로 연결된 host 쌍이 서로 직접 통신(end-system 끼리 통신)
- 특정 서버를 통하지 않음
- Self-scalability(자가확장성)
- 파일을 다른 peer에게 분배함으로써 시스템에 서비스 능력을 추가
3.Processes communiating(프로세스 간 통신)
Process - 종단 시스템(end-system,host)에서 실행되는 프로그램
- 같은 종단 시스템에서 프로세스가 실행될 때 프로세스 간에 통신
- 통신을 위한 규칙은 OS에서 규정
- 2개의 다른 host에서는 네트워크를 통한 message교환으로 통신
Client Process & Server Process
ex) Web - browser = client process
- webserver = server process
Client - 두 프로세스 간의 통신 세션에서 통신을 초기화하는 프로세스
Server - 세션을 시작하기 위해 접속을 기다리는 프로세스
Interface between Process & Computer Network
Socket
프로세스는 socket을 통해 네트워크로 메세지를 보내고 받음
프로세스가 집이면 socket은 출입구로 비유 한다
프로세스가 다른 호스트의 프로세스로 메세지를 보내고 싶으면 socket 바깥 네트워크로 메세지를 밀어낸다.
Socket은 호스트의 application layer와 transport layer 간의 interface이다
API(Application Programming Interface)라고도 한다.

Adressing Process
host에서 다른 host로 packet을 보내기 위해서는 수신 프로세스가 주소를 갖고 있을 필요가 있다.
수신 프로세스를 식별하기 위해 2가지 정보가 명시되어야 한다
- Address of host (IP Address(32bit))
- Identifier that specify recieve process in destination host(목적지 호스트 내의 수신 프로세스를 명시하는 식별자)
Identifier
-IP address
-Port Number (Mail-25, webserver-80)
Application layer Protocol
Application layer protocol은 다른 end system에서 실행되는 애플리케이션의 프로세스가 서로 메세지를 보내는 방법을 정의한다.
- 교환 메세지 타입(type of messages exchanged) - request, response
- 메세지 타입의 문법(message syntax) - 메세지 내부의 field와 field 간의 구별 방법
- 필드의 의미(message semantics)
- 언제, 어떻게 프로세스가 메세지를 전송하고 메세지에 응답하는지 결정하는 규칙
- 브라우저 개발자가 HTTP RFC의 규칙을 따른다면 open protocol로 이 규칙을 따른 어떠한 웹 서버로부터 페이지를 가져올 수 있다
- 독점 프로토콜(proprietary protocols) 을 사용하면 공중 도메인에서 구할 수 없다. ex) Skype
Transport Service
송신 측의 application은 socket을 통해 메세지를 보낸다.
socket의 반대편에서 Transport protocol은 네트워크를 통해 그 메세지를 수신 프로세스의 socket으로 이동시킨다
Transport layer protocol이 application들에게 제공할 수 있는 Service는
1. Data Integrity
Packet은 라우터의 버퍼에서 overflow되거나 bit가 잘못되면 Loss 가 생길 수 있다.
But Loss가 생기지 않도록 보장된 데이터 전송 서비스를 제공한다면 이를 Data integrity가 보장된다고 할 수 있다.
데이터를 socket으로 보내고 오류 없이 수신 프로세스에 도착한다
만일 transport layer protocol이 신뢰적 데이터 전송을 제공하지 않았을 때 데이터가 제대로 도착하지 않을 수 있다.
- 손실 허용 애플리케이션(loss-tolerant application)의 경우에서는 받아들일 수 있다. (실시간 스트리밍)
2. Throughput
두 프로세스 간의 통신 세션에서 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율
Troughput Service를 제공한다는 것은 명시된 속도에서 보장된 가용 처리율을 보장한다는 것
R = r bps(bits/sec) -> 적어도 r bps 보장
대역폭 민감 애플리케이션(bandwith-sensitive application)에서 요구됨
but 융통성 있는 애플리케이션(elastic application)에서는 대역폭을 크게 신경 쓰지 않음
3. Timing
시간 보장 - ex) 모든 비트가 수신자의 socket에 N msec 안에 도착하도록
실시간 애플리케이션에 매력적
4. Security
송신 프로세스가 전송하는 모든 데이터를 암호화할 수 있고 수신 호스트에서 트랜스포트 프로토콜은 데이터를 수신 프로세스로 전달하기 전에 데이터의 암호를 해독할 수 있다.
다양한 네트워크 애플리케이션의 요구사항

TCP (Transmission Control Protocol)

UDP (User Datagram Protocol)
























