1、OSI七层模型&TCP/IP四层模型
OSI七层模型 | TCP/IP四层模型 | 对应网络协议 | 说明 |
---|---|---|---|
应用层 | 应用层 | HTTP、TFTP、FTP、NFS、WAIS、SMTP | 主要是终端应用,比如说是FTP,web浏览器,QQ |
表示层 | 应用层 | Telnet, Rlogin,SNMP, Gopher | 主要是对接收的数据进行解密、解压缩等(也就是把计算机能够识别的东西转换成人能识别的东西,图片声音等) |
会话层 | 应用层 | SMTP, DNS | 通过传输层建立数据传送的通路。主要在你的系统之间发起会话或者接收会话请求(设备之间需要互相认识可以是IP也可以是MAC地址或者主机名) |
传输层 | 传输层 | TCP, UDP | 定义了一些传输数据的协议和端口号,端口号与网关地址绑定,可以准确的定位到具体的程序,传输协议:TCP,UDP |
网络层 | 传输层 | IP, ICMP, ARP,RARP, AKP, UUCP | 引入了IP协议,标识用户,进行互联网之间的电信号通信 |
数据链层 | 数据链层 | FDDI, Ethernet,Arpanet, PDN, SLIP, PPP | 定义了电信号的分组方式,也就是以太网协议,一个电信号构成一个数据包,包含head和data,这一层通过mac地址(arp协议获取)标识用户,在局域网完成广播通信 |
物理层 | 数据链层 | IEEE 802.1A, IEEE 802.2到IEEE 802.11 | 网线、连接wifi、光缆等,主要功能是基于电器特性发送高低电压(电信号) |
2、TCP和UDP
传输层协议 | 定义以及特点 | 应用场景 |
---|---|---|
TCP | 面向连接,可靠传输,面向字节流,对系统资源要求较多 | 文件传输,电子邮件 |
UDP | 无连接,面向报文,不可靠传说,对系统资源要求较小 | IP电话,视频会议,直播 |
3、http和https
超文本传输协议 | 定义以及特点 |
---|---|
http | 传输的是无状态的,信息是明文传输,默认端口80 |
https | 传输有进行加密和身份认证,默认端口443,需要到ca申请证书 |
4、Cookie和Session----记录客户状态的机制,解决http协议的无状态性
不同的地方 | Cookie | Session |
---|---|---|
存储位置不同 | 将用户数据通过加密的方式保存在客户端,大多数情况Cookie存储在浏览器 | 用于控制客户端和服务端的连接,Session存储在服务器,每个用户产生一个Session,当访问增多,会比较占用服务器的性能 |
存储容量不同 | 单个Cookie保存的数据不得超过4kb,一个站点最多20个Cookie | Session一般情况下没有上限,不过建议不要存放太多东西,否则影响性能 |
隐私策略/安全性不同 | Cookie放在客户端,可以进行Cookie欺骗,所以不安全 | Session放在服务端,更加安全 |
有效期不同 | Cookie可以设置属性达到长期有效 | 只需要关闭窗口Session就会失效,如果Session超时时间过长,容易导致内存溢出 |
应用的场景 | cookie:用户的登录状态,记录用户的习惯,如购物车; | session:登录验证 |
5、Get和POST
不同点 | GET | POST |
---|---|---|
功能 | 从服务器上获取数据 | 向服务器传送数据 |
参数 | 把参数包含在URL中 | 通过request body传递参数,将请求信息放置在报文体中 |
数据大小 | 不大于2kb | 数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 |
TCP | 一个TCP数据包(header/data一起) | 两个TCP数据包(先header,再data) |
缓存 | 可以被浏览器缓存或者加为书签 | 不支持 |
安全性 | 低(参数在url可见) | 高 |
编码类型 | url编码 | 支持多种 |
6、HTTP协议
- 一种用于客户端和服务器之间传输文字、图片、音频、视频等超文本数据的约定和规范
- 优点
- 灵活性高,可扩展性强,从http1.0到http1.1再到http2.x,http协议一直在扩展新的属性。
- http是可靠的数据传输协议(底层的TCP协议会确保传输内容顺序的正确性以及确保不会在传输过程中丢包)
- 请求应答有来有回
- 无状态的每一个请求都是相互独立的,默认不需要保存上下文的信息。
- 缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此可能会遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
- 请求报文(request message)---请求行+请求头部+请求数据
- 常用的请求首部:
-
Accept
- Accept: text/html 浏览器可以接受服务器回发的类型为 text/html。
- Accept: / 代表浏览器可以处理所有类型
- Accept-Encoding: gzip, deflate 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)
- Accept-Language: zh-CN,zh;q=0.9 浏览器申明自己接收的语言。
-
Connection
- Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连
- Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。
-
Host: www.baidu.com 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。
-
Referer: https://www.baidu.com/?tn=62095104_8_oem_dg 当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。
-
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36 告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。
-
Cache-Control
- Cache-Control: private 默认为private 响应只能够作为私有的缓存,不能在用户间共享
- Cache-Control: public 响应会被缓存,并且在多用户间共享。正常情况, 如果要求HTTP认证,响应会自动设置为 private.
- Cache-Control: must-revalidate 响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。
- Cache-Control: no-cache 响应不会被缓存,而是实时向服务器端请求资源。
- Cache-Control: max-age=10 设置缓存最大的有效时间,但是这个参数定义的是时间大小(比如:60)而不是确定的时间点。单位是[秒 seconds]。
- Cache-Control: no-store 在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。
-
Cookie:是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见)
-
Range(用于断点续传): bytes=0-5 指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。