一、HTTP 协议概述

HTTP协议采用了请求/响座模型。 客户端向服务器发送—个请求,请求头包含请求的方法、URT.、协议版本、以以 及包含请求修饰符。客户信息和内容的类似于MIME的消息结构。 服务器以一个状态行作为响应,响应的内容包括消息协议的版本, 成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。

HTTP 已经演化出 了很多版本,它们中的大部分都是向下兼容的。

(1) HTTP/0.9;已讨过时。只接受 GET —种请求方法,没有在通讯中指定版本号,且不支持请求头。 由干该版本不支持 POsT方法,所以客户端无法向服务器传递太多信息。

(2)HTTP/1.0∶ 这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用, 特别是在代理服务器中。

(3)HTTP/1.1∶ 当前版本。持久连接被默认采用, 并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。

二、HTTP请求流程

用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。

三、TCP建立连接的过程

三次握手讲解∶

1.客户端发送位码为syn= 1,随机产生seqnumber=1234567的数据包到服务器,服务器由 SYN=1知道客户端要求建立联机(客户端∶ 我要连接你)

2.服务器收到请求后要确认联机信息,向A发送ack number=(客户端的seq+1),syn=1,ack=1,随机产生 seq=7654321的包(服务器∶好的,你来连吧)

3.客户端收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,客户端会再发送ack number=(服务器的 seq+1).ack=1,服务器收到后确认seq值与ack=1则连接建立成功。(客户端∶ 好的,我来了)

四、TCP断开连接的过程

TCP关闭连接过程∶

1.Client向Server发送FIN包,表示Client主动要关闭连接,然后进入FIN WAIT 1状态,等待Server返回ACK包。此后Client不能再向Server发送数据,但能读取数据。

2.Server收到FIN包后向Client发送ACK包,然后进入CLOSE WAIT状态,此后 Server不能再读取数据,但可以继续向 Client发送数据。

3.Client收到Server返回的ACK包后进入 FIN WAIT 2状态,等待Server发送FIN包。

4.Server完成数据的发送后,将FIN包发送给Client,然后进入LAST ACK状态,等待Client返回ACK包,此后Server既不能读取数据,也不能发送数据。

5.Client收到FIN包后向Server发送ACK包,然后进入TIME WAIT状态,接着等待足够长的时间(2MSL)以确保Server接收到ACK包,最后回到CLOSED状态,释放网络资源。

6.Server收到Client返回的ACK包后便回到CLOSED状态,释放网络资源

五、HTTP方法

HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法 (HTTP method)。每条 HTTP 请求报文都包含一个方法,

告诉服务器要执行什么动作, 包括∶ 获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST。

HTTP          方法                        描述

GET                                请求获取 Request-URI 所标识的资源

PUT                                请求服务器存储一个资源,并用 Request-URI 作为其标识

DELETE                         请求服务器删除 Request-URI 所标识的资源

POST                              在 Request-URI 所标识的 资源后附加新的数据

HEAD                             请求获取由 Request-URI 所标识的资源的响应消息报头

六、HTTP 状态码

HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一 URL时,服务器根据处理情况返回相应的处理状态。

状态码首位 已定义范围 分类
1xx 100-101 信息提示
2xx 200-206 成功
3xx 300-305 重定向
4xx 400-415 客户端错误
5xx 500-505 服务器错误

HTTP 常见状态码状态码

状态码 功能描述
200 一切正常
301 永久重定向
302 临时重定向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 文件不存在
414 请求URI头部过长
500 服务器内部错误
502 无效网关
503 当前服务不可用
504 网关请求超时

