计算机网络常见问题

简单记录计算机网络中的常见概念和原理

参考:

Http和Https的区别

Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:

  • 端口不同:http是80,https是443
  • 资源消耗:https消耗更多的CPU和内存资源
  • 开销:Https需要证书,采用了加密机制

三次握手和四次挥手

  • 三次握手(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功)
    • 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认
    • 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K
    • 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功
  • 四次挥手(我要和你断开链接;好的,断吧;我也要和你断开链接;好的,断吧)
    • 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态
    • 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
    • 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
    • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
  • 为什么TCP链接需要三次握手?
    • 防止 已失效的链接请求报文突然又传送到了服务端。服务端一直白白等待客户端发来的连接,导致浪费资源

对称加密和非对称加密

  • 对称密钥加密是指加密和解密使用同一个密钥的方式。
  • 非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

TCP协议如何来保证传输的可靠性

  • 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据。
  • 对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。
  • 丢弃重复数据:对于重复数据,能够丢弃重复数据。
  • 超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
  • 流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出

POST和GET的区别

  • GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源
  • POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全
  • GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的

DDOS攻击

  • 定义:客户端向服务端发送请求链接数据包,服务端向客户端发送确认数据包,但是客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认
  • 预防办法:减少接收请求的数量;减少半链接time out的时间;关闭不必要的服务

TCP和UDP的区别

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议,它们之间的区别包括:

  • TCP是面向连接的、可靠的,UDP是无连接的、不可靠的;
  • TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式
  • TCP是面向字节流的,UDP是面向报文的
  • TCP有拥塞控制机制;UDP没有拥塞控制

输入网址到获取页面的过程

  • 浏览器查询DNS(浏览器本地DNS缓存、本地DNS服务器、递归向上查询)
  • 浏览器根据ip向服务器请求链接,发起三次握手
  • TCP/IP建立起来了,浏览器向发送服务器Http请求
  • 服务器根据路径参数处理结果并返回视图
  • 浏览器解析并渲染视图,呈现一个页面

Session、Cookie

Cookie和Session都是客户端与服务器保存状态的方案。Cookie机制在客户端保持状态,Session机制在服务端保持状态。

  • Cookie:Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,而客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
  • Session:客户端请求服务器,如果服务器记录该用户状态,就获取Session来保存状态,这时,如果服务器已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用;如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,并将这个sessionid在本次响应中返回给客户端保存。保存这个sessionid的方式可以采用 cookie机制。(Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID)

TCP的拥塞处理

防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。

  • 慢启动:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小
  • 拥塞避免:每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍
  • 快重传:快重传要求接收方在收到一个 失序的报文段 后就立即发出 重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。
  • 快恢复:快重传配合使用的还有快恢复算法,当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半(不是从新开始,而是从发生拥塞的窗口大小的一半开始+1)

TCP/IP协议模型

  • 物理层:实现了相邻计算机节点之间比特流的透明传送
  • 数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
  • 网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径
  • 传输层:在源端与目的端之间提供可靠的透明数据传输,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信
  • 应用层:为用户的应用进程提供网络通信服务

常见状态码

  • 1xx:请求处理中,请求已被接受,正在处理
  • 2xx:请求成功
  • 3xx:重定向,要完成请求需进一步处理
  • 4xx:客户端错误,请求不合法
  • 5xx:服务端错误
posted @ 2019-12-30 21:44  冰糖ryj  阅读(183)  评论(0编辑  收藏  举报