程序员

计算机网络知识持续构建(二)——应用层

2016-10-09  本文已影响95人  liufxlucky365

网络应用是计算机网络存在的的理由,所以上至TCP/IP协议栈,下至双绞铜线和光纤,都是为实现网络应用提供各种服务

但是由于良好的分层模型,我们码农在应用层尽情发挥想象力的时候,除了关注应用之间的数据交互外,其他的对我们基本是透明的,大大降低了复杂度

网络应用程序体系结构

应用层常见的程序体系机构有两种

我们可以做什么?

码农在开发网络应用时只需要关注应用层的协议,更底层的我们一般能够做的只是

  1. 选择运输层协议,TCP?UDP?
  2. 设定几个运输层的参数,最大缓存、最大报文长度等

关于运输层协议的选择,首先要知道的是两种协议为我们提供了什么服务?

TCP提供了

  1. 面向连接的服务,即在数据交互之前要先建立一个虚拟的‘连接’,这个连接是全双工
  2. 可靠数据传输服务,可靠是指能够保证数据有序、完整的传输
  3. 拥塞控制服务,这可能对单个应用好处不大,但却能够提供整个互联网的性能
  4. 未提供加密服务,如果需要可以使用安全套接字实现SSL

UDP提供了

  1. 是一个轻量级的协议,不需要建立连接
  2. 不可靠的数据传输服务,不可靠是指不保证数据能付完整、有序的传输
  3. 也没有拥塞控制

HTTP

超文本传输协议(HyperText Transfer Protocol),它是web的核心。使用TCP作为它的支撑运输层协议。是一个无状态协议

HTTP请求报文格式

http_request.png

请求报文第一行是请求行(request line),后续为首部行(header line)

请求行中请求方法一般为POST、GET、PUT、DELETE,协议版本类似HTTP/1.1

HTTP响应报文格式

http_response.png

一些常见的响应码

DNS

DNS(域名系统)的主要作用是提供主机名到IP地址的转换服务,由一个分布式的DNS数据库和查询该数据库的协议组成,基于UDP协议。DNS同时也可以提供负载均衡服务。

DNS分布式、层次数据库

  1. 根DNS服务器 因特网上有13个根服务器,其中大部分在北美。实际上每台服务器都是冗余的,为了提供安全性和可靠性
  2. 顶级域(TLD)服务器 这些服务器负责顶级域名(com、org、net、edu)和所有国家的顶级域名(uk、fr、ca等)
  3. 权威DNS服务器 网络上具有公共可访问主机的组织和公司必须提供公共课访问的DNS记录

P2P

P2P是除了服务器-客户端之外另一种重要的网络体系,是在网络中互相对等的两个终端之间进行通信,常见的应用为文件分发,即著名的BitTorrent协议;另一种是在对等方中组织并搜索信息;第三种是Skype,一个成功的P2P因特网电话应用。

BitTorrent

BT下载的主要原理是充分利用加入分发的各终端的网络上载流量,因为一般情况下,终端的下载流量会远远大于上载。简单来说,就是各终端均匀的下载文件的各个部分,然后再在临近的终端之间互相交换数据,既减轻服务器下载压力,又能提供终端的下载速度,实现了下载的人越多,下载速度越快的“变态”下载

上一篇下一篇

猜你喜欢

热点阅读