[学习笔记][剑指Offer][计算机网络](二)TCP与UDP、HTTP与HTTPS、socket

4、其他

4.1、TCP和UDP的区别

4.1.1、UDP简介

结构:

UDP的特点:

4.1.2、区别

  1. TCP面向连接,UDP无连接
  2. TCP可靠,UDP不可靠
  3. TCP有序,UDP无序
  4. TCP速度慢,UDP速度快
  5. TCP重量级,UDP轻量级

4.2、TCP滑动窗口

4.2.1、RTT和RTO

RTT:发送一个数据包到收到对应的ACK,所花费的时间

RTO:重传时间间隔

#有了RTT才能求出RTO

4.2.2、TCP使用滑动窗口做流量控制和乱序重排

  • 保证TCP的可靠性
  • 保证TCP的流控特性

1、窗口数据的计算:

AdvertisedWindow是接收端还能接收的流量大小

EffectiveWindow是发送端还能发送流量的大小

2、发送方滑动窗口图示:

通俗的讲滑动窗口就是双方都有一个窗口,发送端发送一点就移动一点,接收方接收到一点就移动一点。

Category#1、已经发送并且得到端的回应的

Category#2、已经发送但还没收到端的回应

Category#3、未发送但可以对端进行发送的

Category#4、需要发送但超出端的window大小,不允许发送

#图中下方滑动窗口中,假如只有32、34被确定,则滑动窗口不滑动,因为33未收到ACK。

4.3、HTTP

HTTP:超文本传输协议

在HTTP1.1中增加了keep-alive(长连接,下层实现对上层透明)

4.3.1、HTTP特点

  • 支持客户、服务器模式
  • 简单快速
  • 灵活
  • 无连接
  • 无状态

4.3.2、HTTP结构

HTTP请求结构:

示例:

GET www.cbc.com/test HTTP/1.1

HOST:www.cbc.com

Connection: keep-alive

Cache-Control: max-age=0

<html>…正文…</html>

HTTP响应结构:

4.3.3、HTTP请求/响应步骤

  1. 客户端连接到Web服务器
  2. 发送HTTP请求
  3. 服务器接收请求并返回HTTP响应
  4. 释放TCP连接
  5. 客户端浏览器解析HTML内容

4.3.4、在浏览器地址栏键入URL,按下回车之后经历的流程

  1. DNS解析:(根据URL解析查询DNS服务器缓存,URL域名所对应的缓存地址【DNS缓存从近到远:浏览器缓存=》系统缓存=》路由器缓存=》IPS服务器缓存=》域名服务器缓存=》顶级域名服务器缓存】查询到结果直接返回,不在向下继续)
  2. TCP连接:“三次握手”;
  3. 发送HTTP请求:客户端浏览器发送读取文件的HTTP请求;
  4. 服务器处理请求并返回HTTP报文;
  5. 浏览器解析渲染页面;
  6. TCP连接结束:“四次挥手”;

#(5、6无先后顺序)

4.3.5、HTTP状态码

五类状态码:

  • 1XX:指示信息--表示请求已接收,继续处理
  • 2XX:成功--表示请求已被成功接收、理解、接受
  • 3XX:重定向--要完成请求必须进行更近一步的操作
  • 4XX:客户端错误--请求有语法错误或请求无法实现
  • 5XX:服务器段错误--服务器未能实现合法的请求

常见状态码:

  • 200 OK:正常返回信息
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized:请求未经授权,客户端无权访问(这个状态码必须和WWW-Authenticate报头域一起使用)
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在(e.g.输入了错误的URL)
  • 500 Internal Server Error:服务器发生了不可预期的错误
  • 503 Server Unavailable:服务器当前不能处理客户端请求,一段时间后恢复正常

4.4、GET和POST的区别

从三个层面来解答:

  • Http报文层面:GET将请求信息放在URL中,POST放在报文体中
  • 数据库层面:GET符合幂等性和安全性,POST都不符合
  • 其他层面:GET可被缓存、存储,POST不行

PS:因为GET符合幂等性、安全性,所以GET可被缓存、存储。因此最好不要使用GET做不安全操作。

4.5、Cookie和Session的区别

4.5.1、Cookie

1、Cookie简介:是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端;客户端再次请求的时候,会把Cookie回发;服务器接收到后,会解析Cookie生成与客户端相对应的内容。

2、Cookie的设置以及发送过程:

按理来说,HTTP是无状态的,所以每次登录都需要重复填写账号和密码。但实际上,第一次客户端浏览器输入账号和密码,发送到服务端,服务端返回特殊信息,以文本的形式存储在客户端。当客户端再次访问服务端时,会把cookie信息添加在请求头。服务器分析请求头,查到并返回与客户相关的信息。

4.5.2、Session

1、Session简介:服务器端的机制,在服务器上保存的信息。解析客户端请求并操作session id,按需保存状态信息。

2、Session的实现方式:

session,服务器用一种类似于散列表的结构保存session信息。

1、使用cookie来实现:将JSESSIONID放置在cookie中。

2、使用URL回写来实现:服务器在给客户端返回的所有连接中都携带jsessionid的参数,这样客户端的所有请求都会用到服务端返回的jsessionid进行回写。

4.5.3、Cookie和Session的区别

  • Cookie数据存储在客户端浏览器上,Session信息存储在服务器上
  • Session比Cookie更安全
  • 若考虑减轻服务器负担,应考虑Cookie

PS:黑客通过分析浏览器上的Cookie来进行Cookie欺骗。

4.6、HTTP和HTTPS的区别

4.6.1、HTTPS简介

HTTPS:以信息网络安全通信为目的的超文本传输协议。

4.6.2、SSL(Security Sockets Layer,安全套接层)简介

  • 为网络通信提供安全及数据完整性的一种安全协议。
  • 是操作系统对外的API,SSL3.0之后更名为TLS
  • 采用身份验证和数据加密保证网络通信的安全和数据的完整性。

4.6.3、加密方式

  • 对称加密:加密和解密都是用同一个密钥
  • 非对称加密:加密使用的密钥和解密使用的密钥不同
  • 哈希算法:将任意长度的信息转换成固定长度的值,算法不可逆。
  • 数字签名:证明某个消息或文件是某人发出/认同的

各种加密方式的优点及代表:

  • 对称加密:效率高(AES对称加密)
  • 非对称加密:公钥和算法公开,私钥保密;效率低,但安全性高,加密长度有限制(ECC非对称加密)
  • 哈希算法:(MD5算法)
  • 数字签名:在信息后边加上一些内容,内容是哈希后的值,确保信息没有被修改。

4.6.4、HTTPS数据传输流程

证书配合加密;(证书包括:证书发布的CA机构,证书有效期,证书所有者,签名等等)

4.6.5、HTTP和HTTPS的区别

  1. HTTPS需要到CA申请证书,HTTP不需要
  2. HTTPS密文传输,HTTP明文传输
  3. 连接方式不同:HTTPS默认使用443端口,HTTP使用80端口
  4. HTTPS = HTTP + 加密 + 认证 + 完整性保护,较HTTP安全

4.6.6、HTTPS真的安全吗?

浏览器默认填充http://,请求需要进行跳转,有被劫持的风险。

可以使用HSTS(HTTP Strict Transport Security)优化

301、302跳转,由HTTP转到HTTPS,有段时间密码暴露

4.7、socket

4.7.1、socket简介

Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口。

4.7.2、socket通信流程

[学习笔记][剑指Offer][计算机网络](一)TCP连接的建立与释放

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值