5层网络模型介绍
低三层
物理层主要作用是定义物理设备如何传输数据
数据链路层在通信的实体间建立数据链路连接
网络层为数据在结点之间传输创建逻辑链路
传输层
向用户提供可靠的端到端(End一to一End)服务
传输层向高层屏蔽了下层数据通信的细节
应用层
为应用软件提供了很多服务
构建于TCP协议之上
屏蔽网络传输相关细节
HTTP协议的发展历史
HTTP/0.9
只有一个命令GET
没有HEADER等描述数据的信息
服务器发送完毕,就关闭TCP连接
HTTP/1.0
增加了很多命令
增加statuscode和header
多字符集支持、多部分发送、权限、缓存等
HTTP/1.1
持久连接
pipeline
增加host和其他一些命令
HTTP2
所有数据以二进制传输
同一个连接里面发送多个请求不再需要按照顺序来
头信息压缩以及推送等提高效率的功能
HTTP的三次握手
http 1.0 请求一次 tcp连接一次(有三次握手)
http 1.1 请求多次 tcp 保持连接(第二次请求,没有三次握手的开销)
http2.0 请求并发,同一个用户,访问网页只需要一次 tcp 链接
为了防止服务端开启无用的连接,如,如果只有一次握手,客户端发送请求,服务端开启连接,由于网络问题,客户端没接收信息,关闭了,服务端会一直开着,形成无用连接。
URI-URL和URN
URI
Uniform Resource Identifier/统一资源标志符
用来唯一标识互联网上的信息资源
包括URL和URN
URL
Uniform Resource Locator / 统一资源定位器
此类格式的都叫做URL,比如ftp协议
URN
永久统一资源定位符
在资源移动之后还能被找到
目前还没有非常成熟的使用方案
HTTP报文格式
HTTP方法
用来定义对于资源的操作
常用有GET、POST等
从定义上讲有各自的语义
HTTP CODE
定义服务器对请求的处理结果
各个区间的CODE有各自的语义
好的HTTP服务可以通过CODE判断结果
创建一个最简单的web服务
进入文件目录,命令行 node server.js,打开网页 localhost:8888即可。
// server.jsconst http = require('http')http.createServer(function (request, response) { console.log('request come', request.url) response.end('123')}).listen(8888)console.log('server listening on 8888')复制代码