面试高频知识点总结(一)——计算机网络

五层协议

  1. 应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。
  2. 运输层:提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。
  3. 网络层:为主机之间提供服务,而不是像运输层协议那样是为主机中的进程提供服务。网络层把运输层产生的报文段或者用户数据报封装成分组来进行传输。
  4. 数据链路层:网络层针对的还是主机之间,而主机之间可以有很多链路,链路层协议就是为相邻结点之间提供服务。数据链路层把网络层传来的分组封装成帧。
  5. 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使物理层上的数据链路层感觉不到这些差异。

数据在各层之间的传递作用

再向下的过程中,需要添加下层协议所需要的首部或者尾部,而再向上的过程中,不断拆开首部和尾部。
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。

TCP/IP体系结构

它只有四层,相当于五层协议中数据链路层和物理层并为网络接口层。

UDP和TCP的特点

UDP(User Datagram Protocol):用户数据包协议
TCP(Transmission Control Protocol):传输控制协议

UDP 是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)。

TCP 是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块)

TCP的三次握手

在这里插入图片描述
假设 A 为客户端,B 为服务器端。

  1. 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
  2. A 向 B 发送连接请求报文段,SYN=1,ACK=0,选择一个初始的序号 x。
  3. B 收到连接请求报文段,如果同意建立连接,则向 A 发送连接确认报文段,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
  4. A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
  5. B 收到 A 的确认后,连接建立

TCP的四次挥手

  1. A 发送连接释放报文段,FIN=1;
  2. B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据;
  3. 当 B 要不再需要连接时,发送连接释放请求报文段,FIN=1;
  4. A 收到后发出确认,此时连接释放。

TIME_WAIT

客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间。这么做有两个理由:

  • 确保最后一个确认报文段能够到达。如果 B 没收到 A 发送来的确认报文段,那么就会重新发送连接释放请求报文段,A 等待一段时间就是为了处理这种情况的发生。
  • 可能存在“已失效的连接请求报文段”,为了防止这种报文段出现在本次连接之外,需要等待一段时间。

TCP停止等待协议

1、无差错情况

在这里插入图片描述

2、出现差错

在这里插入图片描述
B接收到M1时检测出了错误,就丢弃M1,其他什么也不做(不通知A收到有差错的分组)。也可能时M1在传输过程中丢失了,这时B当然什么也不知道。这两只情况下,B都不会发送任何信息。

TCP是这样设计的:
A只要超过了一段时间仍然没有收到确认,就认为刚发送的分组丢失了,因而重传前面发送过的分组。

3、确认丢失

在这里插入图片描述
B所发送的对M1的确认丢失了。A在设定的超时重传时间内没有收到确认,并无法知道是自己发送的分组出错丢失或者是B发送的确认丢失了,因此A在超时计时器到期后就重传M1.现在应关注B的动作,假定B有收到了重传的分组M1,这是会采取两个行动:

  1. 丢弃这个重复的分组M1,不向上层交付。
  2. 向A发送确认。
4、确认迟到

在这里插入图片描述

传输过程中没有出现差错,但B对分组M1的确认迟到了。A会收到重复的确认。对重复确认的处理也很简单:收下后就丢弃。B仍会收到重复的M1,并且同样要丢弃重复的M1,并重传确认分组。

TCP拥塞控制

拥塞控制和流量控制的区别

流量控制针对的是点对点之间的(发送方和接收方)之间的速度匹配服务,因为接收方的应用程序读取的速度不一定很迅速,而接收方的缓存是有限的,就需要避免发送的速度过快而导致的问题。拥塞控制是由于网络中的路由和链路传输速度限制,要避免网络的过载和进行的控制。

拥塞控制算法

拥塞控制算法主要包含了三个部分:慢启动、拥塞避免和快速回复

1、慢启动
慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。一般一开始为1个MSS,之后翻倍这样来增加,呈指数增长。其中1、慢启动过程有一个阈值ssthresh,一旦到达阈值就进入拥塞避免模式。这是第一种离开结束慢启动的方式2、如果收到了一个丢包提示,就将cwnd设为1并且重新开始慢启动过程,这时要把阈值ssthresh设为当前cwnd值的一半。3、如果收到了三次冗余的ACK,就执行一次快速重传并且进入快速恢复状态,这是最后一种结束慢启动的过程。

2、拥塞避免
进入拥塞避免说明cwnd值大约是上一次遇到拥塞是的一半,这时候不能翻倍,而是将cwnd的值每次增加一个MSS。结束的过程有两种可能:1、当出现超时时,将cwnd值设为1个MSS,并且将ssthresh阈值设为当前cwnd值的一半。2、当收到三个冗余ACK时,将ssthresh阈值设为当前cwnd值的一半,并且将cwnd值设为当前cwnd值的一半加3,即ssthresh阈值加3,并且进入快速恢复状态。

3、快速恢复
快速恢复就是指进入快速恢复前的一系列操作,即将ssthresh阈值设为当前cwnd值的一半,并且将cwnd值设为当前cwnd值的一半加3,即ssthresh阈值加3,之后进入拥塞避免状态,即每次cwnd的值加1个MSS。

HTTP 请求报文

  • 常用的 HTTP 请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;

  • GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。

  • POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;

  • 请求头部:请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

    1. User-Agent:产生请求的浏览器类型;
    2. Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
    3. Accept-Language:客户端可接受的自然语言;
    4. Accept-Encoding:客户端可接受的编码压缩格式;
    5. Accept-Charset:可接受的应答的字符集;
    6. Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
    7. connection:连接方式(close 或 keepalive);
    8. Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
  • 状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:

    • 1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
    • 2xx:表示服务器已成功接收到请求并进行处理;
    • 3xx:表示服务器要求客户端重定向;
    • 4xx:表示客户端的请求有非法内容;
    • 5xx:表示服务器未能正常处理客户端的请求而出现意外错误;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值