七层,五层,四层网络协议
IP抵制分类
三次握手四次挥手
这部分不用细说了吧,看过计网的都背吐了
交换机和路由器的区别
- 交换机工作于数据链路层,能识别 MAC 地址,根据 MAC 地址转发链路层数据帧。具有自学机制来维护 IP 地址与 MAC 地址的映射
- 路由器位于网络层,能识别 IP 地址并根据 IP 地址转发分组。维护着路由表,根据路由表选择最佳路线
TCP如何保证可靠
- 确认和重传机制:ARQ协议加超时重传
- 数据校验:校验和
- 数据合理分片和排序:(重复的也会被丢弃)
- 流量控制拥塞控制
TCP和UDP区别
- 有无链接
- 是否可靠
- 字节流和数据报
阻塞和非阻塞I/O区别
- 如果内核缓冲没有数据可读时,read()系统调用会一直等待有数据到来后才从阻塞态中返回,这就是阻塞I/O
- 非阻塞I/O在遇到上述情况时会立即返回给用户态进程一个返回值,并设置errno为EAGAIN。
Reactor和Proactor区别
- Reactor模式是同步I/O,处理I/O操作的依旧是产生I/O的程序;Proactor是异步I/O,产生I/O调用的用户进程不会等待I/O发生,具体I/O操作由操作系统完成。
- 异步需要OS支持,Linux里是AIO
Web 页面请求过程(输入百度发生什么)
- URL解析为IP地址(DNS)【DNS服务器是基于UDP的,因此会用到UDP协议。】
- 浏览器就要与服务器建立一个http连接【HTTP,TCP,ARP】
ARP协议
IP到MAC映射 每个主机都维持一个ARP高速缓存表
- 相同局域网:查表-广播
- 不同局域网:找到本局域网默认网关的硬件地址
HTTP头部
略
HTTP状态码
状态码 | 类别 | 原因短语 |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
2XX 成功
200 OK
204 No Content:请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。
3XX 重定向
301 Moved Permanently:永久性重定向
302 Found:临时性重定向
303 See Other
注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会把 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。
304 Not Modified:如果请求报文首部包含一些条件,例如:If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since,但是不满足条件,则服务器会返回 304 状态码。
307 Temporary Redirect:临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。
4XX 客户端错误
400 Bad Request:请求报文中存在语法错误
401 Unauthorized:该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。如果之前已进行过一次请求,则表示用户认证失败。
403 Forbidden:请求被拒绝,服务器端没有必要给出拒绝的详细理由。
404 Not Found
5XX 服务器错误
500 Internal Server Error:服务器正在执行请求时发生错误
503 Service Unavilable:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
HTTPs 和 HTTP
HTTP + SSL / TLS 服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
- 客户端向服务端发送自己支持的加密协议及版本
- 服务器选一个合适的,并返回自己带有公钥的证书
- 0 客户端验证证书为合法
- 1 客户端生成密钥,用公钥加密
- 服务端解密,获得密钥此时,客户端和服务端均掌握了一个对称的密钥
HTTP1.1 和1.0
- 长连接 : 在HTTP/1.0中,默认使用的是短连接
- 更多的错误状态响应码
- HTTP1.1则引入了更多的缓存控制策略
- 带宽优化及网络连接的使用:允许只请求资源的某个部分,即返回码是206
http2 和 http1
HTTP2.0 的特点 a、HTTP/2采用二进制格式而非文本格式 b、HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个HTTP连接就可以实现多个请求响应 c、使用报头压缩,HTTP/2降低了开销 d、HTTP/2让服务器可以将响应主动“推送”到客户端缓存中
CSRF 和XSS
CSRF(Cross-site request forgery):跨站请求伪造
CSRF防御
- Token 验证
- Referer 验证(只接受本站请求)
XSS(Cross Site Scripting):跨域脚本攻击。
不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)。
两者区别
-
CSRF:需要用户先登录网站A,获取 cookie。XSS:不需要登录。
-
CSRF:是利用网站A本身的漏洞,去请求网站A的api。XSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。