了解HTTP基本知识板块的更多相关文章

  1. 手工制作的年份Java老A发售量

    Java老A这本书是写了很长的时间,昨天终于开始china-pub.京东.活动当天发售的猫,现在,简称买卖,他当然还没有到. 有兴趣的人能够去看看哈(兴许其它站点地址也会在这里公开): china-p ...

  2. 2018.10.23 NOIP训练 Leo的组合数问题(组合数学+莫队)

    传送门 好题. 考察了莫队和组合数学两个知识板块. 首先需要推出单次已知n,mn,mn,m的答案的式子. 我们令f[i]f[i]f[i]表示当前最大值为第iii个数的方案数. 显然iii之后的数都是单 ...

  3. 【转】学习Python的19个资源

    原文链接:[译]学习Python编程的19个资源 用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言.如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话, ...

  4. 学习 Python 编程的 19 个资源 (转)

    学习 Python 编程的 19 个资源 2018-01-07 数据与算法之美 编译:wzhvictor,英文:codecondo segmentfault.com/a/119000000418731 ...

  5. web前端开发-博客目录

    web前端开发是一个新的领域,知识连接范围广,处于设计与后端数据交互的桥梁,并且现在很多web前端相关语言标准,框架库都在高速发展.在学习过程中也常常处于烦躁与迷茫,有时候一直在想如何能够使自己更加系 ...

  6. NLP教程(5) - 语言模型、RNN、GRU与LSTM

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  7. NLP教程(6) - 神经机器翻译、seq2seq与注意力机制

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  8. NLP教程(7) - 问答系统

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  9. 自己一晚上总结的php基础知识!好累。好充实。

    为了巩固自己的基础提升自己的技术.花了一晚上的时间结合w3c上的非常基础的东西,和自己的部分见解,写了不少,望大神们指正,指导.. <?php /* 这段话必须要写在开篇啊!死老猫,你又刺激我! ...

随机推荐

  1. Java基础——类型转换注意事项及常见问题

    类型转换 由于Java是强类型语言,所以要进行有些运算的时候,需要用类型转换 低------------------------------------------------------------ ...

  2. 面试官:MySQL 有哪些锁??

    大家好,我是小林. 这次,来说说 MySQL 的锁,主要是 Q&A 的形式,看起来会比较轻松. 不多 BB 了,发车! 在 MySQL 里,根据加锁的范围,可以分为全局锁.表级锁和行锁三类. ...

  3. Golang语言系列-11-goroutine并发

    goroutine 并发 概念 package main import ( "fmt" "time" ) /* [Go语言中的并发编程 goroutine] [ ...

  4. 【笔记】numpy.array的常用基本运算以及对数据的操作

    numpy.array的基本运算以及对数据的操作 设置一个问题,例如 这种只需要基本的运算就可以实现 类似的 numpy对向量的运算进行了优化,速度是相当快的,这种被称为universal funct ...

  5. 干货!4大实验项目,深度解析Tag在可观测性领域的最佳实践!

    Opentelemetry协议,是CNCF(Cloud Native Computing Foundation-云原生计算基金会)定义的最新一代的可观测规范(目前还在孵化中),该规范定义了可观测性的三 ...

  6. WPF教程(四)RelativeSource属性

    我们进行Bingding时,如果明确知道数据源的Name,就能用Source或者ElementName进行绑定,但是有时候我们需要绑定的数据源可能没有明确的Name,此时我们就需要利用Bingding ...

  7. 阿里云sql监控配置-druid

    今天我们说说数据源和数据库连接池,熟悉java开发的同仁应该都了解C3PO,在这里不做过多的赘述了,今天我们说的是阿里DRUID,druid是后起之秀,因为它的优秀很快占领了使用市场,下边我们一起来看 ...

  8. 面向对象之编写驱动程序--中断(linux系统、s3c6410开发板)

    /*------------------------- *先申明下,本人是个菜鸟,刚开始接触驱动程序编写,交代下开发环境(主机系统redhat6.3,开发板ARM-s3c6410) 以watchdog ...

  9. hive -- 外部表、内部表、临时表

    1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...

  10. Jmeter教程 录制脚本

    Jmeter 录制脚本 Jmeter中有2种方法可以录制脚本.  不过我个人非常不推荐录制脚本,录制的脚本混乱,需要再次加工才能使用. 像我这么精通HTTP协议的人. 一直都是使用Fiddler来抓包 ...