计算机网络 -- http协议

http协议

http协议、即超文本传输协议(Hyper text transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
超文本是包含有超链接和各种多媒体元素标记的文本。这些链接用URL表示。最常见的超文本格式是超文本标记语言HTML。
URL:统一资源定位符,用来唯一的标识万维网中的一个文档。由协议、主机和端口、以及文件名三部分构成。
http作用:将网页文件从服务器里传输到客户机里(浏览器)。

http版本

1、0.9版本        GET方法
2、1.0版本        POST HEAD 方法
3、1.1版本        PUT、OPTIONS、DELETE等方法,引用了持久连接,不会立即四次挥手,在1.1之前 ,每次请求都会新建一个tcp连接。
4、2.0版本        效率快,吞吐快  ==》 二进制分帧、多路复用(一个连接内可以处理多个请求,同时进行请求和响应)、头部压缩、优先级、服务器端推流  (html,js,css  -  index.html)

http协议特点:1、简单快速。2、灵活。3、无状态。
无状态 ==》 每次请求都是独立的,上一次请求和下一次请求互不相干。
例如登录了某个网站,下一次请求理论上来说就不需要再登录了。但是由于http是无状态的,它不能知道你上一次请求已经登录过了。所以需要借助其他东西(会话保持)来完成这个登录认证。

http工作原理

http的工作是请求/响应交互模式、因此我们详细了解一下请求包(request)和响应包(response)。
在浏览器任意网页,右键选择检查,选择网络,选中一条请求信息,即可看到请求包和响应包信息

request headers请求报文:客户端行web服务器发送请求报文。报文的所有字段都是ASCII码。

host : 表示访问哪个网址  --->  URL
user-agent: 使用的用户代理  ---> 浏览器/pc端或手机/
accept\accept-language\accept-encoding:浏览器支持哪些格式的文件,支持哪些语言,支持哪些编码
connection:活跃状态断开状态
cookie:通过cookie字段里的session_id 去session里找,找到了就登陆
If-Modified-Since: 上一次访问的时间、如Wed, 03 Aug 2022 08:43:03 GMT
If-None-Match: 上次得到的缓存的密文头、如"62ea3517-267"

服务器会比较If-Modified-Since、If-None-Match这两个字段,看这次访问和上次访问的内容是否相同,
相同的话则不再传送数据,直接让浏览器使用缓存的数据(状态码:304)、不相同则发送现在的数据(状态码:200)

response headers响应报文

状态行:版本和状态码、如:HTTP/1.1 200 OK
Date:时间
Server:服务器的类型和版本、如:BWS/1.1,nginx/1.21.6
Content-Language\Content-encoding:响应内容的语言和编码
Content_Type:响应数据的类型
Content_Length:响应数据的大小
Last-Modified:上次访问的时间

http请求方法

方法说明
GET请求服务器给客户端资源 ==》会提交数据 ==》url 下载
POST请求服务器给客户端资源 ==》会提交数据 ==》表单 、常用于用户注册登录
PUT修改资源
DELETE请求服务器删除指定的资源
HEAD请求头
CONNECT连接
OPTIONS查看服务器端的参数,比如支持哪些方法

GET与POST请求的区别

GET和POST都是向服务器发起请求、只是携带数据的方式不一样。
1、URL形式。GET方法携带数据放在URL里、POST方法数据可以是json格式或者放在body部分。
2、传输数据的大小。GET方法携带的数据放在URL里,不能携带非常多的参数。POST方法可以携带的数据更加多
3、安全性。GET方法请求的参数会暴露在地址栏中,而POST请求则不会

http 常见状态码

1**	信息,服务器收到请求,需要请求者继续执行操作
2**	成功,操作被成功接收并处理
3**	重定向,需要进一步的操作以完成请求
    301   Moved Permanently永久重定向、请求的URL已经永久更改,返回新的URL
    302   Moved Temporarily 临时重定向
    304   not Modified、未改变,说明无需再次传输请求的内容,即使用缓存的内容
    307   临时重定向
4**	客户端错误,请求包含语法错误或无法完成请求
    400   客户端语法错误
    401   用户验证失败
    403   Forbidden 用户禁止访问、客户端没有权限访问
    404   url找不到
    405   方法不被允许,not  allowd
    499   client has closed connection  --nginx定义状态码不一定是客户端的问题,有可能是服务器处理不过来了
5**	服务器错误,服务器在处理请求的过程中发生了错误
    500	Internal Server Error	服务器内部错误bug,无法完成请求
	501	Not Implemented	服务器不支持请求的功能,无法完成请求
	502	Bad Gateway	作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应(负载均衡服务器是好的,但是后端服务器出错了)
	503	Service Temporarily Unavailable	1、由于超载或系统维护,服务器暂时的无法处理客户端的请求。2、服务器限制了某个时间段只能访问多少次,超过限制则503。延时的长度可包含在服务器的Retry-After头信息中
	504	Gateway Time-out	充当网关或代理的服务器,未及时从远端服务器获取请求。后端网络不稳定或防火墙问题
	505	HTTP Version not supported

推荐详细资料 ==》  http://www.w3.org/Protocols/rfc2616/rfc2616.html

访问百度背后发生了什么

1、浏览器分析超链接里的url
2、浏览器向DNS请求解析域名的ip地址,DNS将ip返回浏览器
先看缓存 (浏览器www.baidu.com 112.233.223.223) – linux的缓存nscd
再看/etc/hosts 文件里面有没有记录
再看/etc/resolv.conf里的本地域名服务器有没有解析
本地域名服务器记录的解析如果有就会直接返回给浏览器,如果没有解析,就会去根域名服务器找全球13台,依次迭代查询得到最后的ip解析地址
3、浏览器与服务器进行tcp三次握手,建立连接
4、浏览器发起请求(get) ,http应用数据的发送,请求百度页面
5、服务器收到请求,给出响应,然后返回百度的html页面文档发送给浏览器
6、浏览器收到页面内容之后,运行展示在窗口上(渲染:将响应报文里的html文件+图片+视频等展示出来,看到效果)
7、没有其他请求的话,连接就会断开

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值