应用层HTTP协议----超文本传输协议

HTTP是一个属于应用层的协议,它是基于TCP实现的服务器/客户端的模式,客户端发送请求,服务请响应请求.

认识URL

URL:网址.
例如:下面这个图中的网址其实是一个完整的的网址
这里写图片描述
而我们现在的看到的网址基本都是这样的:

https://www.baidu.com/s?wd=%E5%A4%A7%E8%92%9C%E7%9A%84%E8%8B%B1%E6%96%87&rsv_spt=1&rsv_iqid=0xea8fc8ac00048646&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=1&rsv_sug1=1&rsv_sug7=001&rsv_sug2=1&rsp=3&rsv_sug9=es_2_1&rsv_sug4=3672&rsv_sug=9

https是http的加密协议.

%E5%A4%A7%E8%92%9C%E7%9A%84%E8%8B%B1%E6%96%87:这是通过urlencode生成的.可以使用urlencode与urldecode来进行生成和解码.目的是为了防止出现特殊符号,如果搜索中出现了特殊字符,就会通过urlencode进行转义为16进制,并且可以通过urldecode进行解码.

这里写图片描述

HTTP协议格式

我们可以通过Fiddler抓包工具进行抓包.来查看http协议的相关信息.
例如:
GET方法:(一种HTTP的请求)
GET方法
POST方法(一种HTTP的请求)
这里写图片描述
HTTP的响应
这里写图片描述
问题:GET 方法与POST方法的区别?
GET方法中没有body,而POST方法中有body.用Content-Length表示body的总字节数.

总结:
HTTP协议的请求格式:(首行 + header + 空格 + Body)

  • 首行:[方法] + [URL] + [版本]
  • Header:请求的属性,由键值对组成,键值对以冒号加空格作为分割;每组属性使用’\n’分割,遇到空行表示header的结束.
  • Body:空行后面的都是Body,Body可以为空字符串.如果存在Body,那么Header部分就会有一个Content-Length属性来标识Body的长度以及Content-Type标识Body的类型.

HTTP的响应格式:(与请求格式相同)

  • 首行:[版本号] + [状态码] + [状态码解释]
  • Header:与请求的格式相同.
  • Body:长度和文本格式就是请求中的标识.

HTTP中header中常见的

header解释
Content-TypeBody部分的文本格式(text/html等)
Content-LengthBody的长度
Host客户端告诉服务器,所请求的资源是在哪个主机的哪个端口上
User-Agent说明用户的操作系统和浏览器的版本信息
referer当前页面从哪个页面跳转过来的,比如:统计广告的来源
location告诉客户端接下来去哪里访问
Cookie在客户端存储的信息,保存在本地的文件,比如存储着用户的登录信息.
Set_Cookie与Cookie是对应的,是服务器给客户端响应中的信息,比如:会将客户端的登录信息进行响应给客户端,客户端会将信息保存在Cookie文件中,那么当客户端再次访问该网页时,就不需要再次输出用户和密码等,而是可以直接登录.

HTTP的状态码

-类别原因
1XXInfornation(信息行状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器请求出错

最常见的状态码:

  • 202:表示OK
  • 404:表示Not Found
  • 403:表示禁止访问(Forbidden)
  • 302:表示重定向
  • 504:表示网关超时(Gateway Timeout)
  • 502:表示错误的网关(Bad Gateway)
  • 418:是一个彩蛋:”I’m a teapot.”

那么,了解了HTTP的响应格式以及请求格式,那么就可以实现一个简单的HTTP服务器了.
简单的HTTP的服务器的实现代码,若需要请戳

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值