- 网络应用是网络存在的理由,如果不是网络应用间通信的需求,也不会有计算机网络。
- 应用进程仅在端系统上部署,所以网络应用的部署与开发很快
- 同时,网络的核心仅需完成一个最低限度的通信要求即可。
- 这样让网络的核心设计简单,稳定,且易用。
应用层原理:
- 进程间通信的模型:
- C/S
- P2P —- 自拓展性好,解决了C/S资源都在服务器的缺点。缺点是管理难。
- 进程与计算机网络通过
socket API
进行交互。TCP socket
是一个四元组{sIP:SPort,dIP:dPort,stat,...}
,通过调用API,os
返回一个描述符,用来表示这种四元组的关系。UDP socket
保存着一个二元组{sIP:SPort}
,来描述本主机上的一个应用进程。 在发送报文时,需要指明对方的{dIP,dPort}
。
- 不同计算机不同的表示与寻址问题:通过
**IP:Port**
来表示一台特定计算机的特定进程。 - 应用层协议规定了应用进程如何相互传递报文:
- 交换的报文类型:请求报文和响应报文。
- 报文类型的语法:如报文中的各个字段及这些字段是如何描述的。
- 字段的格式:字段的语义,即这些字段中的信息的含义。
- 时序:确定一个进程何时以及如何发送报文,对报文进行响应的规则。
Internet
提供的传输服务:根据应用是否需要可靠的,吞吐量的要求,速度的要求,与安全性的要求。选择合适的传输服务。TCP
:- 面向连接的;
- 可靠的;
- 流量/拥塞控制;
- 通信代价大。
UDP
:- 速度快;
- 实现简单;
并没有提供安全性的选项,需要的话需要添加
SSL(secure sockets layor)
。
TODOList
- Web and HTTP
- Email and SMTP
- FTP
- DNS
- CDN
- TCP socket
-
Q&A
为什么要提供UDP?
UDP存在的必要性
能够区分不同的进程,而IP服务不能
- 在IP提供的主机到主机端到端功能的基础上,区分了主机的应用进程
- 无需建立连接,省去了建立连接时间,适合事务性的应用
- 不做可靠性的工作,例如检错重发。适合那些对实时性要求比较高而对正确性要求不高的应用。
- 因为为了实现可靠性(准确性、保序等),必须付出时间代价(检错重发)。没有拥塞控制和流量控制,应用能够按照设定的速度发送数据。而在TCP上面的应用,应用发送数据的速度和主机向网络发送的实际速度是不一致的,因为有流量控制和拥塞控制。