请教我学计网(一)网络结构与协议

OSI与TCP/IP各层结构

avatar

  1. 应用层:通过应用进程间的交互来完成特定的网络应用。包括DNS,HTTP,DNS等协议。
  2. 运输层:向两台主机进程之间的通信提供通⽤的数据传输服务(包括TCP和UDP协议) 。
  3. 网络层:计算机⽹络中进⾏通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信⼦⽹。⽹络层的任务就是选择合适的⽹间路由和交换结点, 确保数据及时传送 。(网络层使用IP协议)
  4. 数据链路层:两台主机之间的数据传输,总是在⼀段⼀段的链路上传送的,这就需要使⽤专⻔的链路层的协议。 在两个相邻节点之间传送数据时, 数据链路层将⽹络层交下来的 IP 数据报组装成帧 。
  5. 物理层:实现相邻计算机节点之间⽐特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异 。

TCP三次握手与四次挥手

三次握手

avatar
  1. 三次握手过程:客户端(syn)→服务端(syn/ACK)->客户端(ACK)->服务端

  2. 为什么要三次握手:

    建⽴可靠的通信信道

    双⽅确认⾃⼰与对⽅的发送与接收是正常的

    第一次:s1(无) s2(s1发送正常,s2接收正常)

    第二次:s1(s2 收发正常, s1收发正常) s2(同上)

    第三次:s1(同上) s2(s1收发正常,s2收发正常)

  3. 为什么要传回syn:用来确认信道无误,接收到的就是发送方传来的同一个syn

  4. 为什么传回syn还要传回ack:syn用来确认s1到s2的信道无误,而ack用来后续判断s2到s1的信道是否有误

    四次挥手

  5. 四次挥手过程: s1(FIN) -> s2(ACK,FIN) -> s1(ACK) -> s2

  6. 为什么建立连接是三次握手,而断开需要四次挥手:s2在接收到s1的断开请求后,只是表示s1不会再发送数据了,但可以接收数据,自身可能也有数据需要发送,所以FIN和ACK分开发送。

TCP与UDP的区别

UDP多用于即时通信:如qq语音视频等

TCP ⼀般⽤于⽂件传输、发送和接收邮件、远程登录等场景

TCP如何保证可靠传输

保证可靠传输

  1. 划分应用数据为合适的数据块

  2. 给发送的包编号,接收方排序后传送给应用层

  3. 校验和: 保持TCP首部和数据的校验和。有差错则丢弃

  4. 接收端丢弃重复数据

  5. 流量控制: TCP连接双方有固定大小的缓存空间。值允许接受缓存区能够容纳的数据,当来不及处理时,提示发送方降低发送速率,防止包丢失。(TCP利用滑动窗口实现流量控制。)

  6. 拥塞控制:网络拥塞时,减少数据的发送

  7. ARQ协议: 没发完一个分组后停止发送,等待对方确认后继续下一组

  8. 超时重传:在定时器时长内未能接收到确认信息,重发报文段。

ARQ协议

  1. 停止等待ARQ:

每发完⼀个分组就停⽌发送,等待对⽅确认(回复ACK)。如果过了⼀段时间(超时时间后),还是没有收到 ACK 确认,说明没有发送成功,需要重新发送,直到收到确认后再发下⼀个分组;

若接收⽅收到重复分组,就丢弃该分组,但同时还要发送确认

优:简单

缺:信道利用率低,等待时间长

  1. 连续ARQ协议:

发送⽅维持⼀个发送窗⼝,凡位于发送窗⼝内的分组可以连续发送出去,⽽不需要等待对⽅确认。接收⽅⼀般采⽤累计确认,对按序到达的最后⼀个分组发送确认,表明到这个分组为⽌的所有分组都已经正确收到了

优:信道利⽤率⾼,容易实现,即使确认丢失,也不必重传

缺:不能向发送⽅反映出接收⽅已经正确收到的所有分组的信息 (可能需要重传在分组中丢失号数据之后的全部数据)

滑动窗口和流量控制

流量控制是为了控制发送⽅发送速率,保证接收⽅来得及接收 。

接收方ack报文中通过设置窗口字段大小来影响发送方的发送速率

拥塞控制

  1. 拥塞控制是⼀个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低⽹络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。

  2. TCP 发送⽅要维持⼀个 拥塞窗⼝(cwnd) 的状态变量。拥塞控制窗⼝的⼤⼩取决于⽹络的拥塞程度,并且动态变化。发送⽅让⾃⼰的发送窗⼝取为拥塞窗⼝和接收⽅的接受窗⼝中较⼩的⼀个

  3. 拥塞控制采用的四种算法:慢开始、拥塞避免、快重传、快恢复

    (1)慢开始:先探测⼀下,即由⼩到⼤逐渐增⼤发送窗⼝,也就是由⼩到⼤逐渐增⼤拥塞窗⼝数值。cwnd初始值为1,每经过⼀个传播轮次, cwnd加倍

    (2)拥塞避免:让拥塞窗⼝cwnd缓慢增⼤,即每经过⼀个往返时间RTT,就把发送方的cwnd加1

    (3)快重传和快恢复(FRR):没有 FRR,如果数据包丢失了, TCP 将会使⽤定时器来要求传输暂停 .有了 FRR,如果接收机接收到⼀个不按顺序的数据段,它会⽴即给发送机发送⼀个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并⽴即重传这些丢失的数据段。

    有了 FRR,就不会因为重传时要求的暂停被耽误。 当有单独的数据包丢失时,快速重传

    和恢复(FRR)能最有效地⼯作。当有多个数据信息包在某⼀段很短的时间内丢失时,它则

    不能很有效地⼯作