常用传输层协议(tcp/ip+udp)与常用应用层协议简述(http)
一、计算机网络体系结构
二、TCP与UDP差异
1.TCP是面向连接的可靠传输,UDP是面向无连接的不可靠传输
面向连接表现在3次握手,4次挥手;可靠传输表现在未进行4次挥手时的差错重传,超时重传;
TCP UDP传输时都会建立虚拟信道,区别是TCP要进行握手确认,直到挥手才注销信道,UDP则传输完成就注销信道并不在意接收方收到消息与否。
2.TCP是面向流的传输,UDP是基于数据报的传输
流传输可进行流量控制传输,可进行分组传输,可进行拥塞控制传输;基于报文的传输不拆分不合并,无论多大一次性发送。
3.TCP面向系统资源要求较多,UDP相对较少
TCP需要握手挥手,TCP头部20字节,UDP头部8字节
4.TCP与UDP的应用场景不同
TCP效率要求相对较低,对传输的准确性要求较高,例如:HTTP请求、文件传输、远程登录
UDP效率要求相对较高,对传输的准确性要求相对较低,例如:视频通话、语音通话、偶尔断续也不会影响,不会有流量控制、拥塞控制,偶尔丢帧影响不大
5.UDP的优势
简单
传输快
支持一对一、一对多、多对多,而TCP是基于点对点的
二、三次握手与四次挥手
1.三次握手
A向B发起请求
B向A返回确认消息
A向B发起确认包并分配资源
第三次握手是为了防止失效的连接到达服务器,让服务器打开错误的连接,失效的请求是指滞留在网络中的请求,有了第三次握手,滞留在网络中的请求到达服务器时就会拒绝创建连接
2.四次挥手
C向D发起挥手请求
D向C返回确认消息(此时并不会立即断开,等待一定的时间)
D向C传递剩余的数据
C向D发送确认挥手的消息,此时才断开
三、HTTP协议概述
3.1 Cookie与Session
3.1.1 Cookie
Http协议是无状态的短连接,因此引入Cookie保存状态信息;Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,会在下次请求时携带在请求头发送到服务器,判别两次两次请求是否来自同一浏览器,例如登录状态。
cookie作用:记录会话状态、浏览器行为跟踪。
cookie创建过程:服务器发送响应报文时,通过set-cookie置于响应头中。
cookie安全性:较差,可通过标记cookie为secure来提高安全性。 --设置请求类型为Https
3.1.2 Session
session将会话信息存储到服务器,本地通过cookie只存储sessionId,使用session维护登录状态相对于cookie较安全。
3.1.3 二者区别
cookie只能存ASCII字符串,session可存取任何类型数据,cookie存在浏览器本地易被恶意查看
3.2缓存
缓解服务器响应压力。
降低客户端获取资源的延迟,缓存比服务器离客户端近。
3.3短链接与长链接
短连接:每发起一次请求获取资源后就断开。
长连接:发起请求获取资源后不断开。每次发起新的请求都需要进行三次握手协议,当浏览器访问包含多张图片资源的页面时,除进行页面资源的请求外,还需要图片资源的请求,如果每次都进行TCP连接,开销很大,长连接的出现就是为建立一次TCP连接可进行多次HTTP通信。
3.4流水线
默认情况下HTTP请求是按顺序发出的,下一个请求只有在上一个请求收到应答后才会发出,由于网络延迟和带宽限制可能造成长时间的等待。流水线是同一条长连接上发出的连续的请求,而不用等带响应返回,可避免连接延迟。
3.5HTTPS
HTTP先与SSL通信,再由SSL与TCP通信
认证:第三方机构授予服务器、客户端的证书,包含公钥。
混合加密:使用非对称加密进行传输,使用对称加密进行通信。
3.6GET与POST
get | post | |
后退/刷新按钮 | 无害 | 重新提交 |
书签 | 可收藏 | 不可收藏 |
缓存 | 能被缓存 | 不可被缓存 |
历史 | 参数保留在历史浏览记录 | 不保留 |
数据长度 | 有限制 | 不限制 |
数据类型 | 只允许ASCII字符串 | 不限制 |
安全性 | 稍差,参数携带在URL中 | 稍好,参数在请求体且不会保存在历史记录 |
可见性 | 任何人可见URL | 数据不会显示在URL中 |
GET与POST本质都是TCP连接,并无差别,重大差别是GET产生一个数据包,POST产生两个数据包;GET会把请求头请求参数一并发出去,返回200;POST首次只发送请求头,响应100,浏览器在发送请求体,响应200. |
3.7HTTP各版本
3.7.1HTTP1.0与HTTP1.1区别
1.HTTP1.1支持长连接和请求的流水线处理
通过增加Connection请求头为keep-Alive来实现长连接
2.HTTP1.1增加host字段
HTTP1.0认为每台服务器绑定唯一的IP地址,虚拟技术的发展,一台物理服务器可以存在多个虚拟主机,共享一个IP。
HTTP1.1请求头中host字段指明服务器地址(域名/IP),无host会返回400.
3.增加响应状态码 100 continue
HTTP1.1支持分块请求,先发请求头,响应401表示拒绝访问未认证,中断请求,响应100表示可继续请求,节约带宽。
4.HTTP1.1引入chunked transfer-coding 支持分块响应
发送方将信息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块长度,最后一块会零长度作为消息的结束标志。此特性允许只缓冲消息的片段,避免缓冲整个消息带来的过载。
5.HTTP1.1在HTTP1.0的基础上加入了一些Cache的新特性
例如:当缓存对象的Age过期时,Cache不需要直接抛弃,而与服务器进行重新激活。
3.8.1HTTP2.0
在HTTP1.1的基础上主要增加长连接的性能。