[笔记]网络部分技术要点

目录

HTTP缓存机制
HTTPS的SSL和TSL
HTTPS的加密算法
HTTP协议
HTTP的request和response
HTTP1.0和1.1
HTTP中get和post区别
HTTP的幂等性
cookie和session的区别
URI和URL
DNS
TCP/IP五层协议
OSI七层协议

HTTP缓存机制

彻底弄懂HTTP缓存机制及原理

HTTPS的SSL和TLS

SSL是一种安全传输协议,TLS是SSL的升级版
HTTPS是把HTTP和TLS一起使用,TSL位于HTTP和TCP之间,实际上是把TLS握手+TLS加密+TLS告警+TLS Record Layer+HTTP,组成HTTPS:


来着慕课网教程

HTTPS的问题:

  1. 通信慢
  2. 必须加密
    数字证书
    数字证书CA是为了保证公钥是来自于真实服务器,通过权威机构,给网站颁发一个认可凭证,有凭证就被浏览器信任。
    用户把私钥和公钥发给认证机构,机构返回确认信息和数字证书,内含身份信息和公钥。
    TLS/SSL四次握手
    1.客户端发起
    支持的协议版本和加密压缩算法
    随机数1
    2.服务器回应
    确定加密版本和算法
    随机数2
    下发数字证书(CA保证公钥不被篡改)
    3.客户端回应
    验证数字证书
    随机数3,用数字证书的公钥加密
    凑齐3个随机数,用商定的方式生成对话密钥
    通知编码改变,握手结束(编码改变就是以后改用商定的加密方式来通信)
    4.服务端处理
    解密和验证,得到随机数3
    凑齐3个随机数,用商定的方式生成对话密钥(和客户端生成的一致)
    收到编码改变,握手结束

完成握手后,用握手过程中的3个随机数叠加(3个伪随机就很接近随机数了),生成一个用于加密通信内容的对称密钥,公钥是用来给对称密钥加密的,这样可以兼顾效率与安全。
SSL/TLS协议运行机制的概述

HTTPS的加密算法

HTTP协议

HTTP就是超文本传输协议,就是为了从Web服务器向浏览器传输HTML超文本的。
HTTP的特点
1.简单快速
协议简单,服务器程序规模小,通信速度快
2.无连接
每次连接只处理一个请求,服务器收到客户端应答后关闭连接,节省传输时间
3.无状态
不记录上下文,没有记忆,可以提高服务器应答速度
RESTful和SOA两种使用方法
HTTP本身是一种面向资源的应用层协议,实际使用时有两种方式:
1.RESTful,把HTTP当成应用层协议,遵守HTTP协议的各种规定。
2.SOA,把HTTP当成传输层协议,然后在HTTP之上建立自己的应用层协议。

HTTP的requset和response

浏览器发出request,服务器返回response,具体体现在HTTP的消息头

  • request消息头
    访问信息
    GET HTTP/1.1 访问方法(GET)和协议
    Host www.baidu.com:80 主机和端口号
    Referer 从哪个网址跳转过来的
    User-Agent 客户端使用的操作系统和浏览器等
    支持信息
    Accept / 浏览器接收的媒体类型
    Accept-Encoding gzip 浏览器支持的编码方法
    Accept-Language 语言zh和字符集gbk
    缓存信息
    If-Modified-Since 浏览器中缓存的最后修改时间
    If-None-Match 和E-Tag成对使用,是否可以直接使用本地缓存文件
  • response消息头
    连接信息
    HTTP/1.1 304 协议,304表示可以允许使用缓存
    Server 服务器软件
    Date response的生成时间
    Proxy-Connection 例如Keep-alive,表示TCP连接不会关闭,下次继续使用
    缓存信息
    Last-Modified 资源最后修改时间,和If-Modified-Since对应
    E-Tag 和If-None-Match对应
    Expires 告诉浏览器,本地缓存过期时间
    Cache-Control 例如max-age-43200 表示request和response需要遵循的缓存机制

http1.0和http1.1

背景
把html文档从web服务器取到浏览器
优化角度
浏览器阻塞:对一个域名,浏览器同时只有4个连接
DNS解析:要先把域名解析为IP
握手:TCP的连接3次握手和断开4次挥手
区别

  1. 缓存机制更丰富
    1.0只有If-Modified-Since
  2. 有range,优化带宽和网络连接
    1.1有range属性,可以请求资源的一部分,可以断点续传
  3. Host头加主机名
    1.0没有主机名,1.1有主机名,所以可以支持一个IP上多个虚拟主机,如果没有主机名,会报400
  4. TCP长连接
    1.0每个HTTP都有关闭和重新建立TCP连接
    1.1支持一个TCP连接上处理多个HTTP请求,默认Keep-alive

