【coder-pig教程学习笔记3】Http协议

1.Http 协议的底层工作流程

a.两个名词

SYN(Synchronous):TCP/IP建立连接时使用的握手信号
ACK(Acknowledgement):确认字符,确认发来的数据已经接受无误

b.TCP/IP 三次握手的概念

学术版理解

  1. 客户端发送 syn 包(syn = j)到服务器,进入 SYN_SEND 状态,然后等待服务器确认
  2. 服务器收到 syn 包,确认客户的 syn(ack = j + 1),同时在自己也发送一个 syn 包(syn=k), 即 syn + ack 包,服务器进入 SYN_RECV 状态
  3. 客户端收到 syn + ack 包,向服务器发送确认包 ack(ack = k +1),发送完毕后,客户端与服务端进入 ESTABLISHED 状态,完成三次握手,然后两者开始传送数据

通俗版理解

  1. 考场上,客户端偷偷扔了个纸条给服务器,上面写着:“第五道计算题你写好了没?”
  2. 服务器收到纸条后,也是够义气,在纸条上写上:“正在做,这道题做完我就写完全卷了,你还有哪些题需要答案的一起写在纸条上给我。”然后扔了回去。
  3. 客户端拿到纸条感动得泪流满面,把所有不懂的题号都写到纸条上又扔给服务器。
c.Http操作的流程
  1. 用户点击浏览器上的url(超链接),Web浏览器与Web服务器建立连接
  2. 建立连接后,客户端发送请求给服务器,请求的格式为:
    统一资源标识符(URL)+协议版本号(一般是1.1)+MIME信息(多个消息头)+一个空行
  3. 服务端收到请求后,给予相应的返回信息,返回格式为: 协议版本号 + 状态行(处理结果) + 多个信息头 + 空行 + 实体内容(比如返回的HTML)
  4. 客户端接收服务端返回信息,通过浏览器显示出来,然后与服务端断开连接;当然如果中途某步发生错误的话,错误信息会返回到客户端,并显示,比如:经典的404错误!

2.Http的请求方式(常用的为GET和POST)

  • GET:请求获取Request-URI所标识的资源
  • POST:在Request-URI所标识的资源后附加新的数据
  • HEAD 请求获取由Request-URI所标识的资源的响应信息报头
  • PUT:请求服务器存储一个资源,并用Request-URI作为其标识
  • DELETE:请求服务器删除Request-URI所标识的资源
  • TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT:保留将来使用
  • OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项

3.GET和POST的区别

  • GET:在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,
    但数据容量通常不能超过2K,比如:http://xxx?username=…&pawd=…
  • POST: 在请求的实体内容中向服务器发送数据,传输没有数量限制
  • GET安全性低效率高,用于一般查询;POST安全性高效率低,用于数据增删改
  • 两者的区别并不像网上某些人说的“GET获得服务器数据,POST向服务器发送数据”,其实两者都是向服务器提交数据

4.Http状态码

  • 100~199 : 成功接受请求,客户端需提交下一次请求才能完成整个处理过程
  • 200: OK,客户端请求成功
  • 300~399:请求资源已移到新的地址(302,307,304)
  • 401:请求未授权,改状态代码需与WWW-Authenticate报头域一起使用
  • 403:Forbidden,服务器收到请求,但是拒绝提供服务
  • 404:Not Found,请求资源不存在
  • 500:Internal Server Error,服务器发生不可预期的错误
  • 503:Server Unavailable,服务器当前不能处理客户端请求,一段时间后可能恢复正常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值