网络应用层之http协议

基本概念

HTTP(超文本传输协议)是一种应用层协议,应用层协议的本质是保证一端发送的数据能够在另一端进行解析,http也是如此。

首先来认识一下url:

https://new.qq.com/rain/a/20230308A049I200

像上面这样的我们就叫做url:

但是有些网页长的不会这么简单,像百度:

其中的c++在上方的栏中变成了c%2B%2B,这正是字符被url特殊处理的情况,我们可以在网上见到很多这样的url解码或编码器,如:UrlEncode编码/UrlDecode解码 - 站长工具 (chinaz.com)

HTTP的特点

  1. 简单快速(客户端服务器模式,每次连接只处理一个请求)

  1. 无连接(虽然底层采用TCP进行传输,但是本身http是无连接的)

  1. 无状态(http不会记录上次访问的结果,没有记录能力)

HTTP的本质

http传输的报文格式:

我们可以通过自己构建一个http协议并使用、打印报头而得出:

其中,第一行/后面就是我们要请求的资源,当我们输入并访问时,会得到以下结果:

HTTP的状态码

有时候我们在访问网页的时候会出现404无法访问的标志,那么这个404又代表什么呢?

其实这个404正是我们的状态码,代表服务器无法处理你的请求(就向你找服务器要它根本没有的资源,这就是它无法处理的请求)

http中的状态码如下所示:(一般来说5**是服务器内部错误,不会给用户看到原因)

具体可以在这里进行查询:HTTP 状态码 | 菜鸟教程 (runoob.com)

这张表里又引入了一个陌生的概念:网络中的重定向是什么意思?

网络中的重定向

网络中的重定向分为永久重定向(301)临时重定向(302、307)两种

  • 永久重定向:新的网址完全继承旧的网址,同时上方的url也会变为新网址的url

  • 临时重定向:创造新的网址但不会对旧网址有影响,跳转网页时上方的url还是源网址,但实际上以及跳转到了新网址中

一般来收如果只是临时性的网页维护,我们就可以使用临时重定向,如果想要回到源网址,把临时重定向的要求删除即可,如果是长久性的网络页面迁移,那么最好使用永久重定向。

HTTP的方法

如上图所示,HTTP的方法有很多种,但在使用过程中一般大多为GET和POST方法两种,已知我们上网可以大致上分为两个请求:一个是想从网上获取资源,一个是想向网上发送资源。

  1. GET可以从服务器端获取资源,也可以向服务器端发送资源。POST一般只能向服务器端发送资源。

  1. GET发送资源时,请求行会出现在url中,POST发送时只会出现在请求报头中


我们来创建一个需要登陆的网页来更好的诠释GET和POST的区别

GET发送资源时:

POST发送资源时

可以看出,同样访问一个网页时,GET方法会将文本框中的文本以明文的形式放入url中,无法保证数据安全,而且因为这个url包括了发送的数据,所以无法访问想要访问的资源,服务器查找不到。

POST会比GET更安全。

但是POST就一定安全了吗?我们可以查看服务器端打印出来的http报文:

可以看到在最后一行,还是可以看到用户的账号密码,如果这个POST被人截获,那么用户的账号密码就会被泄露,网络上很多可以直接捕获HTTP的软件,如:使用fiddle进行抓包:https://blog.csdn.net/jingjingshizhu/article/details/80566191

所以http本质上来说就是不安全的,我们需要引入https的概念,才能保证用户安全(当然这个安全也不是绝对的!)

自己写的http代码参考:network/http · fvh159/LinuxCode - 码云 - 开源中国 (gitee.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值