问题

  1. 1.0不能长连接,每次关闭创建连接,导致速度慢
  2. 1.1长连接可能,不必要的连接会导致服务器压力大
  3. 1.1header内容过大且变化很小,传输压力大
  4. 明文传输,不安全

HTTP中get和post的区别

  1. get数据在url?后;post在body中
  2. get的数据大小受浏览器限制
  3. 请求变量的值
    分别是Requset.QueryString Request.Form
  4. get不安全
    数据直接显示在url中,页面被缓存后也容易被读走

HTTP协议的幂等性

幂等性
幂等性是数学中的一个概念,表达的是N次变换与1次变换的结果相同
幂等并不属于某个协议,它是一种特性,不管是SOA还是RESTful的Web API都要考虑幂等性。
HTTP协议的幂等性
HTTP有GET、DELETE、PUT、POST四种主要方法,它们的幂等性如下:

  • HTTP GET方法,幂等
    用于获取资源,无副作用,所以天然是幂等的。
  • HTTP DELETE方法,幂等
    用于删除资源,有副作用,但它是满足幂等性的,例如DELETE http://www.yourbiz.com/id/123,不管调用几次,对系统的作用是相同的,都是删掉id为123的数据,不会引发错误。
  • HTTP POST方法,不是幂等
    POST所对应的URI并非创建的资源本身,而是资源的接收者,两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI,所以POST不具有幂等性。
  • HTTP PUT方法,幂等
    PUT所对应的URI是要创建或更新的资源本身,例如DELETE http://www.yourbiz.com/id/123,总是操作id为123的数据,无则创建,有则更新,对同一URI,多次PUT和一次PUT的结果是相同的,所以也是幂等的。
    理解HTTP幂等性

cookie和session的区别

都是弥补HTTP无状态的不足

  • cookie是在客户端保存的文本信息
    客户端支持cookie
    服务器返回时,在header中附加cookie(Set-cookie)
    客户端请求时,在header中添加cookie(cookie)
  • session是在服务端保存的数据
    session是客户端和服务端的一系列交互动作
    服务器生成sessionId
    服务器为session增加内容
    客户端请求时,带上sessionId,服务端根据sessionId获取session信息
  • 区别
    cookie存本地,不安全但是高效,有效期很长,文本信息(ASCII编码)
    session存服务器,安全但是存储压力大,有效期短(业务中修改sessionId,就失效),任何数据类型

URI和URL

  • URI是用来标识资源的,统一资源标识符,uniform resource identifier,强调资源
    file://a:8090/f/b/a.txt包括三部分:
    资源的命名机制
    资源所在的主机名
    资源的名称,虽然用路径标识,但是重在资源
  • URL是用来定位资源的,统一资源定位符,uniform resource locator,强调路径
    URL是一种具体的URI,URL不仅标识一个资源的URI,还指明了如何定位到这个资源
    http://192.168.1.2:80/web/index.html包括三部分:
    访问资源的协议
    所在的主机IP和端口
    资源的具体地址

DNS

DNS就是把域名解析为IP地址,主要分四步:

  1. 本机查找
    先查看Host文件,获取域名映射的IP地址
    如果Host文件没有,会查找本地DNS缓存
    如果Host和缓存都没有,去找本地DNS服务器
  2. 本地DNS服务器
    根据TCP/IP参数中的首选DNS服务器地址,去请求本地DNS服务器
    如果本地DNS服务器有数据,返回IP;
    如果域名不在本地DNS服务器的区域内负责解析,但是有DNS缓存数据,就返回缓存的DNS,但是这不是权威数据;
  3. 上层DNS服务器
    如果本地DNS服务器允许转发模式,就迭代地向上层DNS服务器查找
  4. 根服务器
    如果本地DNS不允许转发,或者转发后上层DNS服务器最终也没有找到,就会进去全球13个根服务器中,根据域名如.com,获取一个顶级域名服务器的地址,去顶级域名服务器查找对应的IP地址。

DNS解析有两种方式:
递归:就是全交给DNS服务器,多个DNS服务器逐级查询和反馈
迭代:就是客户机自己来,逐个查询多个DNS服务器

