dream

一个菜鸟程序员的成长历程

0%

计算机网络原理-自顶向下二

应用层

应用层协议原理

两种架构

  • C/S 客户-服务器架构
  • P2P 对等架构

P2P的自扩展性:尽管每个对等方都请求文件产生工作量,但每个对等方也向其他对等方分发文件增加系统服务能力。

未来P2P面临的三大挑战:

  • ISP友好。
    大多数ISP都是下载比上传快。但是P2P加大了上传流量,给ISP带来了压力。需要设计对ISP友好的P2P。
  • 安全性。
    因为高度分布和开放特性。给安全带来了挑战。
  • 激励
    未来P2P的成功也取决于说服用户自愿向应用提供带宽,存储和计算资源。这对激励设计带来挑战。

进程通信

实际通信的是计算机上面的进程。
通过IP地址确定一个主机。通过端口号确定一个进程。
计算机提供了一套socket套接字。

使用的运输层服务

看几个方面:

  • 可靠数据传输
  • 吞吐量 带宽敏感
  • 时延
  • 安全

因特网提供的运输服务

TCP

  • 建立连接
  • 可靠数据传输
  • 流量控制
  • 拥塞控制

UDP

轻量级,全部由应用层实现

应用层协议

  • 交换的报文类型, 例如请求报文和响应报文
  • 各种报文类型的语法,如报文的各个字段及这些字段是如何描述的。
  • 字段的语义,这些字段中包含的信息的含义。
  • 一个进程何时以及如何发送报文,对报文进行响应的规则。

Web和HTTP

HTTP的RFC文档

  • RFC 1945
  • RFC 2616

报文格式

请求报文

  • 请求行
  • 首部行
  • 空行
  • 请求体

响应报文

  • 状态行
  • 首部行
  • 响应体

HTTP本身是无状态的,通过cookie可以实现身份记录。

cookie技术有4个组件

  • HTTP响应报文中的一个cookie首部行
  • HTTP请求报文中的一个cookie首部行
  • 用户端系统有一个cookie文件
  • WEB站点的一个后端数据库

WEB缓存

WEB缓存器也叫代理服务器,它是能代表初始WEB服务器来满足HTTP请求的实体。WEB缓存服务器有自己的磁盘空间,保存最近请求过的对象的副本。

CDN就是一种WEB缓存。

条件GET方法

尽管高速缓存能快速响应,但是存储的副本可能是陈旧的,过期的。

HTTP协议有一种机制,允许缓存器证实它是最新的。这种机制就是条件GET方法

  • 请求报文使用GET方法
  • 请求报文中包含一个“if-Modified-Since”首部行,内容是上次服务器返回的最新修改时间

WEB服务器会检查如果没有修改就返回一个304状态码,缓存就知道还是最新的。

文件传输FTP

HTTP和FTP都是文件传输协议。(RFC959)

一些重要的区别,最显著的是FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接

控制连接用于在俩主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及存放获取文件的命令。

数据连接用于实际发送一个文件。

因为FTP使用一个独立的控制连接,所以我们也称FTP的控制信息是带外传送的。

FTP首先在21端口建立一个控制连接
FTP的客户端通过控制连接发送用户标识和口令,命令。
FTP的服务端收到传输文件的命令后,建立数据连接用来传输文件。
每个数据连接传输一个文件后关闭。

FTP命令和回答

命令和回答都是以7比特的ASCII格式在控制连接上发送的。为了区分连续的命令,每个命令后跟回车换行符。

  • USER username: 用于向服务器发送用户标识
  • PASS password: 用于向服务器发送用户口令
  • LIST :用于请求服务器回送当前远程目录中的所有文件列表。该文件列表是一个数据连接发送的。
  • RETR filename: 用于从远程主机当前目录检索文件。该命令引起远程主机发起数据连接传输该文件到本地客户端。
  • STOR filename: 用于在远程主机当前目录存放文件。就是往远程主机传输文件。

一些典型回答:

  • 331 Username OK, Password required(用户名Ok,需要口令)
  • 125 Data connection already open: transfer starting (数据连接已经打开,开始传送)
  • 425 Can’t open data connection (无法打开数据连接)
  • 452 Error Writing File (写文件出错)

电子邮件

邮件有三部分

  • 用户代理
  • 邮件服务器
  • 简单邮件传输协议

发送邮件过程

  • 发送方的用户代理 到 发送方的邮件服务器
  • 发送方的邮件服务器 到 接收方的邮件服务器
  • 接收方的邮件服务器 到 接收方的用户代理邮箱

SMTP

RFC 5321 给出了SMTP的定义。SMTP使用TCP协议。只能传输7比特的ASCII表示。

发送过程:

  • 客户端建立连接
  • S:220 hamburger.edu
  • C:HELO crepes.fr
  • S:250 Hello crepes.fr,pleased to meet you
  • C:MAIL FROM: alice@crepes.fr
  • S:250 alice@crepes.fr … sender ok
  • C:RCPT TO: bob@humburger.edu
  • S:250 bob@humburger.edu …. Recipient ok
  • C:DATA
  • S:354 Enter mail, end with “.” on a line by itself
  • C:Do you like ketchup?
  • C:How about you pickets?
  • C:.
  • S:250 Message accepted for delivery
  • C:QUIT
  • S:221 hamburger.edu closeing connection

和HTTP对比

HTTP 是一个拉协议,从服务器拉取数据。
SMTP 是一个推协议,往服务器推送邮件。

HTTP 可以任意表示
SMTP 只能7比特ASCII表示。

HTTP 每个对象一个响应
SMTP 一个邮件多个对象

SMTP典型的首部报文

FROM:
TO:
Subject:

获取邮件协议

POP3 和 IMAP

POP3

pop3分为3个阶段

  • 特许:用户代理发送用户名和口令(明文)
  • 事务处理:用户代理取回报文,做删除报文的标记,取消删除标记,获取邮件的统计信息。
  • 更新阶段:发生在客户端QUIT指令后,结束会话,删除那些标记的报文。

特许阶段有两个主要命令

  • user
  • pass

事务处理阶段有4个主要命令

  • list 列出邮件列表
  • retr id 读取邮件内容
  • delete 删除邮件
  • quit 退出

IMAP

imap比pop3更加复杂,增加了远程文件夹功能。imap支持用户读取报文的一部分,比如只读取首部,或多部分MIME的一部分。当宽度低的时候非常有用。

DNS

DNS使用UDP协议。

DNS完成域名和ip地址的转换。

域名分为

  • 根DNS服务器
  • 顶级DNS服务器 com,org,edu,cn
  • 权威DNS服务器

请求

迭代请求

  • 请求根服务器
  • 根服务器返回
  • 请求顶级服务器
  • 顶级服务器返回
  • 请求权威
  • 权威返回

递归请求

  • 请求根
  • 根请求顶级
  • 顶级请求权威
  • 权威返回顶级
  • 顶级返回根
  • 根返回

TCP套接字

遵守RFC协议文档的应用程序是“开放”的。不遵循RFC文档中的协议的应用程序是“专用”的。

UDP套接字