计算机基础知识梳理

计算机网络

TCP协议/ UDP协议

  • 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
  • 三次握手四次挥手
    https://www.cnblogs.com/mfrbuaa/p/3996267.html
  • UDP是一个非连接的传输层协议,传输数据之前源端和终端不建立连接
  • TCP和UDP的区别
    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
    3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
    4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
    5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
    6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

HTTP协议

  • HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,以 ASCII 码传输,建立在 TCP/IP 协议之上
一、请求报文
  • 由三部分组成:请求行、消息报头、请求正文
  • 常用的HTTP方法:
    GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。GET是安全的和幂等的,安全是指该操作用于获取信息而非修改信息。幂等的意味着对同一URL的多个请求应该返回同样的结果。
    POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。POST 提交数据方案,包含了Content-Type和消息主体编码方式两部分。
    PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
    HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
    DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
    OPTIONS:查询相应URI支持的HTTP方法。
    TRACE: 实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。
  • Content-Type 字段、Content-Encoding 字段和Connection字段
    Content-Type表示发送的数据的格式,
    Content-Encoding字段说明数据的压缩方法,gzip, compress, 以及deflate编码都是无损压缩算法,用于减少传输报文的大小,不会导致信息损失,identity表明没有对实体进行编码。当没有Content-Encoding header时, 就默认为这种情况
    Connection: keep-alive要求服务器不要关闭TCP连接,以便其他请求复用。
  • GET和POST的区别
    (1)GET在浏览器回退时是无害的,而POST会再次提交请求。
    (2)GET产生的URL地址可以被Bookmark,而POST不可以。
    (3)GET请求会被浏览器主动cache,而POST不会,除非手动设置。
    (4)GET请求只能进行url编码,而POST支持多种编码方式。
    (5)GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
    (6)GET请求在URL中传送的参数是有长度限制的,而POST么有。
    (7)对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
    (8)GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
    (9)GET参数通过URL传递,POST放在Request body中。
    (10)对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
二、响应报文
  • 由三个部分组成:状态行、响应头(Response Header)、响应正文
  • 状态码:
    1xx(临时响应)——表示临时响应并需要请求者继续执行操作的状态代码。
    100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
    101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
    2xx (成功)——表示成功处理了请求的状态代码。
    200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
    204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
    205 (重置内容) 服务器成功处理了请求,但没有返回任何内容,同时要求用户重置视图。
    3xx (重定向) ——表示要完成请求,需要进一步操作,这些状态码用来重定向。
    300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
    301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
    4xx(请求错误) ——这些状态代码表示请求可能出错,妨碍了服务器的处理。
    400 (错误请求) 服务器不理解请求的语法。
    401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    403 (禁止) 服务器拒绝请求。
    404 (未找到) 服务器找不到请求的网页。
    5xx(服务器错误)——这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
    500 (服务器内部错误) 服务器遇到错误,无法完成请求。
    502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
    503 (服务不可用) 服务器目前无法使用(由于超载或停机维护),这只是暂时状态。
三、管道机制

即在同一个TCP连接里面,客户端可以同时发送多个请求,服务器的响应是有序的

HTTP/2

特性
  • 二进制传输,HTTP/2 是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame
  • 多路复用,多路复用很好的解决了浏览器限制同一个域名下的请求数量的问题,同时也接更容易实现全速传输
  • 数据流,HTTP/2 将每个请求或回应的所有数据包,称为一个数据流
  • 头信息压缩,一方面,头信息使用gzip或compress压缩后再发送;另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号
  • 服务器推送,HTTP/2 允许服务器未经请求,主动向客户端发送资源

URI和URL

统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。
统一资源定位符URL是URI的子集,用定位的方式将资源标识出来。

Https

  • Https是一种在加密信道进行Http内容传输的协议
  • http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,HTTPS在HTTP的基础上加入了SSL/TLS协议,依靠SSL证书来验证服务器的身份,并为客户端和服务器端之间建立“SSL加密通道”,确保用户数据在传输过程中处于加密状态
  • TLS 的基本过程如下:
  1. 客户端发送一个 ClientHello 消息到服务器端,包含了客户端的TLS版本、加密算法和压缩算法
  2. 服务器端向客户端返回一个 ServerHello 消息,消息中包含了服务器端的 TLS 版本,服务器所选择的加密和压缩算法,以及服务器公开证书,证书中包含了公钥
  3. 客户端验证服务器端的证书是否可信,生成一串伪随机数,使用服务器的公钥加密它
  4. 服务器端使用自己的私钥解密上面提到的随机数,然后使用这串随机数生成自己的对称主密钥
  5. 服务器端利用对称主密钥与客户端之间通信。
  • 潜在危险:SSL 剥离造成中间人攻击

跨站攻击防御

  • 跨站请求伪造CSRF:
  1. Token 验证:(用的最多)
    (1)服务器发送给客户端一个token;
    (2)客户端提交的表单中带着这个token。
    (3)如果这个 token 不合法,那么服务器拒绝这个请求。
  2. 验证码
  3. Referer 验证:
    Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。
  4. 关键操作只接受 POST 请求
  5. 注意:过滤用户输入的内容不能阻挡 csrf,我们需要做的是过滤请求的来源。
  • 跨站脚本攻击XSS:
  1. 永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉
  2. 对标签进行转换

套接字socket

Socket 是对 TCP/IP 协议族的一种封装,是应用层与TCP/IP协议族通信的中间软件抽象层。从设计模式的角度看来,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
socket() 创建套接字
bind() 分配套接字地址
listen() 等待连接请求
accept() 允许连接请求
read()/write() 数据交换
close() 关闭连接

七层体系结构

由下至上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

前端

webSocket

WebSocket对象一共支持四个消息 onopen, onmessage, onclose和onerror。

  • 当Browser和WebSocketServer连接成功后,会触发onopen消息;
  • 如果连接失败,发送、接收数据失败或者处理数据出现错误,browser会触发onerror消息;
  • 当Browser接收到WebSocketServer发送过来的数据时,就会触发onmessage消息,参数evt中包含server传输过来的数据;
  • 当Browser接收到WebSocketServer端发送的关闭连接请求时,就会触发onclose消息。

DOM操作

  • 获取节点
    document.getElementById
    ducument.getElementByTagName
    ducument.getElementByClassName // ie8 以上
    document.getElementsByName
  • 增添节点
    element.appendChild(Node); //往element内部最后面添加一个节点,参数是节点类型
    elelment.insertBefore(newNode,existingNode); //在element内部的中在existingNode前面插入newNode
  • 删除节点
    element.removeChild(Node) //删除当前节点下指定的子节点,删除成功返回该被删除的节点,否则返回null
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值