TCP/IP五层协议

自底向上:

  1. 物理层/实体层
    在物理通信媒介的基础上,用电流实现0/1传输,传输bit数据
  2. 链接层
    在网卡之间,传输数据帧
    协议,bit数据组成数据包(帧),包括Head(收/发方地址,数据类型)和Data
    mac,从网卡到网卡(交换机核心就是找mac,转发数据包)
    广播,在网内广播,所有网卡都会收到包,在head中检查是否要处理
  3. 网络层
    建立主机到主机的通信,实现基本的数据封包传递,使数据包能到达目标
    用广播找网卡是不现实的,所以要抽象出网络地址,用于跨层通信,先处理网络地址,找到mac所在的子网络,再处理mac地址。
    用IP协议规定网络地址,在复杂网络结构中,通过路由查询可以找到目标IP地址。
    IP数据包也是包括Head(IP),Data
    arp协议,发出一个数据包,所在子网络的每台主机都收到,对比IP是否一致并处理,类似链接层的广播
  4. 传输层
    建立端口到端口的通信,然后通过网络层传递并确认数据包,端口是用来区分通信的是主机内的哪个应用程序
    数据包也是包括Head(端口),Data
  5. 应用层
    应用程序规定数据格式,是软件可以直接使用的网络服务,如电子邮件SMTP、文件FTP、远程访问Telnet等

最终,数据包的格式为:
链路层Head(MAC) + 网络层Head(IP) + 传输层Head(TCP端口号) + 数据包Data

OSI七层协议

自底向上:

  1. 物理层
    提供bit流服务,以二进制形式在物理媒介上传输数据。
    定义物理接头类型、电压等、用电流强弱代表0/1,实现bit概念,实现bit字节传输
    仅能实现传输,数据并没有组织起来。
  2. 数据链路层
    提供可靠的帧数据传输。帧是有地址的,传输时可以检错。
    使用机器地址,利用不可靠物理层,建立可靠的传输,主要依靠帧的无差错传输
    对帧进行解码和传递,实现寻找物理地址,帧数据的检错重发等,要使用交换机
  3. 网络层
    提供网络地址,并建立和提供通信双方使用的路由,让数据包可以到达目标(不检错)。
    使用网络地址,利用数据链路层,建立数据传输的最佳路径。
    把网络地址翻译为物理地址(交给数据链路层的是物理地址),然后综合考虑可选路由、网络拥堵、优先权等,特别是在多层网络结构中,为通信的两个网络节点找到一个最佳路径
    其中,网络地址就有IP协议、AppleTalk协议等,网络地址的分配、管理和翻译是交给路由器来处理的
  4. 传输层
    利用网络路由,提供端到端的接口,提供传输控制服务
    定义了数据传输协议和端口号TCP协议UDP协议
    把大数据包切成小数据段,实现数据的发送和重组,并控制传输速度
  5. 会话层
    建立和解除联接,维护数据传输通道。
    在网络节点之间,建立通信链路并同步数据,实际上是利用传输层的端口号,实现会话的建立、维持、中断、恢复、终止。
  6. 表示层
    把数据表示为网络中使用的数据格式(不同网络可能不一样),格式化、加密解密、格式转换等。
    实际上可以把不同格式翻译成统一的格式
    需要对应用层的数据进行加密解密,对图片和文件做编码解码
  7. 应用层
    为软件提供网络服务,文件传输、电子邮件等
    应用层本身不是某种服务,而是为使用网络的软件提供电子邮件收发、文件传输管理等服务
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容

  • 1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话...
    Mr希灵阅读 19,842评论 6 120
  • 转载 :http://www.cnblogs.com/maybe2030/p/4781555.html#_labe...
    奋斗live阅读 1,361评论 0 10
  • 今夜露水正白 有三个女儿 准备出嫁 第七天是我的节日 第八日拥有了爱情 夜晚抱着花布缝补 一阵燥热 是梦中的火种 ...
    苏苏诺阅读 189评论 13 10
  • 难得有几天出差的事情,来回路途中可以短暂的陪下老婆孩子已让自己感到满足。这几天短暂的时间,在一不留神中又让自己在写...
    旭日而生阅读 136评论 0 0
  • 文/沈疏桐 王尔德说,“人生只有两种悲剧,一是没有得到想要的东西,另一是得到了想要的东西。”。 我仅有的关...
    沈疏桐阅读 350评论 2 4