9.2 应用层常见的模型
第一种是客户端/服务器模型,也就是C/S架构。比如电子邮件、web都是。
第二种是P2P模型,每个主机既可以提供服务,也可以请求服务。比如迅雷下载也是使用P2P技术的。
9.3 短链接和长链接而TCP连接有两种工作方式:短连接方式(Short-Live Connection)和长连接方式(Long-Live Connection)。
- 短连接方式:
- 当客户端有请求时,会建立一个TCP连接,接收到服务器响应后,就断开连接。下次有请求时,再建立连接,收到响应后,再断开。如此循环。这种方式主要有两个缺点:
- 建立TCP连接需要3次“握手”,拆除TCP连接需要4次“挥手”,这就需要7个数据包。如果请求和响应各占1个数据包,那么一次短连接的交互过程,有效的传输仅占2/9,这个利用率太低了。
- 主动断开TCP连接的一端,TCP状态机会进入TIME_WAIT状态。如果频繁地使用短连接方式,就有可能使客户端的机器产生大量的处于TIME_WAIT状态TCP连接。
- 长连接方式:
- 客户端和服务器建立TCP连接后,会一直使用这条连接进行数据交互,直到没有数据传输或异常断开。在空闲期间,通常会使用``心跳数据包(Keep-Alive)`保持链路不断开。目前长连接方式应用范围比较广泛。
什么是DNS说白了就是将域名转化为ip,比如www.qq.com,这是域名,可以是网络包需要对方ip地址,域名是不能加入网络包报头的,所以就需要去找一个服务器问,qq的域名对应的ip是多少。
大概的通信过程如下:
- 用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了
- 浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.baidu.com/, 并将这个主机名传送给DNS应用的客户端
- DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)
- 该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址
- 一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接
这里需要补充一个小知识,关于域名的,大概了解一下就行