socket: application-transport layer 사이의 인터페이스
=> application layer는 socket의 옵션 선택을 통해 transport layer의 여러 서비스들을 이용할 수 있다.
1. 신뢰적 데이터 전송
2. 처리율 (bandwidth)
3. 처리 시간
4. 보안
ㄴㄴ. 예를 들어, 인터넷 전화같은 application은 통화가 지속되는 동안 꾸준히 일정 이상의 속도가 보장되어야 원활한 통화가 가능하다. 이러한 경우는 처리율을 보장한 것이다. 그러나 실시간 온라인 게임같은 경우는 데이터를 전송할 때 특정 시간 이내에 전송이 완료되는 것을 보장해야 한다.(물론 게임은 처리율보장도 필요하다) 속도를 꾸준히 어느정도 이상을 유지해야 하는 건 맞지만, 처리율과는 다소 결이 다르다.
애플리케이션 | 데이터 손실 | 처리율(bandwidth) | 시간 민감성 |
---|---|---|---|
파일 전송 | 비손실 | 가변적 | 아니요 |
전자메일 | 비손실 | 가변적 | 아니요 |
웹문서 | 비손실 | 가변적(수kbs) | 아니요 |
인터넷전화/화상회의 | 손실 허용 | 오디오: 수 kbps-1 Mbps 비디오: 10 kbps-5 Mbps | 예:수 초 |
상호작용 게임 | 손실 허용 | 수 kbps~10 kbps | 예: 수 100msec |
스마트폰 메시징 | 비손실 | 가변적 | yes or no |
TCP | UDP |
---|---|
연결형(handshake) | 비연결형 |
신뢰적 전송 | 비신뢰적 전송 |
혼잡제어 O | 혼잡제어 X |
보안 제공 X | 보안 제공 X |
현재 인터넷은 100% 보장을 해줄 수는 없지만, 대부분의 경우에선 만족스러울 수준으로 제공할 수 있다.
네트워크가 혼잡한 경우에는 제공하지 못할 수도 있지만, 웬만하면 된다는 뜻임
그래서, 이 애플리케이션 프로토콜은 어떤 메시지를 주고받는가?
application protocol은 중요하지만, 결국 application의 한 요소에 불과하다.