计算机网络应用层学习总结
网络应用程序体系结构:
- 客户端/服务端体系结构(C/S结构)
- 特点:客户机之间不互相通信;服务器具有固定的、周知的地址即IP地址
- 注:在C/S结构里,如果只有一台服务器来处理所有请求,那么很快会变得不堪重负。因此常用主机群集(有时称为服务器场)创建强大的虚拟服务器。
- 对等(P2P)结构
- 特点:每个接入的客户机相对于其他人来说又是服务器,称作对等。P2P体系结构最突出特性之一是自扩展性。
- 代表:BitTorrent、文件搜索共享、因特网电话
进程通信
不同端系统上的进程通过跨越计算机网络交换报文而相互通信
进程与计算机网络之间通过套接字进行通信。套接字是同一台主机内应用层与运输层之间的接口。
对应用程序使用的运输服务的评判
a. 可靠数据传输:如TCP是可靠的,UDP是不可靠的
b. 吞吐量:发送进程能够向接收进程交付比特的速率
在吞吐量问题中,应有又分为吞吐量敏感应用即程序运行对吞吐量有一定的要求,以及弹性应用,能够根据需要充分利用可供的吞吐量。
c. 定时:如可以设置发送方注入进套接字中的每比特到达接收方的套接字不迟于100ms
d. 安全性
因特网提供的两种运输服务(运输层协议)
a. TCP服务
- 面向连接的传输层协议
- 每个TCP连接只有两个端点:端点={IP:端口号}
- 可靠传输
- 流量控制、拥塞控制 b. UDP服务
- 无连接的传输层协议
- 传输速度快,尽最大努力交付,没有拥塞控制
- 首部信息开销小,仅需要8个字节,而TCP则需要20个。分别为源端口号、目的端口号、长度、校验和
应用层协议
a.Web应用和HTTP协议
-
HTTP概括:
HTTP协议即超文本传输协议,是Web的核心(现今开始使用https,只是在http上面增添了ssl,参考[3])。HTTP使用的是TCP协议,并且归功于分层体系结构,因此HTTP协议不用担心数据丢失,也不用担心TCP是如何从网络的数据丢失和乱序故障中恢复的。此外,服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。因此我们说HTTP是一个无状态协议(所以,我们很多的跟踪操作必须得借助cookie)。
-
非持久连接和持久连接:
当C/S的交互用于运行于TCP协议之上时,应用程序研发这需要确定每个请求/响应是经过一个单独的TCP连接发送还是所有的请求以及相应都经过相同的连接发送。前者,使用非持久连接后者使用持久连接。HTTP可以是用两种,但是默认情况下是使用持久连接。若是非持久,那么三次握手后,服务器把文件发送给client便断开连接。持久连接下,一个连接如果长时间未使用,HTTP服务器就把该连接关闭。
-
HTTP的三次握手:
首先客户端发送一个小的报文(不是请求)给服务器(第一次),服务器收到发回一个确认和响应并建立TCP连接(第二次),客户端收到响应,再向服务器发送请求(第三次)。至此,三次握手结束。最后服务器发回相应(客户端想要的文件)
-
HTTP请求报文格式:
```
GET /somedir/page.html HTTP/1.1 //请求字段,URL字段,HTTP协议字段
Host:www.someschool.edu //主机域名
Connection:close //是否使用持久连接
User-agent: Mozilla/4.0 //用户代理,即浏览器类型
Accept-language: fr //用户想得到该对象的法语版本
```
- HTTP响应报文格式:
HTTP/1.1 200 OK //状态行
Connection: close //告诉客户机发送玩关闭该连接
Date:Thu ,03 Jul 2003 12:00:14 GMT //服务器产生发送报文的时间和日期
Server:Apache /1.3.0 (Unix) //主机类型
Last-Modified: Sun , 6 May 2007 09:23:25 GMT //最后修改的时间,用于网络缓存服务器上对象
Content-Length: 6812 //被发送对象的字节数
Content-Type: text/html //被发送对象的类型
- 常见的HTTP状态码
- 200 OK:请求成功,信息包含在返回的响应报文中。
- 301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location 首部行中指定。客户机可自动用新的URL获取该对象。
- 400 Bad Repuest:一个通用差错代码,指示该请求不能被服务器所理解。
- 404 Not Found:被请求的文档不在服务器上。
- 505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本。
-
Web缓存:
Web缓存器也叫做代理服务器。它可以大大地减少对客户机的响应时间,并且可以大大减少一个机构内部网与因特网接入链路上的通信量。
-
原理:
看一个过程,假如说我的浏览器正在请求对象www.somewhere.com/abc.jpg将会发生如下事件:
-
浏览器建立一个到Web缓存器的TCP连接,并向Web缓存器发送一个http请求。
-
Web缓存器检查本地是否存在该文件,如果有直接发回HTTP响应报文返回该对象,如果没有,则向目标主机索取该文件,收到该文件后先把该文件存储在本缓存器上,再返回给主机。
注:这里要怎么保证缓存器发给主机的每个主机是最新的呢?使用请求方法为GET,请求报文中包含一个If-modified-since首部行,当客户机再次要求该文件时,Web缓存器会向目标主机查询到Last-Modified(最后修改时间)对比即可以查看该文件是否已经被修改过了。
-
b.文件传输协议:FTP
-
HTTP和FTP的区别:
-
FTP使用两个并行的TCP连接来传输文件,一个是控制连接一个是数据连接。21是连接时使用的端口号;20是数据发送使用的端口
-
控制连接用于两个主机之间传输控制信息。像这种使用一个分离的控制连接我们称之为带内传送。相应的HTTP我们称之为带外传送。
-
对FTP而言,控制连接贯穿整个用户会话期间而数据连接对于每一个文件传输都需要建立一条新的。并且FTP服务器必须在整个会话期间保留用户的状态,相比之下HTTP则是无状态的。
-
因特网中的电子邮件
a. 主要组成
主要由三部分组成:用户代理、邮件服务器、简单邮件传输协议
b. SMTP协议(发送邮件)
- SMTP是因特网电子邮件应用的核心。但是它依然具备有很多『陈旧』的特征表明它仍然是一种遗留的技术。例如它限制所有邮件报文的主体部分只能采用简单的ASCII码表示。
- SMTP工作流程
用户代理A 发送到 A的邮件服务器 A的服务器用SMTP协议发送到 B的服务器 发送到 用户代理B
SMTP 架起了A的服务器和B的服务器发送的流程(是一种推协议)。
c. SMTP协议和HTTP协议的比较
1. HTTP是拉协议,SMTP是推协议
2. SMTP要求每个报文都使用7位ASCII码
3. 处理一个既包含文本又包含图形的文档不同。HTTP直接把所有对象封装在自己报文,而SMTP把所有的对象封装在一个报文。
d.邮件访问协议(读取邮件:POP3,IMAP)
- SMTP 是推协议。因此当邮件由A发送给B的代理服务器时,B的用户代理并不能通过SMTP来从其对应的服务器取回邮件。所以得借助 POP3/IMAP/基于Web的电子邮件这类拉协议来取回。
-
邮件转发的原理:
-
首先用户是用用户代理(user agent,通常是outlook/apple mail再或者现在很多基于Web的邮箱如QQ邮箱)要发送一封邮件。
-
那么用户代理就会去找它对应的邮箱的所有服务器(SMTP服务器),找到了服务器。这个服务器检查邮件的目的地服务器地址(SMTP服务器)。然后建立TCP连接。如果对方的服务器开启着,就将该报文发送,否则在本地队列中每个一段时间(通常是半小时)再重新发送。
-
对方的服务器通过SMTP协议收到了来自(客户机)SMTP服务器发来的邮件。注意:SMTP是推协议,即只能把信息往外推的,而目标用户代理需要的是拉取信息,所以需要的是拉协议,所以SMTP在这里就不再适用了。
-
所以这里,我们使用的通常是POP3/IMAP等协议来拉回信息到目标用户代理。
-
-
POP3相比IMAP更加简单。但是IMAP更加的强大。区别在于(引自腾讯邮箱的介绍)
-
POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMAP就不同了,电子邮件客户端的操作都会反馈到服务器上,您对邮件进行的操作(如:移动邮件、标记已读等),服务器上的邮件也会做相应的动作。也就是说,IMAP是“双向”的。
-
同时,IMAP可以只下载邮件的主题,只有当您真正需要的时候,才会下载邮件的所有内容。
-
说白了,POP不会留下东西在服务器,而IMAP允许服务器与本地操作同步。
-
DNS:因特网的目录服务
主要服务
DNS域名系统可以把主机名(www.xxx.yy)转化为对应IP的机制。
除此之外还有一些重要的服务:
其他服务
1. 主机别名
所以有的网站有多个域名。如www.jingdong.com 和 www.jd.com
2.邮件服务器别名
@hotmail.com 后缀并非真正主机名而是主机别名
3.负载分配
用于在冗余的服务器之间进行负载分配。
DNS工作机制概述
首先是层次机构,最上层是根DNS服务器,然后是顶级域名服务器(com,org等),最后是权威DNS服务器(yahoo.com等)
先在客户端上请求主机(如cis.poly.edu) 经由本地DNS服务器(dns.poly.edu)分别与根DNS服务器,TLD DNS服务器 ,权威服务器(dns.cs.umass.edu)交互后得到目的主机IP。如图:
DNS缓存
和Web缓存一样,设置一个DNS缓存可以很大程度加快获取目标的速度
P2P应用
-
P2P文件分发(双向,可扩展性)
-
BitTorrent
在P2P文件共享中,搭免费车是一个常见的问题,这是指对等方从共享系统中下载文件而不上载文件。BitTorrent的对换算法有效的消除了这种免费搭车问题。即上载速度越快的人能获得越快的下载速度。
-
在P2P区域中搜索信息
1.集中式索引:利用一台服务器存储索引
2.查询洪泛
3.层次覆盖(在查询洪泛基础上)
参考:
- http://www.zhuangjingyang.com/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E5%B1%82%E7%9F%A5%E8%AF%86%E6%80%BB%E7%BB%93.html
- http://zhenhua-lee.github.io/tech/network.html
- http://blog.163.com/magicc_love/blog/static/185853662201321423527263/