关于http/tcp协议

2018-06-07  本文已影响52人  blossom_绽放

http/tcp协议是程序员必须知道的东西,目前先简单了解一下,后续还需要继续做功课.

  1. http的发展

目前还在使用的版本是http1.1版本,有许多问题,比如请求按照顺序响应,造成了一些客户端优化(合并文件,减少请求数,img放入css等)
未来的http2会很好的解决这个问题

五层网络: tcp用于传输层,http用于应用层,至于还有的下三层,暂时不需要了解

http的连接需要3次握手,1.1版本可以保持连接,直到一段时间不响应自动中断,免除了重复握手的性能消耗

URI(url urn) 统一资源标志符
url: 平时我们见到的网址链接
urn: 目前还没什么用

http code

  1. http 相关特性
    跨域: 这个是游览器限制,请求已经发送了,内容也已经返回了,但是游览器限制了这个内容,服务端请求没有这个问题
    解决跨域1. jsonp 2. cors(推荐阮老师的博客相关文章)

关于cors:
默认只允许post get head方法 text/plain multipart/form-data application/x-www-form-urlencoded 请求格式

response.writeHead(200, {
        'Access-Control-Allow-Origin': '*', // 允许请求域名
        'Access-Control-Allow-Headers': '*', // 允许的请求头
        'Access-Control-Allow-Methods': 'Post,PUT,Delete', //允许跨域请求的方法
        'Access-Control-Max-Age': '1000', // 1000s内部不再需要预请求
    })

Cache-Control:

到期:

验证:

Cookie:

http长连接:
Connection: keep-alive / close
http1.1同一个域名下一般最多6个http链接,后面可复用前面的链接不需要再次3次握手,默认是打开的,可设置close关闭
http2可以并发的处理请求,就没有这个限制了

数据协商:
------- 客户端
Accept: 需要的数据类型
Accept-Encoding: 如何进行数据压缩
Accept-Language: 语言种类
User-Agent: 游览器种类,系统版本等相关信息

------ 服务端
Content-Type 返回的数据类型
Content-Encoding: 压缩方式
Content-Language: 语言

Redirect: 重定向

// 302 是临时跳转  301 是永久跳转  游览器会缓存 使用要慎重
response.writeHead(302, {
      'Location': '/new'
    })

CSP: 游览器安全限制
服务端可以通过设置这个头限制html里面内联的js运行,防止注入攻击

// 302 是临时跳转  301 是永久跳转  游览器会缓存 使用要慎重
response.writeHead(302, {
      'Content-Security-Policy': 'default-src http: https:',
      'Content-Security-Policy': 'default-src \'self\; form-action \'self\', // 也可以限制表单的提交范围
      'Content-Security-Policy': 'default-src \'self\' http://url' //限制外链链接 只能使用自己网站的  可以手动添加允许链接
    })

http2
信道复用:只需要一个http连接
分帧传输: 可以并发发送请求
Server Push: 服务端推送

相较于http1.1 http2性能提升非常明显,所以有条件的话建议通过nginx配置http2

待续......

上一篇 下一篇

猜你喜欢

热点阅读