通信相关

1 数据交互方式的历史版本

  1. 表单
    最基本、最简单的交互方式
  2. ajax
    ajax不用刷新页面,跨域麻烦
    单向通信,性能低
  3. jsonp
    用来跨域,安全性差,了解即可
  4. WebSocket
    性能高、双向(双工)通信、直接跨域
    可以手动兼容(兼容性极强)
    :1 2 3 三种方式的http请求其实都是表单

2 http协议

2.1 http版本

http1.0:一次性连接
http1.1:保持连接——再所有请求完成后在断开(性能提升)
http2.0:1. 强制https 2. 自带双向通信 3. 多路复用

http——容易被攻击
https (security)——安全

2.2 三次握手,四次挥手

三次握手,四次挥手

3 计算机网络体系结构

3.1 OSI七层交换"参考"模型

用途协议
1.物理层跟材料相关
2.链路层内网寻址ARP、ICMP
3.网络层外网寻址IP
4.传输层通信稳定性TCP
5.会话层× 记录状态
6.表现层× 统一各个网络结构
7.应用层应用细节HTTP、FTP、SMTP、POP3

物链网传会表应

3.2 TCP

TCP——传输控制协议
特点:面向连接、面向字节流、全双工通信、可靠
优点:数据传输可靠
缺点:效率慢(建立连接、发送确认包)
基于TCP的协议:HTTP、FTP、SMTP、Telnet

TCP三次握手
同步标记 SYN、确认标记 ACK、随机起始序号 seq、确认号字段 ack

连接报文段信息描述
C → SSYN=1、seqc客户端给服务器发送连接请求(SYN包)
S→ CSYN=1、ACK=1、seqs、acks=seqc+1服务器接收SYN包后,返回确认连接的报文段
C → SACK=1、seqc += 1、ackc=seqs+1客户端向服务器发送确认包

为什么TCP连接需要三次握手
防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁、浪费资源

TCP四次挥手
终止控制位 FIN、确认标记位 ACK、随机起始序号 seq、确认号字段 ack

连接报文段信息描述
C → SFIN=1、seqc=u客户端给服务器发送连接释放的报文段
S → CACK=1、seqs=v、acks=u+1服务器接收后,向客户端发回连接释放确认的报文段
S → CFIN=1、ACK=1、seqs = w、acks=seqc+1若服务器不向客户端发数据,就发出释放连接的报文段
C → SACK=1、seqc=u+1、ack=w+1客户端接收后,向服务器发回连接释放确认的报文段

为什么TCP释放连接需四次挥手
为了保证通信双方都能通知对方 需释放 & 断开连接

3.3 UDP

UDP——用户数据协议
不保证到达、不保证质量、不保证顺序
用途:即时通信、IP电话、视频直播
特点:无连接、不可靠、传输数据报文段、传输效率高、所需资源少

4 表单

属性

属性用途
action提交到哪
method方式——GET、POST;PUT、HEADER、DELETE;自定义
name必须加、可以重复
submit提交

数据提交方法

GET数据放在url里容量小≈32k、看得见、有缓存、利于收藏分享
POST数据在http-body里容量大≈1G、看不见、不缓存

get & post安全性完全一样,https才是真安全
校验
.onsubmit 事件里加判断

5 http状态码

意思
1xx消息
2xx成功
3xx重定向
4xx请求错误(客户端)
5xx服务端错误
6xx自定义

3xx 重定向:将网络转移到另一个地址
301:永久重定向——浏览器永远不会再次请求老的地址(不推荐)
302:临时重定向——浏览器下次还会请求老地址
304:重定向到硬盘(缓存)
缓存:
缓存理解

  1. 第一次向服务器请求a.txt文件,服务器返回200(成功)和文件内容
  2. 第二次向服务器请求a.txt文件时,会加上一个文件的时间,服务器用时间进行对比,如果文件版本相同则返回304

6 浏览器缓存

缓存策略:
cache-control: 告诉服务器要不要缓存
expire: 告诉服务器缓存的时效

缓存实现:

  1. Server -> Client: “Last-Modified: Sat, 02 Dec 2017 04:03:14 GMT”
    第一次请求:服务器给浏览器一个最后修改时间
  2. Client -> Server: “If-Modified-Since: Sat, 02 Dec 2017 04:03:14 GMT”
    第二次请求:浏览器给服务器一个上次缓存的文件的时间
  3. Server -> Client: 200 || 304
    第三次请求:服务器将第二次得到的时间,与自身文件修改时间对比
    1)timeServer > timeClient: 200,重新传输
    1. timeClient >= timeServer: 304

7 http请求

  1. 浏览器DNS缓存
  2. 操作系统DNS缓存
  3. 本地HOST文件
  4. 浏览器发起一个DNS系统调用
    1)宽带运营商服务器查看本身缓存
    2)运营商服务器发起迭代DNS解析请求
    (1)运营商服务器把结果返回操作系统内核 并缓存
    (2)操作系统内核把结果返回给浏览器
    (3)浏览器拿到IP地址
  5. 获得IP地址后,发起HTTP三次握手
  6. TCP/IP连接建立以后,浏览器可以向服务器发起HTTP请求
  7. 服务器接收到这个请求,将处理后的数据返回给浏览器
  8. 浏览器解析代码,用HTTP请求静态资源
  9. 浏览器根据拿到的资源对页面进行渲染,呈现

8 cookie/session

cookie 中带有服务器分配给浏览器的 sess_id

  1. cookie——保存在浏览器
    容量有限——4K
    不安全——用户、浏览器
  2. session——保存在服务器
    容量不用担心
    安全——
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值