首页 > 代码库 > HTTP 简单总结

HTTP 简单总结

1. 一次完整的HTTP事务是怎样的一个过程?

基本流程:

  a. 域名解析

  b. 发起TCP的3次握手

  c. 建立TCP连接后发起http请求

  d. 服务器端响应http请求,浏览器得到html代码

  e. 浏览器解析html代码,并请求html代码中的资源

  f. 浏览器对页面进行渲染呈现给用户

2. http状态码有那些?分别代表是什么意思?

  100  Continue  继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息

  200  OK   正常返回信息

  201  Created  请求成功并且服务器创建了新的资源

  202  Accepted  服务器已接受请求,但尚未处理

  301  Moved Permanently  请求的网页已永久移动到新位置。

  302 Found  临时性重定向。

  303 See Other  临时性重定向,且总是使用 GET 请求新的 URI。

  304  Not Modified  自从上次请求后,请求的网页未修改过。

  400 Bad Request  服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。

  401 Unauthorized  请求未授权。

  403 Forbidden  禁止访问。

  404 Not Found  找不到如何与 URI 相匹配的资源。

  500 Internal Server Error  最常见的服务器端错误。

  503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)

3. 协议

  技术分享

  "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交

  流。因此,Unix系统就把主机+端口,叫做"套接字"(socket)。

UDP协议:

  现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。

  "标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以

  太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

  技术分享

  

TCP协议:

  UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

  为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。

  如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

  因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

  TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的

  长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

应用层:

"应用层"的作用,就是规定应用程序的数据格式。

  HTTP协议:

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

    HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。

    HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

    技术分享

  

  我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本

  上是下面这样

    技术分享

  

  发送这个包,需要知道两个地址:

    * 对方的MAC地址

    * 对方的IP地址

  数据包的目标地址,实际上分成两种情况:

    场景                       数据包地址

  同一个子网络        对方的MAC地址,对方的IP地址

  非同一个子网络    网关的MAC地址,对方的IP地址

  DNS协议可以帮助我们,将这个网址转换成IP地址。

  我们要判断,这个IP地址是不是在同一个子网络,这就要用到子网掩码。

 

HTTP 简单总结