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

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

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

网络应用程序体系结构

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

  • Client/Server,即客户机/服务器体系结构,该体系结构包含一个始终运行着提供服务的服务器,以及分布在各个用户那里的客户机
  • P2P,该体系结构很少依赖服务器,主要利用网络中互相平等的主机提供服务,著名的Skype、BT均便是该体系结构

我们可以做什么?

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

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

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

TCP提供了

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

UDP提供了

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

HTTP

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

HTTP请求报文格式

计算机网络知识持续构建(二)——应用层_第1张图片
http_request.png

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

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

HTTP响应报文格式

计算机网络知识持续构建(二)——应用层_第2张图片
http_response.png

一些常见的响应码

  • 200 ok 请求成功
  • 301 moved permanently 请求的对象已经被永久转移了
  • 400 bad request 一个通用差错代码,该请求服务器无法理解
  • 404 not found 被请求的文档不在服务器
  • 500 server error 服务器错误
  • 505 http version is not supported 当前http版本不被支持

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

你可能感兴趣的:(计算机网络知识持续构建(二)——应用层)