HTTP协议基础

5层网络模型

在这里插入图片描述

  • 物理层主要作用是定义物理设备如何传输数据
  • 数据链路层在通信的实体间建立数据链路连接
  • 网络层为数据在结点之间传输创建逻辑链路
  • 传输层(TCP/IP 和UDP)向用户提供可靠的端到端服务,传输层向高层屏蔽了下层数据通信的细节.
  • 应用层(HTTP ,FTP)为应用软件提供了很多服务,http构建于tcp/ip协议之上,屏蔽了网络传输相关细节.

HTTP协议的发展历史

第一个版本是HTTP/0.9,只有一个命令GET,没有HEADER等描述数据的信息,服务器发送请求完毕就会关闭TCP连接.

第二个版本是HTTP/1.0,增加了很多命令(POST等),增加了status code和header,增加了多字符集支持,多部分发送,权限,缓存等.

第三个版本是HTTP/1.1,支持持久连接(长连接),增加了管道通信(pipeline),增加host和其他一些命令.

第四个版本HTTP2,所有数据以二进制传输,同一个链接里面发送多个请求不在需要按照顺序来处理,头信息压缩以及推送等提高效率的功能.

HTTP的三次握手

在这里插入图片描述
在1.1版本中一个HTTP连接是可以发送多次http请求的,好处是节省创建连接的时间(创建连接需要三次握手,耗时)
在这里插入图片描述
SYN=1表示这是一个创建请求的数据包.
Seq=X表示数据包的内容
ACK=上一个Seq+1

为什么需要三次握手

因为网络传输是由延时的,如果客户端发送连接请求后,服务端返回创建连接成功的数据包丢失,客户端因为有超时关闭连接的设置没有额外开销,但是服务端并不知道客户端没有收到数据包而关闭连接,因此会保留上一个连接使用的端口号造成浪费.因此第一次握手是为了发出创建连接的请求.第二次握手是为了回应客户端收到并接收连接,第三次握手是为了回应服务器收到创建连接成功的消息.

关闭连接的四次挥手

客户端 > 服务器 [FIN] 我要关闭连接了

服务器 >客户端 [ACK] 知道了,等我发完包先

服务器 >客户端 [FIN] 我发完了,我也关闭连接了

客户端 > 服务器 [ACK] 好的,知道了

URI、URL和URN

URI(Uniform Resource Identifier):统一资源标志符,用来唯一标识互联网上的信息资源。包括了URL和URN.
URL(Uniform Resource Locator):统一资源定位器。
URN:永久统一资源定位符。在资源移动之后还能被找到。

HTTP报文格式

在这里插入图片描述
请求头 :请求方法 路径 协议

创建一个最简单的web服务

使用node.js创建一个服务器:

const http= require('http')

http.createServer(function(requst,response){
    console.log('request come',requst.url)
    response.end('123')

}).listen(8888);
console.log('server listening  8888')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值