计算机网络知识点整理
1. get和post的区别
- 表现形式
- get 请求的数据会附在url之后,以?形式分割URL和传输的数据,参数之间以&连接。
- post请求的数据是提交在HTTP的包体中。
- 对数据长度的限制
- get是通过URl提交数据,所以他的长度受浏览器的限制
- post是没有数据长度的限制的,起限制作用的是:服务器的处理能力。
- 安全性
- 与post相比,Get安全性较差。get提交数据的时候,用户名和密码都会明文的出现在URL上。因为登录页面有可能被浏览器缓存,所以其他人查看浏览器的记录,就可以拿到你的账户密码了。
- post参数不会保留在浏览器历史中。
2. http的常用方法
- Get: 使用给定的URL请求资源
- post:将数据发送到服务器,用来创建或者更新资源
- head: 获取报文首部
- Put: 传输数据,与post不同的是,他制定了资源的存放位置,post是由服务器自己决定。
- Delete: 删除文件
- trace: 追踪路径
- permission:访问支持的方法。
3. TCP和UDP的区别与联系
相同点:都是基于IP协议的传输协议。
不同点:
TCP: 面向连接,传输速度慢,可靠性高(TCP在传输数据之前,都会通过三次握手来建立连接),保证数据的准确性,面向字节流
UDP: 面向无连接,传输速度快,可靠性低(尽最大可能交付,如果网络质量不好,就可能丢包),面向报文
使用场景:
- TCP:对通信质量有要求的时候,比如:Http、https、FTP等传输文件的协议,SMTP等传输邮件的协议。kafka中服务端和客户端之间的通信。
- UDP: 通信质量要求不高,但是要求网络通讯速度尽可能快,比如:QQ语音,QQ视频
TCP存在拆包,粘包问题。因为他是面向字节流的,不向UDP那样首部有数据长度,而发送数据,是缓冲区满才会发送,容易造成粘包。接受数据,是缓冲区满了,才会接受,接受时也会造成粘包。
- 解决拆包和粘包问题的方式:
- 发送端给数据加首部
- 设置数据包为制定长度,不够用空格来补
- 给数据加分界标记
- 解决拆包和粘包问题的方式:
4. HTTP的长连接和短连接
- http的长连接和短连接本质上就是:Tcp的长连接和短连接
- 在http1.0 中默认使用短连接,客户端和服务端每进行一次HTTP操作,就建立一次短连接,任务结束就中断。从HTTP1.0 起,默认使用长连接,当一个网页打开完成后,客户端和服务器之间用户传输HTTP数据的TCP连接就不会关闭,客户端再次访问这个服务器,会使用这一条已经建立的连接。可以设置这个保持时间。
- 通过心跳机制维护长连接,客户端发送一个心跳给服务器,服务器给客户一个心跳应答,这样双方就可以知道他们的连接没有断开。
应用场景:
- 长连接:多用于操作频繁,点对点的通讯。
- 短连接:web网站的Http服务一般都使用短连接,因为长连接比较耗费资源。
5. HTTP和HTTPs的区别
Http明文传输,数据都是未加密的,安全性比较差,https(ssl+http)传输过程是加密的,安全性较好,采用混合加密算法。
Http使用80端口,https使用的是443端口
https协议需要到CA(Certificate Authority,数字证书认证机构)去申请证书,一般免费证书比较少,需要一定的费用。
https除了TCP连接响应外,还要进行SSL通信,所以通信速率较低且由于加密解密,也会消耗更多的服务器资源。
SSL是独立与TCP的协议,他也可用来对其他协议的加密
Https 其实就是在HTTP协议的基础上加了:通信加密,证书认证,报文完整性保护,他在所以HTTPS要比HTTP更加耗费资源。
6 加密方式
对称加密:
- 定义:服务器和客户端都拥有一把相同的钥匙,对报文的加密和解密都用的是这把钥匙。
- 流程:刚开始的时候B没有钥匙,A有,那A需要将钥匙发给B,在这个过程中一旦钥匙被攻击者X获取到,加密就失了意义。
非对称加密
- 定义:一把共有密钥,一把私有密钥。公有密钥是公开的,任何人都可以获取,私有的不公开。发送方用公有密钥进行加密,接受方用私有密钥解密。
- 流程:刚开始的时候A拥有一把私有密钥和一把公有公钥,B没有公钥匙,A将公钥发给B,再将通过私有密钥加密后的内容发给B,即使攻击者窃取也只能拿到公钥和加密后的明文,所以比较安全,但是性能比较低。
混合加密
- http首先通过非对称加密来对对称密钥加密,当对称密钥安全传输后,双方则采取对称密钥的方式来进行传输。
7 cookie 和session 的区别和联系
- session是存储在服务器端的,cookie是存储在客户端的。
- cookie不是很安全,因为别人可以分析你存放在本地的cookie进行cookie欺骗,考虑到安全应该放到session。
- 由于session存放在服务器上,所以当访问增多的时候,会比较占用服务器的性能,考虑到服务器性能,
- session一般是通过cookie来实现会话跟踪的。第一次创建session的时候,服务器告诉客户端需要在cookie里记录一个session_id=XX,之后客户端通过http请求来访问服务端的时候,都在请求里带上这个session_id,就可以告诉服务器我是谁了。如果客户端禁用cookie,就需要通过url重写的方式来记录,就是URL上附加一个sid=XXX,这样服务器就知道你是谁了。
计算机网络知识点整理
http://example.com/计算机网络面试题/