详解 HTTP

关键字: TCP/IP 四层模型
TCP/IP 协议族是指通常与网络相关联的协议集合, 分为四层: 应用层(HTTP, DNS, FTP, SSH, SMTP), 传输层(TCP, UDP), 网络层(IP, ARP), 数据层(操作系统、网卡、驱动、光纤等)
HTTP 数据 -> TCP 首部 (HTTP 数据) -> IP 首部 (TCP 首部 (HTTP 数据)) -> 以太网首部 (IP 首部 (TCP 首部 (HTTP 数据)))
我们把这种数据信息包装的做法称之为 封装(encapsulate)
ARP 是一种解析地址的协议, 根据 IP 查出 MAC 地址
TCP 三次握手(SYN - SYN/ACK - ACK) 后建立连接, 进行 HTTP 数据通信, 在四次挥手后断开连接(FIN - ACK - FIN - ACK)
URL 是 URI 的子集
关键字: HTTP 协议
HTTP 是不保存状态的协议(stateless), Session, Cookie 技术解决于此
HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范, 规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体
支持的 Method: GET/POST/PUT/DELETE/HEAD/OPTIONS/TRACE/CONNECT
查询服务端支持的方法: OPTIONS * HTTP/1.1
每次访问都要建立 TCP 的四次握手, 因此 keep-alive 可以持久化连接, 期间进行数据通信
管道(pipelining) 是将多个 HTTP 请求整批提交的技术(请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3), 仅 HTTP/1.1 支持此技术, 只有 GET 和 HEAD 请求可以进行管线化
关键字: HTTP 报文
HTTP 报文分为: 报文首部 + CRLF + 报文主体, 其中请求报文的主体一般为空
提升传输速率的方式有: 压缩 和 分块传输
关键字: HTTP 状态码
1XX: 信息性状态码(Informactional), 接收的请求正在处理
2XX: 成功状态码(Success), 请求正常处理完毕
3XX: 重定向状态码(Redirection), 需要进行附加操作以完成请求
4XX: 客户端错误状态码(Client Error), 服务器无法处理请求
5XX: 服务器错误状态码(Server Error), 服务器处理请求出错
关键字: HTTP 首部
Content-Type: 标识报文主体的对象类型
Cache-Control: 缓存控制, 强刷是 no-cache
Connection: keep-alive or close 持久化连接
Upgrade: 用于检测 HTTP 协议及其他协议是否可使用更高的版本进行通信
Accept: text/html, text/plain, text/css, application/xhtml+xml, application/xml, image/jpeg, image/gif, image/png, video/mpeg, video/quicktime, application/octet-stream, application/zip
关键字: HTTPS
HTTPS = 加密 + 认证 + 完整性保护 + HTTP
HTTPS 并非是应用层的一种新协议, 只是 HTTP 通信接口部分用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security) 协议代替而已, HTTP - > SSL -> TCP = HTTPS
SSL 是广泛使用的网络安全技术, 核心就是公开密钥加密的加密处理方式
HTTPS 通信步骤: 1-9 步建立 SSL, 10 - 11 进行数据传输, 12 断开

HTTPS 慢, 认证需要证书, 贵
关键字: HTTP 认证
四种方式: BASIC, DIGEST, SSL客户端认证, FormBase 基于表单认证
关键字: 追加协议
SPDY: 多路复用流, 赋予请求优先级, 压缩 HTTP 首部, 推送功能, 服务器提示功能
WekSocket: 使用浏览器全双工通信 ws://
WebDAV: 服务器管理文件
HTTP/2.0
关键字: 攻击
XSS: 被动攻击, HTML内置好恶意代码, 等待用户访问触发
CSRF: 被动攻击, 利用已完成认证的用户(Cookie)进行非预期的操作
详解 TCP/IP
关键字: OSI 参考模型
应用层: 针对特定应用的协议
表示层: 设备固有数据格式和网络标准数据格式的转换
会话层: 通信管理, 负责建立和断开通信连接
传输层: 管理两个节点之间的数据传输, 负责可靠传输
网络层: 地址管理与路由选择
数据层: 互连设备之间传送和识别数据帧
物理层: 物理信号(01高低电压)传输
关键字: TCP/IP 协议群
包含了: 应用协议(HTTP, SMTP, FTP, TELNET, SNMP), 传输协议(TCP, UDP), 网际协议(IP, ICMP, ARP), 路由控制协议(RIP, OSPF, BGP)
RFC 全称为 Request For Comment: 征求意见文档, 目前在互联网上有各种 RFC 的文档标识声明
UDP 应用于 广播, 多播, 单播, 任播等通信和多媒体领域
FTP 进行文件传输时会建立两个 TCP 连接, 分别是发出传输请求时所要用到的控制连接和实际传输数据所要用到的数据连接

