网络运输服务
TCP服务
提供两种服务:面向连接的服务和可靠数据传输服务。
面向连接的服务,先握手告诉双方准备进行大量数据交换,是全双工的就是说双方进程都可以进行报文收发。
可靠数据传输服务,发送的字节流和接受的字节流相同,没有丢失和冗余。
同时也提供拥塞机制,出现拥塞就抑制发送方发送,和限制每个TCP连接,公平共享网络带宽。
SSL服务(加强版TCP)
Secure Sockets Layer,安全套接字层。这是加强版的TCP服务,不是一种全新的运输层服务,TCP服务传输的数据未经加密,不安全。SSL对TCP进行了封装,底层依旧是TCP,但是在应用层增加了数据加密、数据完整性和端点鉴别等功能,再有TCP进行传送。
UDP服务
不提供不必要服务的轻量级传输协议,无连接,没有握手过程,不可靠数据传送服务,报文可能乱序。没用拥塞机制
不提供的服务
应用层协议
application-layer protocol,定义了运行在不同端系统的应用程序如何互相传递报文。定义了:
交换报文的类型,例如请求报文和响应报文。
报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
字段的语义,即这些字段中包含的信息的含义。
一个进程何时以及如何发送报文,对报文进行响应的规则。
有些应用层协议由RFC文档定义,这些协议位于公共域,比如HTTP(超文本传输协议,RFC 2616),定义了浏览器和web服务器之间传输报文格式和序列。
应用层协议是网络应用的核心。
Web和HTTP
万维网(world wide web),是一个web应用。
HTTP是web的应用层协议,定义web客户端和web服务器之间如何进行报文传送。
1、HTTP
Hyper Transmission Text Protocol,超文本传输协议,在RFC 2616和RFC 1945中定义。
HTTP思想:
点击查看【processon】
URL:主机名 + object路径名。
HTTP以TCP作为运输层协议支撑,而不是UDP。
HTTP是无状态协议stateless protocol,即服务器不会保存用户信息,如果用户重复请求,服务器每次都会响应。
2、非持续连接和持续连接
一个客户端和服务器之间,每个请求-响应对是否都在一个TCP连接上。
是,则是持续连接,persistent connection。
否,则是非持续连接,non-persistent connection。
3、HTTP报文格式
HTTP请求报文
典型例子:浏览器请求www.someschool.edu/somedir/page.html页面。
点击查看【processon】
下面是请求报文的通用格式,sp是空格space,cr是回车,lf是换行。
实体体entity body,存储可能带有的请求参数,比如google搜索网页,通过POST方法请求,输入的内容就存储在实体体中,GET请求时,实体体为空。
HTTP响应报文
典型例子,上条请求报文的响应。
点击查看【processon】
和请求报文的主要差别在于第一行(请求航和状态行的差别)。
4、用户与服务器的交互:cookie
作用
HTTP是无状态连接,服务端无法跟踪客户端信息,cookie会给每个客户端产生一个唯一识别码,这个识别码帮助服务端识别和跟踪客户端。
cookie技术4个组件
1、请求报文中的cookie首部行
2、响应报文中的cookie首部行
3、客户端保留并管理一个cookie文件
4、web服务器上的后台数据库
机制
假设susan总是从家中PC访问IE上网,首次与Amazon.com联系,在这之前他访问过eBay站点,当请求到达Amazon Web服务器时,web服务器产生一个唯一识别码1678,并以此作为索引在后台数据库产生一个表项,接下来web服务器用一个set-cookie:1678首部行的HTTP响应报文对Susan的浏览器进行响应,浏览器收到响应后,在其管理的cookie文件中添加一行:服务器主机名 + 识别码,此时该文件中含有eBay的表项。
susan继续访问Amazon网站时,每请求一个Web页面,浏览器都会从cookie文件中获取该网站的识别码,并放到http请求报文中的首部行:Cookie:1678。注意只有请求报文中的cookie首字母大写。
5、Web缓存
Web缓存器(Web cache),代理服务器(proxy server)。存储最近访问过的对象的副本。通过设置浏览器可以使用所有http请求首先重定向到web缓存器。通常由ISP购买提供。
通过使用CDN(content distribution network内容分发网络),就使用到了Web缓存器。
6、条件GET方法
GET /fruit/index.html HTTP/1.1
Host: www.baidu.com
If-Modified-Since: Wed, 7 Sep 2011 09:23:24 #条件GET首部行
首部行If-Modified-Since,表示如果请求的对象在指定时间之后被修改过则返回请求对象,否则无需返回。在Web缓存服务器上就非常有用。时刻对缓存对象进行检查。
HTTP/1.1 304 Not Modified
Date: Sat, 15 Oct 2011 15:39:28
Server:Apache/1.3.0(Unix)
(empty entity body)
FTP
File-Trnasmission-Protocol文件传输协议,HTTP和FTP都是文件传输协议,HTTP传输的文件时超文本(web page),这个文件包含多个web object对象。他们都运行在TCP上。
FTP使用了2个并行的TCP连接:控制连接和数据连接。
控制连接:传输控制信息,如用户标识、口令、文件(目录)操作命令。
数据连接:发送文件,非持续连接,发完就断开。
FTP的控制信息是带外(out of band)传送,HTTP是带内(in-band)传送。
FTP服务器在整个会话期间保留用户的状态(state)
FTP命令和回答
命令:
USER username:向服务器传送用户标识
PASS password:传送用户口令
LIST:返回当前远程目录的文件列表
RETER filename:从当前目录检索(get)文件,会产生一个数据连接。
STOR filename:在当前目录存放(put)文件
回答:
331 Username OK,Password required:用户名OK,需要口令。
125 Data connection already open;transfer starting:数据连接已经打开,开始传送。
425 Cant open data connection:无法打开数据连接
452 Error writing file:写文件差错