网络会出现的问题:
-
数据丢包
-
数据重复
-
数据完整性效验
-
数字转换模拟信号
-
信号衰弱
网络分层
-
OSI 开放系统互连参考模型 7层
-
TCP/IP 协议族 5层(少了表示层、会话层)
发送过程
-
应用层 DNS、HTTP
-
传输层 UDP、TCP
-
网络层 ARP、IP
-
数据链路层 以太网、无线Lan
-
物理层
HTTP协议
超文本传输协议 HyperText Transfer Protocol,HTTP
-
HTTP报文格式
-
起始行 start line:描述请求或响应的基本信息
-
头部字段集合 header:使用key-value形式更详细地说名报文
-
消息正文 entity:实际传输的数据,它不一定是纯文本、可以是图片、视频等二进制数据
-
-
请求行报文格式
-
请求方法:GET \ POST \ PUT \ HEAD
-
请求目标:通常是一个 URL,标记了请求方法要操作的资源
-
版本号:表示报文使用的 HTTP 协议版本
-
-
响应行报文格式
-
版本号:表示报文使用的 HTTP 协议版本
-
状态码:一个三位数,用代码的形式表示处理的结果,例:200是成功,500是服务器错误
-
原因:作为数字状态码的补充,是更详细的解释文字,帮助人理解原因
-
-
HTTP头字段
-
头部字段的格式是 key-value 的形式,用 :分隔,头字段可以任意添加自定义
-
字段名不区分大小写,不允许出现空格
-
可以用 “-” 分隔,不能使用下划线 “_”
-
字段名后面紧跟 “:”,不能有空格,“:”后的字段值可以有多个空格
-
字段的的顺序没有固定
-
字段原则上不能重复,除非这个字段本身的语义允许,例:Set-Cookie
-
-
常用头字段
-
请求字段:请求头中的头字段:Host \ Referer
-
响应字段:响应头中的头字段:Server \ Date
-
通用字段:在请求头和响应头里都可以出现的:Content-type \ Connection
-
HTTP请求的完整过程
-
解析 IP 地址
-
浏览器 从URL 中解析域名
-
浏览器缓存
-
本机域名解析文件 hosts(/etc/hosts)
-
-
步骤一没能获取 ip,则发起 DNS 请求获取 ip
-
-
网络请求
-
TCP 三次握手
-
发起 HTTP 请求
-
HTTP 响应
-
浏览器解析响应报文,渲染页面
-
TCP 四次挥手
-
TCP 协议
TCP Transmission Control Protocol:面向连接的,可靠的,基于字节流的传输层通信协议
特点:
-
基于连接的:数据传输之前需要建立连接
-
全双工的:双向传输
-
字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃
-
流量缓冲:解决双方处理能力的不匹配
-
可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性
-
拥塞控制:防止网络出现恶行拥塞
TCP 连接管理
-
TCP 连接
四元组:源地址、源端口、目的地址、目的端口
-
确认连接:TCP 三次握手
-
同步通信双方初始序列号(ISN,initial sequence number)
-
协商 TCP 通信参数(MSS,窗口信息,指定效验和算法)
-
-
关闭连接:TCP 四次挥手
-
发送 FIN 数据包,代表A不在发送数据
-
收到请求,开始应答,避免了A重新发送 FIN 重试(应答机制)
-
处理完数据之后关闭,关闭连接,及发送 FIN 请求
-
收到请求后发送 ASK 应答,B服务可以释放连接
等待 2MSL 后释放连接
-
防止报文丢失,导致B重复发送FIN
-
防止滞留在网络中的报文,对新建立的连接造成数据扰乱
-
-
查看当前 TCP 连接状态:netstat -tpn
数据可靠性传输
-
重传机制
-
ask 报文丢失
-
请求报文丢失
-
-
滑动窗口协议与累计确认(延时 ask)
HTTPS协议
所有HTTPS请求和响应在发送网络之前,都要进行加密
应用层:HTTP + SSL/TSL
SSL/TSL
SSL:即安全套接层,1994年,改名为 TLS
-
摘要算法
-
MD5 \ SHA1 \ SHA2 \ SHAL 256
-
-
对称加密
-
XOR(异或算法)
-
-
非对称加密
-
DH \ DSA \ RSA \ ECC
-