HTTP的请求过程
来源:互联网 发布:sap软件咨询顾问 编辑:程序博客网 时间:2024/06/09 03:28
HTTP请求过程0x00什么是HTTP协议?超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。--百度百科0x01HTTP请求过程1.建立TCP连接;1.1向浏览器键入目标主机名(例如:www.baidu.com);1.2浏览器将域名解析为IP地址;1.2.1浏览器缓存解析(有,停止解析/无,继续向下解析);1.2.2操作系统DNS缓存(有,停止解析/无,继续向下解析);1.2.3读取本地hosts文件,看是否有对应的主机记录(有,停止解析/无,继续向下解析);1.2.4浏览器通过API发送DNS的系统调用,向首选DNS服务器发送域名解析请求(有,停止解析/无,继续向下解析);1.2.5运营商DNS服务器代浏览器发送迭代DNS解析请求:1)运营商向根DNS服务器发送解析请求(.com为顶级域),根DNS服务器给运营商发送应答请求并指向根下的(.com)DNS服务器;2)运营商拿到(.com)DNS服务器IP地址,向(.com)域DNS服务器发送DNS解析请求;3)(.com)域DNS服务器收到运营商DNS解析请求,.com域DNS服务器向运营商DNS发送应答请求并指向baidu.com域DNS服务器(域名注册商的DNS服务器,如:万网);4)域名注册商收到运营商DNS解析请求,查到对应的域名记录,将www.baidu.com对应的IP地址发送给运营商的DNS服务器;5)运营商将查到的域名解析记录发送应答请求给系统内核,内核把记录返回给浏览器,浏览器获得域名对应的IP地址;1.3浏览器向WEB服务器发起TCP的三次握手,通过握手请求建立会话;2.WEB浏览器向WEB服务器发送HTTP请求命令;2.1WEB浏览器向WEB服务器发送请求命令,例如:Request URL:https://www.baidu.com/请求的文件位置(/表示根目录)Request Method:GET请求的方式Status Code:200 OK状态码Remote Address:111.13.100.92:443请求的服务器的IP地址及端口号Referrer Policy:unsafe-urlHTTP的一种安全策略3.WEB浏览器向WEB服务器发送请求头信息;浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。4.WEB服务器应答;浏览器向服务器发出请求后,服务器向浏览器返回一个应答 HTTP/1.1 200 OK,应答的第一部分是协议的版本号和状态码。5.WEB服务器发送应答头信息;正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。6.WEB服务器向浏览器发送数据;Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。7.WEB服务器关闭TCP连接;一般情况下,一旦web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:connection:keep-alive;TCP连接在发送后仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接,节省了为每个请求建立新连接所需的时间,还解决了网络带宽。0x01HTTP请求方法方法描述GET请求指定的页面信息,并返回实体主体。HEAD类似于GET请求,只不过返回的响应中没有具体的内容。POST向指定的资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能导致新的资源的建立/或已有资源的修改。PUT从客户端向服务器传送的数据取代指定的文档内容DELETE请求服务器删除指定的页面。CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS允许客户端查看服务器的性能。TRACE回显服务器收到的请求,主要用于测试或诊断。0x02HTTP状态码HTTP状态码分类分类分类描述1**信息,服务器收到请求,需要请求者继续执行操作2**成功,操作被成功接收并处理3**重定向,需要进一步的操作以完成请求4**客户端错误,请求包含语法错误或无法完成请求5**服务器错误,服务器在处理请求的过程中发生了错误HTTP状态码列表状态码中文描述100继续。客户端应继续其请求101切花协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。200请求成功。一般用于GET与POST请求。201已创建。成功请求并创建了新的资源。202已接受。已经接受请求,但未处理完成。203非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本。204无内容。服务器处理成功,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档。205重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域。206部分内容。服务器成功处理了部分GET请求300多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择301永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替302临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI303查看其它地址。与301类似。使用GET和POST请求查看304未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源305使用代理。所请求的资源必须通过代理访问307临时重定向。与302类似。使用GET请求重定向400客户端请求的语法错误,服务器无法理解401请求要求用户的身份认证403服务器理解请求客户端的请求,但是拒绝执行此请求404服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面405客户端请求中的方法被禁止406服务器无法根据客户端请求的内容特性完成请求407请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权408服务器等待客户端发送的请求时间过长,超时409服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突410客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置411服务器无法处理客户端发送的不带Content-Length的请求信息412客户端请求信息的先决条件错误413由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息414请求的URI过长(URI通常为网址),服务器无法处理415服务器无法处理请求附带的媒体格式416客户端请求的范围无效417服务器无法满足Expect的请求头信息500服务器内部错误,无法完成请求501服务器不支持请求的功能,无法完成请求502充当网关或代理的服务器,从远端服务器接收到了一个无效的请求503由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中504充当网关或代理的服务器,未及时从远端服务器获取请求505服务器不支持请求的HTTP协议的版本,无法完成处理
阅读全文
0 0
- http请求的过程
- http请求的过程
- HTTP的请求过程
- http请求的详细过程
- http请求的详细过程
- http请求的详细过程
- http请求的详细过程
- http请求的详细过程
- HTTP请求的详细过程
- 一个http请求的过程
- HTTP请求的基本过程
- http请求的基本过程
- HTTP请求的基本过程
- http请求的基本过程
- http请求的详细过程
- HTTP的详细请求过程
- 浅谈HTTP请求的过程
- 完整的HTTP请求过程
- LINUX 技巧-查看机器硬件配置
- jQuery实现轮播广告
- LINUX技巧-去除 ^M 标记
- ACM中关于Output Limit Exceeded和Time Limit Exceeded
- LINUX技巧-行首/行尾加入字符
- HTTP的请求过程
- 谷歌浏览器中离线安装.crx扩展名的Chrome插件
- LINUX技巧-查找路径下文件中含有某字符串的文件及其路径
- python基础(字符串相关操作)
- LINUX技巧-查找文件行中值重复的行
- java线程安全之volatale的非原子性(七)
- Java 的布局管理器GridBagLayout的使用方法【图文说明】
- gitlab ee 权限清单
- 简单常用的小代码——猜数字游戏