HTTP协议

TCP协议与HTTP协议

  • TCP协议主要用于数据传输控制,而HTTP协议主用用于应用层面的数据交互

  • HTTP协议属于应用层协议,是建立在TCP协议基础之上的,HTTP协议以客户端请求和服务器端应答为标准,浏览器通常称为客户端,而Web服务器称之为服务器端.客户端打开任意一个端口向服务端的指定端口(默认为80)发起HTTP请求,首先会发起TCP三次握手,TCP三次握手的目的是建立可靠的数据连接通道,TCP三次握手通道建立完毕,进行HTTP数据交互

  • 当客户端请求的数据接收完毕后,HTTP服务器端会断开TCP连接,整个HTTP连接过程非常短.HTTP连接也称为无状态的连接,无状态连接是指客户端每次向服务器发起HTTP请求时,每次请求都会建立一个新的HTTP连接,而不是在一个HTTP请求基础上进行所有数据的交互

资源定位标识符

  • HTTP请求的内容资源由统一资源标示符(uniform resource identifiers,URI)来标识,关于资源定位及标识有三种:URI、URL、URN
    • 统一资源标示符(uniform resource identifiers,URI),用来唯一标识一个资源
    • 统一资源定位器(uniform resource locator,URL),是一种具体的URI,URL可以用来标识一个资源,而且可以访问或者获取该资源
    • 统一资源命名(uniform resource name,URN),通过名字来标识或识别资源
  • 三种资源标识,其中URL资源标识方式使用最为广泛,完整的URL标识格式为
    • protocol://host[:port]/path/.../[?query-string][#anchor]
  • 参数详解
    • protocol:基于某种协议,常见协议有HTTP、HTTPS、FTP、RSYNC等
    • host:服务器的IP地址或域名
    • port:服务器的端口号,如果是HTTP80端口,默认可以省略
    • path:访问资源在服务器的路径
    • query-string:传递给服务器的参数及字符串
    • anchor:锚点
  • 示例
    • http://www.baidu.com/newindex/plus/list.php?tid=2#baidu
    • protocol:HTTP协议
    • host:www.baidu.com
    • path:newindex/plus/list.php
    • quert-string:tid=2
    • anchor:baidu...............

HTTP与端口通信

  • 端口是TCP/IP协议中应用层进程与传输层协议实体间的通信接口,端口是操作系统可分配的一种资源,应用程序通过系统调用与某个端口绑定后,传输层传给该端口的数据会被该进程接收,相应进程发给传输层的数据都通过该端口输出
  • 在网络通信过程中,需要唯一识别通信两端设备的端点,就是使用端口识别运行于某主机中的应用程序.如果没有引入端口,则只能通过PID进程号进行识别,而PID进程号是系统动态分配的,不同的系统会使用不同的进程标识符,应用程序在运行之前没有明确的进程号,如果需要运行后再广播进程号则很难保证通信的顺利进行
  • TCP/IP协议中引入了一种被称为套接字(socket)的应用程序接口.基于socket接口技术,一台计算机就可以与任何一台具有socket接口的计算机进行通信,而监听的端口在服务器端也称之为socket接口

HTTP request与response

  • 客户端浏览器向Web服务器发起request,Web服务器接到request后进行处理,会生成相应的response信息返回给浏览器,客户端浏览器接收到服务器返回的response信息,会对信息进行解析处理,最终用户看到浏览器展示Web服务器的网页内容
image.png
  • UNIX/Linux系统中执行curl -v命令可以打印Web服务器的request及response详细处理流程
  • curl -v www.baidu.com
image.png
  • request请求方法
    • GET:向指定资源发出请求,获取服务器端数据.
    • POST:向Web服务器提交数据进行处理请求,常指提交新数据
    • PUT:向Web服务器提交上传最新内容,常指更新数据
    • DELETE:请求服务器删除Request-URL所标识的资源。
    • TRACE:回显服务器收到的请求,主要用于测试或诊断。
    • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
    • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法
    • HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

HTTP状态码

  • 100~199:用于指定客户端相应的某些动作(请求已被服务器接收,继续处理)
  • 200~299:用于表示请求成功
  • 300~399:已移动的文件且被包含在定位头信息中指定新的地址信息
  • 400~499:用于指出客户端的错误
  • 500~599:用于指出服务器错误
HTTP状态码 状态码英文 状态码中文含义
100 continue HTTP/1.1 新增状态码,表示继续,客户端继续请求HTTP服务器
101 switching protocols 服务器根据客户端的请求协议,切换到HTTP的新版本协议
200 ok HTTP请求完成,常用于GET、POST请求中
301 moved permanently 永久移动,请求的资源已被永久的移动到新URI
302 found 临时移动,资源临时被移动,客户端应继续使用原有URI
304 not modified 文件未修改,请求的资源未修改,服务器返回此状态码时,常用于缓存
400 bad request 客户端请求的语法错误,服务器无法解析或者访问
401 unanthorized 请求要求用户的身份认证
402 payment required 此状态码保留,为以后使用
403 forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 not found 服务器没有该资源,请求的文件找不到
405 method not allowed 客户端请求中的方法被禁止
406 not acceptable 服务器无法根据客户请求的内容特性完成请求
499 client has closed connection 服务器处理的时间过长
500 internal server error 服务器内部错误,无法完成请求
502 bad gateway 服务器返回错误代码或者代理服务器错误的网关
503 service unavailable 服务器无法响应客户端请求,或者后端服务器异常
504 gateway time-out 网关超时或者代理服务器超时
505 HTTP version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理

HTTP MIME类型支持

  • 浏览器接受到Web服务器的response信息,浏览器会进行解析,在解析页面之前,浏览器必须启动本地相应的应用程序来处理获取到的文件类型
  • 在HTTP response消息中,MIME(multipurpose internet mail extensions,多用途互联网邮件扩展类型)类型被定义为Content-Type header中,例如Content-Type header:text/html,表示默认指定该文件为HTML类型,在浏览器会以HTML格式来处理
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 2,011评论 0 3
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 2,820评论 2 20
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 1,348评论 0 7
  • (原话)谈谈对HTTP协议的理解:超文本传输协议,应用于OSI网络模型中的应用层,是用于服务器传输超文本到本地浏览...
    24_yu阅读 1,028评论 0 1
  • 任何一个技术和知识在了解了大概之后还需要在学习和实践中不断总结、思考才能真正掌握,变成自己的东西。用自己的方式分析...
    Bobby0322阅读 749评论 1 5

友情链接更多精彩内容