- 网络通信中,进行通信的是进程而不是程序
- 程序员能够控制套接字在应用层的行为,但是对于其在运输层的行为控制很少
- 例如选择运输层协议和控制缓存等
- UDP流量常常被防火墙组织,所有有时不得不选择TCP协议
- 应用层有许多私有协议,如Skype选用了专用的应用层协议通信
HTTP协议
-
使用80端口,HTTPS使用443端口
-
HTTP协议不用去关注数据丢失和恢复,这些都全交给底下的TCP协议
-
HTTP协议是无状态的,他不记得上次通信
-
使用了TCP协议的非持续链接的HTTP要花费很大一部分时间在TCP三次握手上
-
HTTP的数据由CR和LF分割(\r ,\n)
-
可以把用户购物车中的数据保存在cookie中
-
删除cookie只要再发送一次cookie,并把过期时间设为一个过去的时间
-
Web缓存
- 可以大大减少响应时间,特别是客户和初始服务器质之间的带宽瓶颈远小于和缓存服务器之间的带宽
- 可以减少整个机构到互联网的通信量
- 可以从整体上减少互联网上的流量
-
CDN(内容分发网络)
- 地理上分散的缓存服务器
P2P协议
- 普通的文件分发方式是一个服务器分发给所有用户
- 服务器必须重复发送相同的数据给不同用户
- 分发时间随用户数量线性增加
- P2P分发则是每个用户都会在下载的同时上载自己已经接受到的部分数据
- 在分发的开始,只有服务器具有文件
- 服务器已经发送过的数据很多时候不必再次发送,客户会相互发送
- 为了避免有些人只下载不上载,协议要求用户总是上载给发送给自己数据最多的几个人
电子邮件协议
-
SMTP协议
- 使用25端口
- 用户代理推送到邮件服务器以及服务器之间推送的协议
- 限制报文的主体只能由7位ASCII编码组成
- 二进制多媒体数据必须先编码为ASCII码再解码
- 每个报文由 . 结束(实际上是CRLF.CRLF)
- 没有认证机制,FROM命令可以任意伪造发信人,导致垃圾邮件
-
无论远近,邮件只会从源服务器直接传递到目标服务器,不会保留在中间服务器
- 目标服务器必须一直在线以接受数据,所以不能放在用户主机上
-
IMAP协议
- 从接受方的服务器发送到接收方的用户代理的协议