文章目录
- 应用层协议
- Web和HTTP
- HTTP 概述
- 采用非持续连接的HTTP
- RTT 往返时间的定义
- **三次握手过程**
- 采用持续连接的HTTP
- HTTP到底采用哪个?
- HTTP 的报文格式
- 请求报文
- 功效
- 格式
- 响应报文
- 状态码
- 格式
- Cookie
- 什么是cookie
- Web缓存
在学习的过程很多人都遇到了HTTP和Cookie,Web缓存这些问题。下面我将带领大家了解一下这些复杂的东西,鼓励一下点个赞呗
应用层协议
上一篇博客应用层体系结构已经介绍了应用层的大致内容,下面就是要介绍应用层的协议
-
HTTP协议
-
SMTP协议
Web和HTTP
HTTP 概述
超文本传输协议(核心)。
Web服务器实现了HTTP的服务器端,它用于存储Web对象
HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。
HTTP使用TCP作为支撑协议,HTTP客户需要建立起与服务器的TCP连接,如何通过套接字访问TCP。
不管是客户端还是服务器,都是需要先向他们的套接字接口发送或接收报文。
重点
HTTP的服务器地址是稳定的
3. 客户与服务器的交互是通过TCP进行的
4. 每个请求都是经过一个单独的TCP发送,也能是多个请求经过一个!!!
采用非持续连接的HTTP
1.客户需要获取1+1=?客户发起一个TCP连接
2. 客户经过套接字发送一个HTTP请求报文
3. 服务器接收请求报文,发送响应
4. TCP连接断开
5. 客户检查响应报文中的页面信息,得到 2.
RTT 往返时间的定义
RTT是指从源主机发送分组开始,直到源主机收到来自目的主机的确认分组为止,所需要的时间
RTT由三个部分决定:链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处理时间。其中前两个部分的值作为一个TCP连接相对固定,路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。简单来说就是发送方从发送数据开始,到收到来自接受方的确认信息所经历的时间。
三次握手过程
- 客户与服务器发起一个TCP连接,
- 服务器对此做出回应。
- 客户再向服务器回应一个确认,这也就是三次握手的由来!
采用持续连接的HTTP
是不是觉得非持续连接一定比持续性连接好?那你就大错特错的
非持续连接的服务器和客户机需要分配的大量的网络资源,假设你需要99999TB的资源,还需要给你的网友分享,等个几年估计就传完了,那么服务器估计直接就给你停了
如果我们采用持续性连接,那么服务器在结束第一轮的请求响应后,会保持TCP连接的打开!
HTTP到底采用哪个?
看实际情况而定,在实际应用中很多情况突发,不能盖棺定论
HTTP 的报文格式
我只说原理,喜欢看结构的,市面上任何书都有例子,光看例子不知道原理,没啥用
请求报文
- 第一行是请求行:GET/POST/请求…+URL+HTTP版本字段
- 其他行是首部行:指明了主机是啥,要不要关闭连接,等等客观存在的网络信息
功效
首部行表示了用户想要的需求(语言,资源版本等)
格式
响应报文
- 状态行:协议字段+状态码+对象本身状态信息
- 首部行:类似于发送报文,都是功能
- 正文:主要部分,包含所有的对象本身
状态码
200 请求成功
301 对象转移
400 差错代码
404 请求对象丢失
505 服务器不支持请求报文使用的HTTP协议版本
格式
Cookie
什么是cookie
为了让Web站点能够识别用户,诞生了cookie
cookie可以用于标记一个用户,用户首次访问一个网站后,需要产生一个唯一的用户标记,在用户下一次访问时,浏览器向服务器发送cookie首部,服务器就标识出了用户,因此,cookie在HTTP之上建立一个用户会话。
Web缓存
代表初始web服务器满足HTTP请求的网络实体。Web缓存器以及有自己的磁盘存储空间,并在存储空间保存最近访问的资源副本
请求对象过程
- 建立TCP连接,向缓存器发送HTTP请求
- 检查缓存器,如果有副本资源就直接返回资源给客户
- 如果没有,就访问需要访问的资源,然后在本地拷贝一下副本。
好处
减少响应时间,减低成本费用