HTTP请求报文
两种类型的HTTP报文:请求、响应
HTTP请求报文:
ASCII (人能阅读)
通用的请求报文格式
(一) Post方式 :
- 网页通常包括表单输 入
- 包含在实体主体 (entity body )中的 输入被提交到服务器
(二) URL方式:
- 方法:GET
- 输入通过请求行的 URL字段上载
方法类型:
(一) HTTP/1.0
GET 、 POST、HEAD
要求服务器在响应报文中 不包含请求对象 –> 故障 跟踪
(二) HTTP/1.1
除了 GET、 POST、HEAD之外还有
PUT :将实体主体中的文件上载 到URL字段规定的路径
DELETE : 删除URL字段规定的文件
HTTP响应报文
响应状态码:
位于服务器客户端的响应报文中的首行
常见的几种状态码
200 OK
请求成功,请求对象包含在响应报文的后续部分
301 Moved Permanently
请求的对象已经被永久转移了;新的URL在响应报文的Location: 首部行中指定
客户端软件自动用新的URL去获取对象
400 Bad Request
一个通用的差错代码,表示该请求不能被服务器解读
404 Not Found
请求的文档在该服务上没有找到 505 HTTP Version Not Supported
Trying out HTTP (client side) for yourself
在自己的linux操作系统上发送连接
用户-服务器状态:cookies
Http协议实际上是一个无状态的协议。 服务器不会维护客户端的状态, 请求只会解析封装响应给你, 而不会管这个用户(客户端)是否以后会访问.。这就慢慢的衍生出了cookie。
大多数主要的门户网站使用 cookies
Cookies的四个组成部分:
1) 在HTTP响应报文中有 一个cookie的首部行
2) 在HTTP请求报文含有 一个cookie的首部行
3) 在用户端系统中保留有 一个cookie文件,由用 户的浏览器管理
4) 在Web站点有一个后 端数据库
例如:
Susan总是用同一个PC使 用Internet Explore上 网
她第一次访问了一个使 用了Cookie的电子商务 网站
当最初的HTTP请求到达 服务器时,该Web站点 产生一个唯一的ID,并 以此作为索引在它的后 端数据库中产生一个项
Cookie能带来什么?
用户验证 、购物车 、 推荐 、 用户状态 (Web e-mail)
如何维持状态:
- 协议端节点:在多个事务上 ,发送端和接收端维持状态
- cookies: http报文携带状 态信息
Cookies与隐私
- Cookies允许站点知道许多关于 用户的信息
- 可能将它知道的东西卖给第三 方
- 使用重定向和cookie的搜索引 擎还能知道用户更多的信息
- 如通过某个用户在大量站点 上的行为,了解其个人浏览 方式的大致模式
- 广告公司从站点获得信息
Web缓存(代理服务器)
目标:不访问原始服务器,就满足客户的请求
操作:
- 用户设置浏览器: 通 过缓存访问Web
- 浏览器将所有的HTTP 请求发给缓存
- 在缓存中的对象:缓存 直接返回对象
如对象不在缓存,缓存 请求原始服务器,然后 再将对象返回给客户端
缓存即是客户端又是服务器端
通常 缓存是由ISP安装 (大学、公司、居民区ISP)
为什么要使用Web缓存 ?
- 降低客户端的请求响应时 间
- 可以大大减少一个机构内 部网络与Internent接链路上的流量
- 互联网大量采用了缓存: 可以使较弱的ICP也能够 有效提供内容
举例:
FTP : 文件传输协议
早期通过ftp来分享文件,内容等, 现在我们是通过网盘、 云盘等。
现在的ftp已经很少用了
- 向远程主机上传输文件或从远程主机接收文件
- 客户/服务器模式
- 客户端:发起传输的一方
服务器:远程主机
- ftp: RFC 959
- ftp服务器:端口号为21
FTP: 控制连接与数据连接分开
- FTP客户端与FTP服务器通过端口21联系,并使用TCP为传输 协议
- 客户端通过控制连接获得身份 确认
- 客户端通过控制连接发送命令 浏览远程目录
- 收到一个文件传输命令时,服 务器打开一个到客户端的数据 连接
- 一个文件传输完成后,服务器 关闭连接
书上是服务器用自己的20号端口与客户进程建立数据传送连接
- 服务器打开第二个TCP数据连接用 来传输另一个文件
- 控制连接: 带外( “out of band” )传送
- FTP服务器维护用户的状态信息: 当前路径、用户帐户与控制连接对 应 有状态
FTP命令、响应
相关命令样例:
- 在控制连接上以ASCII文本 方式传送
- USER username
- PASS password
- LIST:请服务器返回远程主机当前目录的文件列表
- RETR filename:从远程主机的当前目录检索文件 (gets)
- STOR filename:向远程主机的当前目录存放文件 (puts)
相关返回码样例:
状态码 和1 状态信息(同HTTP )
3个主要组成部分:
用户代理 、 邮件服务器 、 简单邮件传输协议:SMTP
简要描述:
用户通过用户代理 完成对邮件的编写 等操作 ,然后将邮件发送给邮件服务器, 邮件服务器就会将该邮件发送给目标邮件服务器。 目标用户通过登录客户端软件(QQ邮箱等用户代理)来阅读用户代理从用户服务器上拉去的邮件。
他们之间遵守的协议就是SMTP协议。
组成一: 用户代理
又名 “邮件阅读器”
撰写、编辑和阅读邮件的客户端软件。如Outlook、Foxmail
输出和输入邮件保存在服务器 上
组成二: 邮件服务器
邮件服务器作用:
- 邮箱中管理和维护发送给用户 的邮件
- 输出报文 队列保持待发送邮件 报文
- 邮件服务器之间的SMTP协议 :发送email报文
- 客户:发送方邮件服务器
服务器:接收端邮件服务 器
组成三: 简单邮件传输协议:SMTP
- 使用TCP在客户端和服务器之间传送报文,端口号为25
- 直接传输:从发送方服务器到接收方服务器
- 传输的3个阶段: 握手 、传输报文 、关闭
- 命令/响应交互
- 命令:ASCII文本
响应:状态码和状态信息
- 报文必须为7位ASCII码
规范了邮件的内容必须是在七位ASCⅡ码范围内(最原始的。)
举例:
Alice给Bob发送报文
简单的交互
上述的这种传输就是纯明文之间的传输 ,不做任何的保护措施, 也就是说黑客是可以随时截胡这些内容, 并且可见的。
SMTP:总结
- SMTP使用持久连接
- SMTP要求报文(首部 和主体)为7位ASCII编 码
- SMTP服务器使用 CRLF.CRLF决定报文的 尾部
HTTP比较 :
- HTTP:拉(pull)
- SMTP:推(push)
二者都是ASCII形式的命令/响应交互、状态码
- HTTP:每个对象封装在各自 的响应报文中
- SMTP:多个对象包含在一个 报文中
邮件的报文格式
报文格式 : 多媒体扩展
邮件访问协议:
SMTP: 传送到接收方的邮件服务器
- 邮件访问协议:从服务器访问邮件
- POP:邮局访问协议(Post Office Protocol)[RFC 1939]
- 用户身份确认 (代理<–>服务器) 并下载
- IMAP:Internet邮件访问协议(Internet Mail Access Protocol)[RFC 1730] 或者也可以是HTTP协议
- 更多特性 (更复杂) ; 在服务器上处理存储的报文
- HTTP:H****otmail , Yahoo! Mail等
扩展PoP3协议 :
POP3(续)
- 先前的例子使用 “下载 并删除”模式。
- 如果改变客户机,Bob不 能阅读邮件
- “下载并保留”:不同 客户机上为报文的拷贝
- POP3在会话中是无状态 的
- 本地管理文件夹
IMAP
- IMAP服务器将每个报文 与一个文件夹联系起来
- 允许用户用目录来组织 报文
- 允许用户读取报文组件
- IMAP在会话过程中保留 用户状态:
- 目录名、报文ID与目录名 之间映射
DNS
DNS
P2P应用
CDN
TCP套接字(Socket)编程
UDP套接字编程