前端开发--HTTP基础知识

1.简单的例子

输入url打开网页;ajax获取数据;img标签加载图片

2.浏览器输入url打开网页的具体过程

  • 开始就要进行redirect的原因是:因为浏览器可能已经记录了这个地址已经永久的跳转成一个新的地址,所以一开始浏览器一开始就要看看一下将要redirect到哪里。
  • 看一下缓存:原因在于请求的资源已经被缓存过了,app-cache如果没有缓存,要到实际的服务器那里请求资源
  • 输入的是域名,但是只有将其转换成ip地址我们才可以进行访问到服务器,通过域名查找ip地址就是DNS解析。
  • tcp有三次握手

3.网络层模型

  • 网络协议分层(五层模型):应用层、传输层、网络层、数据链路层、物理层(用不到)
    其中应用层用到了http协议、但是http协议要基于传输层的tcp/ip协议来实现

物理层:定义物理设备如何传输数据—电脑的硬件、端口、网线
数据链路层:在通讯的实体之间建立数据的链路连接--需要一个软件服务通过物理的设备创建一个电路的连接(基础的数据传输,一般用01这样的二进制进行传输)
网络层:数据在节点之间创建逻辑链路

  • 传输层:两个协议TCP/IP 、 UDP

a、为我们提供了端到端的服务—服务:服务=》建立了本机到百度的连接之后, 两端如何传输数据、以及传输数据的方式,都在这一层定义。如何分包、组装也是在传输层进行定义的
b、传输层向高层屏蔽了下层的通信数据的细节 :在输入url的的过程,就涉及到了一系列的数据的分包和组装,但是用户不需要了解详细情况;ajax也是一样的

  • 应用层—http协议

a、为应用软件提供了很多的服务
b、构建在tcp的协议之上的
c、屏蔽了网络传输的相关细节—具体网络传输细节也不需要知道

4.http的历史

  • http0.9版本

(1)只有一个get命令
(2)没有head的相关的数据进行描述数据信息的内容
(3)服务器发送完毕就会将tcp的连接关闭
ps:一个tcp连接对应多个http请求,一个http请求在一个tcp上进行发送

  • http1.0版本(和1.1差不多)

(1)增加了很多的命令,如post、put、header
(2)增加了status code和header
(3)多字符集的支持、多部分发送、权限、缓存等
其中:status code 描述:服务端处理请求之后的状态; header描述:发送或是请求的一些数据、和操作这些数据的一些方法

  • http1.1

(1)持久连接(降低成本)
(2)pipeline 一个连接发送多个请求,但是在服务端,对进来的请求,需要通过顺序来进行返回
(3)增加了host和其他的命令,host之后再物理服务器来跑多个web服务

  • http2(还没有普及)

(1)数据以二进制传输,以帧进行传输
(2)同一个连接里面不再顺序返回数据,并行的处理
(3)头信息压缩以及推送,推送:服务端可以主动发送数据请求。

5.http的三次握手

(1)客户端和服务器之间进行请求的发送和获取,要先建立一个TCP connection
(2)在http1.0里面,http请求创建的时候,就会创建TCP连接,服务器相应之后,连接就会自动的关闭了
(3)三次握手
ps: 在http1.1里面,可以让连接一直存在(降低了成本), 在http2里面,http的请求可以并发

三次握手

I、客户端发送我要创建 连接的一个数据包的请求 ,其中syn=1标志位:创建请求的数据包,后面有一个seq=x,这个数字一般等于1
II、服务端接受到之后,了解到有一个客户想要和我建立一个连接,会开启 一个TCP的socket的端口,并再一次返回给客户端,返回ack和服务端的seq
III、客户端接受到这些信息,了解到服务端已经允许创建这个tcp的连接了,客户端发送ack 和seq
ps:三次握手为了避免由于网络延迟、导致的额外开销

6.URI、URL、URN

  • URI =URL+URN,URI:统一资源标志符,用来唯一标示互联网上的信息资源
  • URL统一资源定位器,用来找到资源的位置
    (1)http://user:pass@host.com:80/path?query=string](http://user:pass@host.com.80/path?query=string#hash
    (2) 其中http://是一个schema,定义以什么协议访问资源,协议定义了发送方如何发送数据、服务器如何解析数据
    (3) user:pass@代表了访问者的身份,可以用用户名和密码进行认证,几乎不用
    (4) host.com或是ip,用来定位资源的服务器在互联网中的位置
    (5) :80 端口, 定位 host找到的主机上面的具体的web服务的位置
    (6)/path,path 是路由,在web服务中进行具体的查找
    (7)?query=string,搜索的参数
  • URN永久统一资源定位符--出现404,通过URN进行访问在资源移动之后可以继续被找到

7.Http的报文格式

http报文请求
  • 在请求报文里面:首行

第一部分: method(请求的方法)GET、PUT、POST、DELETE
第二部分:URL 存放路由相关的内容,(不需要请求的地址,因为在发送报文的时候,请求已经建 立成功了)。
第三部分:HTTP的版本信息
header: 包含传输的数据的一些内容,描述到接受到的数据的格式

  • 在响应报文: 首行

第一部分:http的版本信息
第二部分:code,代表请求的状态 ok 是code代表的含义

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容