一.常识
- TCP/IP协议(簇):
四层 : 链路层 - 网络层 - 传输层 - 应用层
物理层 - 链路层 - 网络层 - 传输层 - 会话层 - 表示层 - 应用层 - 端口 : 程序的入口,用来区分不同的程序.
- 192.168.1.0 : 网络号 ------- 192.168.1.255 : 广播地址 -----C类地址
- 低地址存低位数据为小端,低地址存高位数据为大端
- 子网掩码和ip地址 按位 与 ,可以得到网络号
- 集线器:广播找到目标ip ---- 交换机:可以记录ip地址
- 路由器:连接不同的网络
- ARP根据ip找mac地址,RARP根据mac地址找ip,ICMP协议用来 ping.
二.http
- 请求报文
包含了: 方法, URL, 版本协议, CRLF, 首部字段, 请求主体. - 响应报文
包含了:版本, 状态码, 短语, CRLF, 首部字段, 响应主体. - http请求方式
get,post,head,put,delete,options - get和post的区别
1.get请求参数放在url后面,post放在body里面
2.get请求的参数长度是有限制的(2048字符),post没有
get:获取资源-->安全的不会引起服务端相关数据变化
,幂等的执行一次和执行多次结果一样
,可缓存的
post:处理资源-->非安全的,非幂等的,不可缓存的 - 三次握手:
1.客户端发送syn
2.服务端返回syn+1,ack
3.客户端回复ack
三次握手:防止客户端的重发机制
如果网络延迟,客户端第一次发送给服务器的syn信号没有得到回复,那么客户端就可以进行重发一次;这时候服务器会给客户端发送两条 syn + ack ,导致连理了两条连接...................如果是三次握手的话,第三次握手的时候客户端就可以判断是否丢弃一个连接.
- 四次挥手:
1.客户端发送syn
2.服务端发送ack
3.服务端发送确认断开连接fin,ack
4.客户端回复ack
因为全双工的特性,需要两方都释放 - http特点
1.无连接 2.无状态
保持持久连接: connection:keep-alive time:20 max:10 - 怎么判断一个请求是否结束
1.判断content-length
2.判断chunked,最后会有一个空的chunked块
. - charles抓包工具原理
利用中间人攻击的漏洞. - https建立连接的过程
1.Client发送TLS版本号、支持加密算法、random number c
到 Server.
2.Server返回握手消息商定的算法、random number s、证书
到Client.
3.Client 验证 Server的公钥.
4.Client组装会话密钥
5.使用Server的公钥对预主密钥
进行加密传输
6.Server通过自己的私钥解密预主密钥
7.Server拿到预主密钥
组成合成会话密钥
8.发送加密的握手消息
三.TCP & UDP
---------------------TCP:传输控制协议
都是传输层协议:---------
---------------------UDP:用户数据报协议
- UDP特点: 无连接, 尽最大努力交付, 面向报文
原封不动的发送
* - UDP功能: 复用
多端口复用
----------分用一个UDP数据包可以发送给多个端口
----- 差错检测12字节伪首部
- TCP特点: 面向连接, 可靠传输, 面向字节流
- 可靠传输是指:无差错, 不丢失, 不重复, 按序到达
- 面向字节流:不管发送方一次性提交给tcp的缓冲有多大,tcp会根据实际的情况进行划分.
- 滑动窗口协议: 按序到达就是通过滑动窗口协议实现的
- TCP慢启动特性:慢开始、拥塞避免 : 先发送1个,再发送2个,4个,8个,16个指数增长.
等到16个后,开始17个,18 ,19个,,,,,,2 3个.
等到24个后就拥塞了,然后就重新开始1个,2个,4个-----到12个....13个.. - 快重传、快恢复
四.DNS
- dns解析过程
1.Client发送域名到dns服务器
2.dns服务器返回域名对应的ip地址
3.Client访问ip - DNS解析查询方式
- 递归查询
"我去帮你问一下,我帮你去查"
1.查询本地dns
2.根域dns,返回给本地dns
3.顶级dns,返回给根域dns
4.权限dns,返回给顶级dns - 迭代查询
"我告诉你谁可能知道,你自己去查"
1.查询本地dns
2.本地dns不知道,查询顶级dns
3.顶级dns不知道,说:根域dns会知道,你去问根域dns
4.本地dns查询根域dns
- DNS劫持
钓鱼dns服务器,返回错误ip地址 - DNS劫持和http完全没有关系
- 怎样解决dns劫持
1.httpDNS直接连接服务器的ip,参数有:服务器域名、Client的ip地址
2.长连接
五.session、cookie
http无状态特点的补偿
- cookie : 记录用户状态、区分用户;
状态保存在客户端
cookie覆盖.
cookie删除也是通过cookie覆盖来实现的. - session : 记录用户状态、区分用户;
状态保存在服务器端
session需要依赖cookie实现. - session、cookie的关系
1.Client发送信息到Server
2.Server记录用户状态,生成sessionID,并把sessionID颁发给Client
3.Client发送cookie:sessionID
4.Server通过SessionID辨别是哪个Client.