计算机网络知识点整理

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/计算机网络面试题/
作者
Panyurou
发布于
2022年8月15日
许可协议