计算机网络是利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统
Xmind下载
概述
计算机网络资源:计算机硬件、软件、数据
局域网与广域网差异不仅在覆盖范围,还主要在于所使用协议不同(局域网广播技术、广域网点对点交换技术)
局域网与广域网的互联是通过路由器来实现的
广播式网络(通常为局域网通信方式,局域网工作在数据链路层)可以不要网络层,但需要服务访问点(链路层与物理层)
定义功能执行的方法不是对网络模型进行分层的目标
OSI模型精确定义了服务、协议、接口三个概念,TCP/IP模型没有
ISO/OSI模型中,网络层可同时提供无连接服务与面向链接服务(TCP/IP中传输层提供)
ISO/OSI模型中,传输层只提供面向连接的服务
OSI模型中,表示层的功能是表示出用户看得懂的数据格式。主要完成数据字符集的转换、数据格式化和文本压缩、数据加密解密等
TCP/IP模型中,传输层处理关于可靠性、流量控制、错误校正等问题
TCP/IP协议族:TCP,IP,ICMP,IGMP,ARP,RARP,UDP,DNS,FTP,HTTP
以太网的MAC数据帧的首部和尾部长度为18字节
以太网前导码8字节,第一个字段7字节(前同步码);第二个字段1字节(帧开始定界符)
IPv4常用首部长度为20字节
TCP首部开销为20字节,UDP首部开销为8字节
物理层
物理层规定了电气特性,因此能够识别所传送的比特流
在数值上,波特率等于比特率与每符号所含比特数的比值
信道不等同于通信电路,一条可双向通信的电路往往包含两个信道,一条是发送信道,一条是接受信道。多个通信用户公用通信电路时,每个用户在该通信电路上都有一条信道(时分复用)
波特率等于每秒可能发生的信号变化次数
报文交换不能用于语音数据交换
虚电路对网络中的故障敏感,因此不能在出错率高(设备故障率高)的传输系统中使用(可以使用数据报方式)
电路交换不支持差错控制
电缆采用屏蔽技术的好处是减少电磁干扰辐射
描述物理层接口引脚处于高电位的含义属于功能描述
利用中继器扩大网络传输距离就是将衰弱信号进行整形再生
曼彻斯特编码的编码效率为50%,4B/5B编码的编码效率为80%
非归零编码(NRZ):高电平为1,低电平为0,不用归零
反向非归零编码(NRZI):信号翻转代表0,信号保持不变代表1
曼彻斯特编码(以太网使用):一个码元分为两个相等间隔,每个码元位中间跳变,作为时钟信号;码元为1时,前一间隔高电平,后一间隔低电平;
差分曼彻斯特编码(局域网使用):码元为1时,前半码元电平与上一码元的后半个码元电平相同
转发器作用是放大信号
奈奎斯特定理:$2W\log_2 V$(V为每个码元离散电平数目,W理想低通信道带宽)
香农定理:$W\log_2(1+S/N)$(S/N为信噪比)
两个公式中取较小的一个指固定带宽后取较小速率的值为实际最高理论速率
同步TDM方式复用要求复用线路的数据率相同,对于数据传输率低的复用线路采用脉冲填充方式
语音信号需要128个量化级,每次采样需要$\log_2 128=7bits$来标识,语音频率4kHz,每秒需采样8000次。则一路话音需要的数据传输速率为$8000\times7=56kb/s$
数据链路层
- 通过提高信噪比可以减弱随机差错对数据传输的影响
通信信道噪声可以分为:热噪声与冲击噪声
热噪声:信道固有噪声,随即差错,提高信噪比可以降低它对数据传输的影响
冲击噪声:外界电磁干扰,突发错差
- 海明码纠错d位需要码距为$2d+1$的编码方案;检错d位需要码距为$d+1$的编码方案
- 海明码能纠一位错应该满足$2^k\ge n+k+1$(k为校验码位数、n为数据码位数)
- 循环冗余码的帧检验序列与帧数据一同发出,在接受端对这m+r位数据与多项式做模2除法
- 带r个校验位的多项式编码可以检测到所有长度小于等于r的突发性错误
- TDM所用传输介质的性质是:介质的位速率大于单个信号的位速率
- DBN协议中,接收端在收到不合要求的数据帧需要全部抛弃,但是会重复返回最后一个确认帧(防止已发送的ACK丢失)
- 拥塞控制中的选择重传协议接受窗口大小必须满足:发送窗口大小$W_T$≥接受窗口大小$W_R$,且$W_T+W_R\le 2^m$(m为帧序号位数);接受窗口的最大值为$W_{RMAX}=2^{(n-1)}$
- 信道效率:指发送方在一个发送周期(发送方开始发送数据到收到第一个ACK)内,有效发送数据所需要的时间占整个发送周期的比率
- 信道吞吐率:信道利用率×发送方发送速率
- 以太网中,当数据传输速率提高时,帧的发送时间相应地缩短。为了能有效地检测冲突,可以减少电缆介质的长度或增加最短帧长
滑动窗口协议 | 一比特滑动窗口 | Go back n协议 | 选择重传协议 |
---|---|---|---|
发送窗口大小 | 1 | n(小于序号范围) | n(小于序号范围的一半) |
接受窗口大小 | 1 | 1 | |
ACK | 每次都需要返回ACK | 累计ACK | NAK或ACK定时器 |
超时重传的帧 | 未收到ACK的帧 | i号帧以后的所有帧 | 未收到ACK的帧 |
码分复用
A、B同时向C发送数据,则A、B的码序列内积为0
C读取A发送的数据就要将接收到的数据与A的码片序列进行内积(>0表示1;<0表示0)
CSMA/CA
DIFS(分布式协调IFS):最长的IFS,优先级最低,用于异步帧竞争访问的时延。即载波监听到信道空闲,等待DIFS后发送RTS预约信道
PIFS(点协调式IFS):PCF操作使用
SIFS(短IFS):最短的IFS,最高优先级,目的站等待SIFS时间返回ACK
A. CSMA/CA协议的退避算法需要等待一个DIFS,而且要进入争用窗口,计算随机退避时间以便再次试图接入信道
B. CSMA/CA协议只有当检测到信道空闲且该数据帧是要发送的第一条数据帧才不使用退避算法,当(1)发送第一帧前检测到信道忙;(2)每次重传;(3)每次成功发送后再发送下一帧时都需要使用退避算法
C. CSMA/CD协议当发生冲突后会,收发端检测到冲突后会发送干扰信号,干扰信号需要$\tau$时间在网络内传播,而退避算法是在检测到冲突后就开始执行
D. 以太网中可以发送数据后,还需要再等待96比特时间(最小帧间隔时间)
CSMA/CA算法
I. 如果最初有数据要发送,且信道空闲,在等待DIFS后,就发送整个数据帧
II. 当检测到信道忙,站点执行CSMA/CA退避算法,选取一个随机回退值。一旦检测到信道忙,退避计时器就保持不变;只要信道空闲,退避计时器就进行倒计时
III. 当退避计时器减到0时,站点发送整个帧并等待确认
IV. 发送站收到确认,说明发送帧被目的站正确接收。如果发送第二帧,就从步骤2开始
V. 若发送站没有收到ACK,必须重传该帧
- MAC帧不需要帧结束符(有IFS保障帧之间有间隙),但是以太网MAC帧,在数据链路层,帧既要加首部,也要加尾部
参数 | 10BASE5 | 10BASE2 | 10BASE-T | 10BASE-FL |
---|---|---|---|---|
传输媒体 | 基带同轴电缆(粗缆) | 基带同轴电缆(细缆) | 非屏蔽双绞线 | 光线对(850nm) |
编码 | 曼彻斯特编码 | 曼彻斯特编码 | 曼彻斯特编码 | 曼彻斯特编码 |
拓扑结构 | 总线形 | 总线形 | 星形 | 点对点 |
最大段长 | 500m | 185m | 100m | 2000m |
最多结点数目 | 100个 | 30个 | 2个 | 2个 |
使用协议 | CSMA/CD | CSMA/CD | 半双工方式下CSMA/CD | 半双工方式下CSMA/CD |
B. 100Base-T的设备线路传输速率为100Mbps
如果同一局域网的两台设备具有相同的静态MAC地址,则在网络上这两个设备无法正确通信
p坚持CSMA协议适用于时隙信道
p坚持CSMA协议如果监听到信道忙会持续监听(推迟到下一个时隙再监听),直到信道空闲,并以p概率发送数据,1-p概念推迟到下一个时隙
快速以太网仍然使用CSMA/CD协议,采用保持最短帧长不变,而将最大电缆长度减少到100m的方法,使以太网的数据传输速率提高至100Mb/s
吉比特以太网支持流量控制机制,其中IEEE 802.3z采用光纤通道;IEEE 802.3ab采用4对UTP5类线
IEEE802.11 在MAC层使用CSMA/CA协议
令牌环网在源站进行差错控制
广域网使用存储转发式的传输方式
PPP协议 | HDLC协议 |
---|---|
面向字节(字节填充法) | 面向比特 |
提供差错控制,不使用序号和确认机制 | 信息帧使用序号和确认机制 |
全双工通信、点对点、面向连接 | 全双工通信、点对点、面向连接 |
PPP帧比HDLC帧多一个2字节的协议字段($0x0021$表示IP数据报) | 信息帧传输数据及其捎带确认,监督帧流量控制和差错控制,无编号帧建立链路 |
局域网交换机实现的功能主要是在物理层与数据链路层
在本地通信量较大的局域网内主要使用交换机,以降低冲突域
交换机按MAC地址转发,可以实现多端口并行传输
以太网MAC协议提供的是无连接不可靠的协议(不对发送的数据帧进行编号,不要求对方发回ACK确认)
以太网使用曼彻斯特编码,总线形拓扑,
以太网交换机直通交换,在输入端口检测到一个数据帧时,检查帧首部,获取帧的目的地址,启动内部动态查找表转换为相应的输出端口,在输入端与输出端交叉处接通,把数据帧直通到相应的端口,实现交换功能。直通交换只检查帧的目的地址(6B),最短传输延迟为$6\times8bits/Mbps$
交换机所连主机可以同时连通多个端口,使每对相互通信的主机像独占信道一样,进行无碰撞💥的数据传输
交换机所连主机能达到的带宽是每个端口能达到的带宽最大值,集线器所连接主机所能达到的带宽是端口带宽的1/n(n为所连主机数)
网络层
在路由器连接的异构网络中,物理层、数据链路层、网络层的协议可以不相同,而网络层以上的协议必须相同(特定路由器可以连接IPv4与IPv6网络)
路由器分有直接交付与间接交付;当发送站与目的站处于同一网段时,使用直接交付;反之使用间接交付
距离-向量路由协议中,慢收敛导致路由器接受了无效的路由信息最可能导致路由回路问题
路由环路的产生:
当A路由器一侧的X网络发生故障,则A路由器收到故障信息,并把X网络设置为不可达,等待更新周期来通知相邻的B路由器。但是,如果相邻的B路由器的更新周期先来了,则A路由器将从B路由器那学习了到达X网络的路由,就是错误路由,因为此时的X网络已经损坏,而A路由器却在自己的路由表内增加了一条经过B路由器到达X网络的路由。然后A路由器还会继续把该错误路由通告给B路由器,B路由器更新路由表,认为到达X网络须经过A路由,然后继续通知相邻的路由器,至此路由环路形成,A路由器认为到达X网络经过B路由器,而B则认为到达X网络进过A路由器。
- IPv4数据报中首部长度单位4B,总长度单位1B,片偏移单位8B(IPv6的首部长度是8B的整数倍)
TTL
TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息。
ICMP报文作为IP层数据报的数据,加上IP数据报的首部,组成IP数据报发送出去(主要供网络层设备使用),即ICMP报文封装在数据链路层帧中发送
NAT表项需要管理员添加,以便控制一个内网到外网的网络连接。如果发送分组的IP:端口对在NAT表项中找不到,服务器不会转发该分组
DCHP服务器使用主机的以太网地址(MAC地址)标识主机
位于不同子网的主机相互通信时,路由器在转发IP数据报时,重新封装硬件源MAC地址(本路由器)与目的MAC地址(下一条路由器)
处于不同网段的主机必须通过路由器才能进行通信
RIP中每个网络的子网掩码必须相同,RIP2支持CIDR
OSPF协议使用Hello分组来保持与其邻居的连接
BGP交换的可达性信息是到达某个网络所经过的路径
网络地址不同的说明网络不同,需要使用路由器进行连接
IP网关等同于IP路由器
在一个广域网内的所有节点事先知道该广域网能通过的最大分组,因此广域网没有必要进行分片。但当数据报进入某个网络后,MTU可能发生变化,此时可能需要分片。
如果一台主机有两个以太网卡,那么它可以同时连接两个不同的网络(网络号不能相同,否则会发生冲突),这样它需要两个IP地址
IPv6的通信量类字段区分不同的IPv6数据报的类别或优先级(0最低),0-7表示允许延迟,8-15表示高优先级
IPv6流标号字段,所有属于同一个流的数据报都具有同样的流标号
IP组播地址映射为MAC地址方法:将IP地址的后23位转换为十六进制(第24位取0)组成后24位MAC,前24位MAC地址使用MAC地址的组播
在设计组播路由时,为了避免路由环路,构造组播转发树
一个D类地址标志一个组播组
在组播情况下,是适配器NIC而不是CPU决定是否接受一个帧
NIC接受每一个广播帧,然后交付操作系统,由CPU决定是否接收
OSPF协议规定Area0是主干区域,区域路由器是与不同区域相连的路由器
不同局域网的两台主机若想通信,只需将数据包发给路由器即可,由路由器处理其他操作。(不用主机发送ARP报文)
传输层
- TCP拥塞控制的慢启动算法中,发送端每收到一个确认段就将拥塞窗口加一;这样在经过一个RTT后拥塞窗口的大小会加倍(cwnd大小指数式增长)
- TCP拥塞控制的拥塞避免算法中,每经过一轮RTT只增加一个cwnd(线性增加)
- 排序工作由传输层实现;重组工作由网络层实现
- TCP socket 建立的过程
- UDP socket 建立的过程
端口
网络数据进入主机后,首先到达网卡,然后进入内核,由网络协议栈处理(使用socket)
每个进程在内核中都有一个表,保存该进程申请并占用的所有soket描述符。
socket:源IP+port,目的IP+port,建立起进程与端口间的联系。内核根据传输层数据报中的端口找到相应的进程实现进程间的通信
SOcket本质上是一种资源,理论上能够通过sendmsg将socket描述符传递到其他进程。同时,父子进程间,线程间也会进行socket共享。
TCP,UDP分别拥有自己的端口号,它们互不干扰,可以共存于同一台主机
TCP协议规定HTTP服务器进程的端口号为80
TCP采用对报文段确认的确认机制
TCP将收到的报文段组成字节流交给上层
TCP将应用层交付的数据看作一串字节流
MSS是TCP报文的有效载荷长度
UDP不需要处理RTT
TCP、UDP报头都有目的端口号、源端口号、校验号
TCP第三次握手如果不携带数据则不消耗序号
TCP每次收到比期望序号大的失序报文就发送一个冗余ACK
传输层分用:接收方发传输层剥去报文首部后,能把这些数据正确交付到目的进程(目的端口号是在终点交付报文时使用,源端口号是需要对方回信时使用)
三次握手
两次握手的问题
第三次握手主要防止已失效的连接请求报文段突然传输到服务端。
当连接请求(CR)被网络延迟并重传, 导致Host2将重复的CR当做新的CR进行处理。此时服务器会为该链接分配资源,但是Host1并不知道这次连接。由此导致资源浪费
四次握手
四次握手是半关闭的连接释放,都是双方主动释放连接。server端收到FIN消息后,返回FIN ACK,并结束数据传输后再进行连接的释放。
client端的TIME-WAIT阶段需要等待2MSL时间(MSL报文最大存活时间)
- 保证client发送的最后一个ACK报文能够达到server。如果最后一个ACK丢失,server端会在第一个MSL时间内进行超时重传,client就能在2MSL时间内收到重传的连接释放报文,并重新启动TIME-WAIT状态,确保server能够正确收到ACK报文,进入CLOSED状态
- 防止已失效的连接请求报文段出现在本次链接中。client发送最后一个ACK报文段后,如果正确达到server。再经过2MSL,本次连接产生的所有报文段(因为网络拥塞等问题在网络中留存的报文)都会从网络中消失。
TCP keepalive
定义一个时间段,在这个时间段内,如果没有任何连接相关的活动,TCP 保活机制会开始作用,每隔一个时间间隔,发送一个探测报文,该探测报文包含的数据非常少,如果连续几个探测报文都没有得到响应,则认为当前的 TCP 连接已经死亡,系统内核将错误信息通知给上层应用程序。在 Linux 系统中,2 小时内如果没有任何连接相关的活动,则会启动保活机制。而每次的检测间隔为75秒,检测 9 次无响应,认为对方是不可达的,从而中断本次的连接。也就是说最少需要经过 2 小时 11 分 15 秒才可以发现一个「死亡」连接。一般的,web 服务软件一般都会提供 keepalive_timeout
参数,用来指定 HTTP 长连接的超时时间
应用层
DNS | FTP | 电子邮件📧 | WWW |
---|---|---|---|
UDP(53端口) | TCP(控制连接21端口、数据连接20端口) | TCP(SMTP 25端口、POP3 110端口、IMAP) | TCP(HTTP 80端口) |
递归查询、迭代查询 | 主动模式、被动模式 | 持久化连接、流水线 | |
根域名服务器、顶级域名服务器、授权域名服务器、本地域名服务器 | |||
- 客户机是面向用户的,服务器是面向任务的
- 多个不同的域名可以共用一个IP地址,访问一台服务器
- CNAME记录用于将一个域名(同名)映射到另一个域名(真实名称),域名解析服务器遇到CNAME记录会以映射到的目标重新开始查询
VPN
通过VPN访问内网时,实际是在访问VPN服务器,再由VPN服务器访问内网。同时通过数据加密技术封装一条虚拟数据通信隧道,保障了网络通讯是安全私密的。也就是正向代理
SSH
非对称加密
client使用server提供的公钥对信息进行加密,发送给server。server使用自己独有的私钥对加密信息进行解密,获取信息。
中间人攻击
攻击者中途拦截client请求公钥的信息,并发送自己的公钥。client使用攻击者的公钥加密,攻击者使用自己的私钥解密,即可得到client的信息
基于口令的认证
为了防止中间人攻击,需要对获得的公钥进行认证。在https中可以通过CA来进行公证。而在SSH中公钥私钥都是自己生成的,只能通过client端自己对公钥进行确认。host被确认后,被追加到known_host中。此时再进行登录操作
基于公钥的认证
Client端的public key需要Client手动Copy到Server端。Server端在authorized_keys中匹配到Client的公钥后,会生成随机数R,并用Client的公钥对该随机数进行加密,然后将加密后信息发送给Client,Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。Server端会也会对R和SessionKey利用同样摘要算法生成Digest2,最后比较Digest1和Digest2是否相同,完成认证过程。
FTP
- 匿名FTP访问通常使用anonymous作为用户名,该用户ID的密码可以是任何字符串
FTP服务器运行一个主进程,负责接收新的请求;以及若干个从属进程,负责处理单个请求。
服务器主进程接收新的请求后(第一次登陆请求,第二次读取文件请求),服务器使用20号端口创建数据传输进程和TCP数据连接到客户端发送的接收文件的随机端口(实际的文件传输连接)。
数据传输进程实际完成对文件的传输。传输完毕后关闭“数据传送连接”,并结束运行
FTP客户端发送的控制连接发送给服务器端控制进程(建立TCP链接到服务器的21端口,发送登录账号与密码),并在整个会话期间一直保持打开。
收到服务器返回的登陆成功信息后,客户端打开一个随机端口,并将该端口发送给服务器,从这个端口接收文件。
电子邮件
- POP3协议在传输层使用明文传输密码,并不对密码进行加密🔐
- SMTP协议用于用户代理向邮件服务器发送邮件、邮件服务器间发送邮件(不支持邮件服务器向用户代理发送邮件)
- POP3协议用于用户代理从邮件服务器读取邮件
- SMTP协议只支持7比特的ASCII码内容
- MIME邮件支持非ASCII码的编码规则(图片、视频等)
WWW
- 请求一个万维网文档所需的时间=该文档传输时间+两倍的RTT(一次RTT建立TCP连接,另一个RTT用于请求文档和接收文档,即主机的第三次握手携带请求信息)
- 浏览器只会在先前访问过的网站上留下Cookie
- Cookie是服务器产生的
- 使用浏览器访问WWW服务器的第一步是DNS解析,获取IP地址
客户端的 www浏览器获得 www服务器的主页并显示在客户端的屏幕上的过程如下(假设访问天勤论坛,域名为 www.csbji.com):
- WWW 浏览器直接使用名称 www.csbiji.com 访问该www 服务器,首先需要完成对该服务器的域名解析,并最终获得天勤论坛服务器对应的IP 地址 116.255.187.175。
- www 浏览器将通过TCP 协议与服务器建立一条TCP 连接。当 TCP 连接建立之后,wwW 浏览器就向 www 服务器发送要求获取其主页的 HTTP请求。
- www 服务器在接收到浏览器的 HTTP 请求之后,将构建所请求的 web 页面必需的各种信息,并将信息通过 Internet 传送给客户端的浏览器。
- 浏览器将收到的信息进行解释,然后将web页面显示在用户的屏幕上。
HTTP 报文格式
HTTP 请求由请求行、请求头部、空行和请求体四个部分组成。
- 请求行:包括请求方法,访问的资源 URL,使用的 HTTP 版本。
GET
和POST
是最常见的 HTTP 方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE
。 - 请求头:格式为“属性名:属性值”,服务端根据请求头获取客户端的信息,主要有
cookie、host、connection、accept-language、accept-encoding、user-agent
。 - 请求体:用户的请求数据如用户名、密码等。
HTTP 响应也由四个部分组成,分别是:状态行、响应头、空行和响应体。
- 状态行:协议版本,状态码及状态描述。
- 响应头:响应头字段主要有
connection、content-type、content-encoding、content-length、set-cookie、Last-Modified、Cache-Control、Expires
。 - 响应体:服务器返回给客户端的内容。
HTTP1.0 和 HTTP1.1 的区别
- 长连接:HTTP1.0 默认使用短连接,每次请求都需要建立新的 TCP 连接,连接不能复用。HTTP1.1 支持长连接,复用 TCP 连接,允许客户端通过同一连接发送多个请求。不过,这个优化策略也存在问题,当一个队头的请求不能收到响应的资源时,它将会阻塞后面的请求。这就是“队头阻塞”问题。
- 断点续传:HTTP1.0 不支持断点续传。HTTP1.1 新增了 range 字段,用来指定数据字节位置,支持断点续传。
- 错误状态响应码:在 HTTP1.1 中新增了 24 个错误状态响应码,如
409(Conflict)
表示请求的资源与资源的当前状态发生冲突、410(Gone)
表示服务器上的某个资源被永久性的地删除。 - Host 头处理:在 HTTP1.0 中认为每台服务器都绑定一个唯一的 IP 地址,因此,请求消息中的 URL 并没有传递主机名。到了 HTTP1.1 时代,虚拟主机技术发展迅速,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个 IP 地址,故 HTTP1.1 增加了 HOST 信息。
HTTP1.1 和 HTTP2.0 的区别
HTTP2.0 相比 HTTP1.1 支持的特性:
- 新的二进制格式:HTTP1.1 基于文本格式传输数据;HTTP2.0 采用二进制格式传输数据,解析更高效。
- 多路复用:在一个连接里,允许同时发送多个请求或响应,并且这些请求或响应能够并行地传输而不被阻塞,避免 HTTP1.1 出现的“队头堵塞”问题。
- 头部压缩,HTTP1.1 的 header 带有大量信息,而且每次都要重复发送;HTTP2.0 把 header 从数据中分离,并封装成头帧和数据帧,使用特定算法压缩头帧,有效减少头信息大小。并且 HTTP2.0 **在客户端和服务器端记录了之前发送的键值对,对于相同的数据,不会重复发送。**比如请求 a 发送了所有的头信息字段,请求 b 则**只需要发送差异数据**,这样可以减少冗余数据,降低开销。
- 服务端推送:HTTP2.0 允许服务器向客户端推送资源,无需客户端发送请求到服务器获取。
HTTPS 与 HTTP 的区别
- HTTP 是超文本传输协议,信息是明文传输;HTTPS 则是具有安全性的 ssl 加密传输协议。
- HTTP 和 HTTPS 用的端口不一样,HTTP 端口是 80,HTTPS 是 443。
- HTTPS 协议需要到 CA 机构申请证书,一般需要一定的费用。
- HTTP 运行在 TCP 协议之上;HTTPS 运行在 SSL 协议之上,SSL 运行在 TCP 协议之上。
GET和POST的区别
概括:
- 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
- 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
区别: - get参数通过url传递,post放在request body中。
- get请求在url中传递的参数是有长度限制的,而post没有。
- get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。
- get请求只能进行url编码,而post支持多种编码方式。
- get请求会浏览器主动cache,而post支持多种编码方式。
- get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。
- GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
- GET产生一个TCP数据包;POST产生两个TCP数据包。