美文网首页
关于http/tcp协议

关于http/tcp协议

作者: blossom_绽放 | 来源:发表于2018-06-07 11:09 被阅读52次

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

  1. http的发展

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

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

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

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

http code

  • 1 开头 需要继续操作
  • 2 开头代表成功
  • 3 开头代表需要从定向从其他地方获取资源
  • 4 开头代表失败了
  • 5 服务端错误
  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:

  • public: 所有地方包括代理服务器都可以缓存
  • private: 只有游览器可以缓存
  • no-cache: (需要服务器验证才可以使用缓存)
  • no-store: 不可以使用缓存

到期:

  • max-age = <seconds> 过期时间
  • s-maxage= <seconds> 只在代理服务器生效
  • max-stale = <seconds> 即使过期了也继续使用缓存

验证:

  • Last-Modified 服务端上次修改时间,游览器储存
  • If-Modified-Since 游览器请求带上储存的上次修改时间去匹配
  • Etag hash计算文件内容,通过签名验证文件变动
  • must-revalidate 过期了去原服务器拿数据
  • proxy-revalidate 过期了去代理服务器拿数据

Cookie:

  • max-age和expires 设置过期时间
  • Secure 只在https的时候发送
  • HttpOnly无法通过document.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

待续......

相关文章

  • 2018-12-15\网络与IP&node js服务器

    HTTP与TCP 协议 HTTP 协议的底层其实是由 TCP 协议和 IP 协议(简称 TCP/IP)构建的。关于...

  • TCP/IP协议

    一、关于TCP/IP TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP...

  • 关于http/tcp协议

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

  • Http 和TCP

    1 http -->应用层协议tcp --->传输层协议 --ip --网络层协议http基于tcp协议; 2 ...

  • 入门:HTTP(二)

    一、HTTP协议HTTP协议的底层其实是TCP协议和IP协议构建的 TCP(Transmission Contro...

  • http1.0、http1.1、http2.0的区别

    http http 超文本传输协议,基于TCP协议TCP优点:TCP协议提供传输控制、按顺序组织数据、错误纠正TC...

  • RPC接口与REST对比

    传输协议 RPC,可以基于TCP协议,也可以基于HTTP协议 REST,基于HTTP协议(在TCP协议之上进行封装...

  • http请求过程

    http协议即为超文本传输协议,http协议建立在tcp之上,tcp为传输层协议,而http则为应用层协议。 ht...

  • 2.2 基础知识:tcp的3握手和4次挥手

    网上关于tcp建立通信的文章已经很多,这里简要讲讲在客户端如何灵活运用tcp连接。 http和tcp Http协议...

  • 网络编程面试题总结

    网络编程知识→ tcp、udp、http、https 等常用协议tcp协议:传输控制协议(TCP,Transmis...

网友评论

      本文标题:关于http/tcp协议

      本文链接:https://www.haomeiwen.com/subject/wodisftx.html