关键字: 数据链路
网络拓扑: 总线型, 环型, 星型, 网状型
半双工与全双工通信: 只发送或者只接收的通信方式称为半双工, 同时发送接收的称为全双工
无线通信种类: RFID, 蓝牙(PAN), Wi-Fi(LAN), WiMAX(MAN), 通信网络(WAN)
PPP 指 1对1 连接计算机的协议, 点对点
关键字: IP 协议
IP(Internet Protocol): IP 寻址、路由、IP 分包与组包 三大作用模块, IP 为了实现简单化与高速化采用面向无连接的方式
IP 地址: 32位正整数, 最多允许 43 亿台计算机连接到网络, 每个网卡(NIC)都会配置一个地址, 一台路由器至少两个地址
网络标识表明网段, 同一网段内的网络标识必须相同, 主机标识表明主机号, 同一网段内不允许重复
192.168.128.11/24 24 表示从头数到第几位为止属于网络标识, 11 是主机标识, 路由器根据网络标识转发包
根据网络标识位数不同而分类: A类(8位, 首位0), B类(16位, 首位10), C类(24位, 首位110), D类(32位: 多播)
主机标识全部为1, 就成了广播地址
子网掩码: 实际上就是将原来 A 类, B类, C类等分类中的主机地址部分用作子网地址, 可将原网络分为多个物理网络
32位, 对应 IP 地址网络标识部分全部为 1, 对应 IP 地址主机标识部分全部为 0
路由: netstat -rn
IPv6 地址: 128位正整数

关键字: DNS, ICMP, ARP, NAT
DNS: 如同互联网中的分布式数据库, 主机名与 IP 地址的对应信息叫做 A 记录, 反之, 从 IP 地址检索主机名称的信息叫做 PTR
CNAME: 主机别名对应的规范名称, A: 主机名的IPv4地址, AAAA: 主机名的IPv6地址
APR: 用于IP 解析为 MAC 地址的协议, RARP: MAC 地址定位 IP 的协议
ICMP: 用于确认 IP 包是否成功送达目标地址, 通知在发送过程中 IP 包被废弃的具体原因, 改善网络设置等
DHCP: 用于分配 IP 地址, 即插即用
NAT: 用于在本地网络中使用私有地址, 在连接互联网时转而使用全局 IP 地址的技术
关键字: TCP, UDP
通信中通常采用 5 个信息来识别一个通信, 他们是: TCP 首部(源 IP 地址, 目标 IP 地址, 协议号), IP 首部(源端口号, 目标端口号), 只要其中某一项不同, 则被认为是其他通信
端口号由其使用的传输层协议决定, ssh 22, https 443, ftp 21, dns 53, snmp 161
UDP 适用于 包总量较少的通信(DNS, SNMP等), 视频、音频等多媒体通信(即时通信), 限定于 LAN 等特定网络中的应用通信, 广播通信
TCP 确认应答和窗口控制
TCP 通过肯定的确认应答(ACK) 实现可靠的数据传输
TCP 通过窗口提高传输速度, 窗口大小是指无需等待确认应答而可以继续发送数据的最大值
因此, 在窗口比较大, 又出现报文段丢失的情况下, 同一个需要的确认应答将会被重复不断的返回, 而发送端主机如果连续3次收到同一个确认应答, 就会将其所对应的数据进行重发, 这种机制比之前提到的超时管理更加高效
拥塞控制及慢启动
简单的说,就是TCP传输过程中,为了避免一下子将网络冲爆,引入的机制。而慢启动,顾名思义,一开始慢慢传,发现没有问题,再增加传输速度。而一旦发现传输有超时,协议会认为网络拥堵,又降低传输速度。
起始的传输速度,就是由初始拥塞窗口,initial congestion window,简称initcwnd参数控制的
关键字: 路由协议
路由算法: 距离向量算法, 链路状态算法
主要路由协议: RIP(base on UDP), RIP2(base on UDP), OSPFbase on IP), EGP(base on IP), BGP(base on TCP)