计算机网络笔记——比较详细

计算机网络


序:计算机概述
1.相关概念
  1. 七层模型中前三层是资源子网,传输层承上启下,后三层是通信子网。

  2. 按分布范围分类,可分为广域网(WAN)、城域网(MAN)、局域网(LAN)和个人区域网(PAN)。传统上,局域网使用广播技术,而广域网使用交换技术。

  3. 按交换技术分类,可分为电路交换网络、报文交换网络(存储转发网络)和分组交换网络(包交换网络)。现在的主流网络都可以看成是分组交换网络。

  4. 速率。主机传送数据的速率,也称为数据率或比特率。最高数据率为带宽。1M带宽指一微秒可以传出去的bit数。测网速是按照byte字节数,带宽是bit比特,所以测速需要除以8。吞吐量,实际上的速率。

  5. 时延(Delay)。指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需要的总的时间,它由四个部分构成:发送时延、传播时延、处理时延和排队时延

  6. 往返时延(Round-Trip Time,RTT)。表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后立即发送确认),总共经历的时延。2倍的传播时延。

  7. 服务数据单元(SDU)+ 协议控制信息(PCI) = 协议数据单元(PDU)

    PDU也是对等层之间传送的数据单位

    物理层PDU为比特

    链路层的PDU为帧

    网络层的PDU为分组(IP数据报)

    传输层的PDU为分段(报文段)

    应用层的PDU是报文

    MTU最大传输单元,1500字节,帧的数据部分的最大长度。每个以太网帧都有最小的长度64 bytes最大不能超过1518 bytes
    MSS最大报文段长度(Maximum Segment Size)就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值

在这里插入图片描述

2.参考模型
  1. OSI是参考模型,法定的。TCP/IP参考模型是事实标准。
1585797359365
  1. 各个模型的作用

    第7层,应用层,具体的软件,协议http/ftp/smtp,DNS
    第6层,表示层,数据处理服务,著名的SSL/TLS加密,压缩等。
    第5层,会话层,不乱,把数据传给各自的应用,中断之后校验点,数据同步。
    
    第4层,传输层,4个作用,可差流用,端口对端口,TCP/UDP
    
    第3层,网络层,4个作用,不差流用(路由,拥塞),IP对IP
    第2层,链路层,4个作用,all差流用。(arp寻址,用(封)帧),MAC对MAC
    第1层,物理层,4个要点,作用,电信号,物理传输介质,信道管理
    
  2. 协议
    在这里插入图片描述

一、物理层
1.作用
  1. 将比特流bit转为电信号在物理传输介质上传输;4点:作用,电信号,物理介质,信道控制。
2.电信号
  1. 电信号:数字信号和模拟信号。电话,电路交换技术,调制解调器。
  2. 码元,固定时长的信号波形、二进制码元,k进制码元。
  3. 中继器,完成信号的复制、调整和放大功能,以此来延长网络的长度。
3.物理传输介质
  1. 传输介质(传输媒介,传输媒体),物理通道,不属于物理层。双绞线(模拟和数字都可以),光纤(光脉冲)
4.信道控制
  1. 信道,传输媒介,某一个方向传输信息的介质。模拟信道,数字信道,无线信道,有线信道。
  2. 对信道的控制,谁先发谁后发等。
二、数据链路层
  1. 封帧,加强物理层传输原始比特流的功能,使其数据bit流逻辑上无差错
  2. 链路是2个节点的物理通道,是点对点,设备对设备的,注意与信道有区别。
  3. 数据链路是逻辑通道。设备有,交换机,网桥,网卡等。
  4. 帧,PDU,加头加尾封装网络层的PDU(IP数据报),该内容最大值为MTU,1500byte不能超过
1.arp协议
  1. 寻MAC地址。交换机这种2层设备没有mac地址,关注与点对点,MAC对MAC。
  2. arp请求帧(以太帧)包含了有sip,下一跳的dip,发送端的MAC地址,想找dip的MAC地址,本地有ARP告诉缓存的话,就直接填上,没有的话MAC就是全F,然后交换机收到全F的mac地址,就会向其所有连接的设备广播,本交换机恰好有这个IP,就返回其MAC,然后就封数据帧上写上目的mac地址,然后就可以传输出去了。若找不到,会找默认网关,因为下一跳总会有一个默认的ip(子网掩码全0),找到该网关(也就是路由器)MAC地址,然后让其再传到其他路由,一直到服务器端虚拟IP处。
  3. 交换机有一个转发表,根据目的mac地址对帧进行转发和过滤。地址(mac)和接口(1,2)。AB-J-CD-J-EF。可以自学习,有一个小本本。同一个接口处就知道在我的网段内,就不会再广播了。
2.封帧
  1. 封帧的作用主要是数逻辑上顺序是正确的,帧头和帧尾的设置,就可以在物理层能够分清帧的起始位置。
  2. 封帧的方法有很多,比如,零比特填充法(5110),转义字符填充法(随便设置一个字符,然后转义)等。
    在这里插入图片描述

在这里插入图片描述

3.差错控制-海明码
  1. 差错的来源于很多,比如噪声,冲击噪声等。
  2. 差错可以分为2中,一个种是帧错,是帧的丢失,重复,错位等;一种是位错,比特位出错,0变1,1变0。
  3. 位错的检测方法有奇偶校验码和海明码(2的n次方,异或位1)
  4. 帧错的检测方法有,帧编号,确认重传机制。
4.流量控制
  1. 即,发的较快,收的较慢的现象。
  2. 数据链路层的流量控制是点对点,若接收方接受能力不足,收不下就不会回复确认。传输层流量控制是端到端的,是接收端给发送端一个窗口公告。
  3. 数据链路层的控制方法有:
    1. 停止-等待协议,1对1,发送一个数据帧就返回一个确认ack,不然就一直等待。对于发送端的数据帧发送过程中丢失了,若超过一个平均RTT,发送方就重传。若接收端的ack延迟了,且重传了以后正常运行,一段时间后又收到了原来延迟的ack,接收端收到就遗弃。

    2. 后退N帧协议(GBN),多对1,接收方很专一(expectSeqNum)一帧一帧接受,若接受者接受到了比自己想要大的帧,则返回想要的帧。比如汉堡就要肉。

      如果某一个帧在超时时间内未得到确认,就认为丢失或被破坏,需要重发出错帧及其后面的所有数据帧。这样有可能有把正确的数据帧重传一遍,降低了传送效率。线路很差时,使用退后N帧的协议会浪费大量的带宽重传帧。

      https://blog.csdn.net/xiaotai1234/article/details/107741673

    3. 选择重传协议(SR),多对多,

      由于上面的GBN很专一,导致要后退重传已发送但未确定的所有数据帧,所以比较浪费资源。

      所以选择重传是增大接受窗口,设置缓存,可以接受乱序的帧,来一帧确定该帧,但两边都是保证最小序号满足了之后才前移窗口。

      与传输层的滑动窗口的区别是,这里是接受一帧就确定一帧,后面的是累积确认。 如果一个数据帧计时器超时,就认为该帧丢失或者被破坏

      累积确认,就是接收方如果一下子收到了123序号的,此时可以不返回确认,直到收到第4个序号的数据的时候,直接返回5,代表前4个我都接受了。若此时来了567,其中7丢失了,则收到8的时候返回7,收到9的时候返回7,收到10的时候返回7,快重传了,来了7,则返回11。


三、网络层
  1. 把IP数据报从源端传送到目的端。IP对IP。单位IP数据报,或者对IP数据报进行分片可以得到分组。
  2. 交换方式,电路交换(电话),报文交换(数据不切割),分组交换(数据切割)。
  3. AS自治系统。
  4. DHCP动态配置,IP地址,子网掩码和默认网关都是自动的,可以复用。
  5. 组播(多播),D类地址。IGMP协议,让路由器知道本局域网是否有主机参与或退出了某个组播组。某个组播组的成员要参与组播,则向本地路由器发送IGMP报文,然后本地路由器会将这组的关系发送因特网其他组播组。本地组播组也会探寻自己的本地的主机是否还存活,若探寻到至少1个,就依然想其他组播组传播关系,若一个都没有,就不在传播信息。(不知道个数,只知道有没有)
  6. IP数据报的格式,首部的固定有20byte,4列5行,再加上可变部分是IP数据报的首部。
  1. 版本,首部长度,总长度(一种八片首饰,字节byte)
  2. 分片相关的,标识(所有分片都是一样的,身份标识),标志(前,1是不分片,0是分片,后,0还有分片,1最后一个分片/没分片),偏移量。MTU最大传输单元限制了1500,所以IP数据报太大需要分片。
  3. 生存时间TTL,协议(TCP 6,UDP 17),首部检验和。
  4. 源地址SIP
  5. 目的地址DIP(VIP)
  6. 可变部分
  7. 上一层的数据PDU作为自己的数据部分
1585797359365
1.路由选择
  1. 路由表,route -n 就可以看到三个主要的字段,第一个目的地址destination,网关和子网掩码,默认网关的子网掩码为4个0,目的地址也是4个0,中间就是默认网关的IP。也可以有其他的,比如同一个局域网的,满足最长匹配原则。255.255.255.0;255.255.0.0;

  2. 路由选择,就是拿着dip与路由表的子网掩码进行与AND运算,得到匹配最长的destination相匹配,没有就是默认网关了。这就是找到了下一跳的ip,在数据链路层,通过ARP寻址就可以找到MAC地址。

    因为255转换成二进制是1 1 1 1 1 1 1 1 ,所以任意数与255and都输出不变

  3. 路由算法。局域网有RIP,OSPF,广域网有BGP。

    1. RIP协议,仅仅与相邻路由器交换路由表信息,维护了自己到局域网其他目的地址的唯一最佳距离(一种走法)的一个表。最大距离,即跳数为16,16代表不可达。
      目标地址,邻接的路由,跳数

      总思想:交换的时候,下一跳改为与自己交换的路由器,然后距离加1.
      交换的时候,分情况如下:
      1.自己没有对于目的X的信息,直接插入,且+1操作。
      2.对于与目的地址X信息:
      	若自己表中下一跳的路由器是与自己正在交换的,则更新跳数,即+1操作。
      	若自己表中下一跳的路由器不是与自己正在交换的(保持最新30s),则从加1之后,从2者终选择最近的。
      

      在这里插入图片描述

    2. BGP协议,路由交换到达某个网络所需要经过的一系列AS。交换的路径向量。比如,要达到网络N1和N2,可以现在自治系统AS1-AS2这条路径。

2.差错控制-ICMP
  1. ICMP,网际控制报文协议。也是为了更加有效的管理和转发IP数据报。

  2. 差错报告,比如TTL时间过期,终点不可达,都会返回一个相应的错误提示差错报文

  3. 网络探寻:ping,traceroute。

    ping 命令使用了两个ICMP 报文。发送和接受者各1个。

    ping 命令不一定一定能判断对方是否存在。1)目标服务器不存在;2)花在数据包交流上的时间太长ping 命令认为超时;3)目标服务器不回答ping 命令。

    traceroute命令,初将IP 首部的TTL(生存时间)字段设为1 这一点。然后依次增加,增加到达到真实服务器。

3.流量控制

​ 与链路层一样,不同版本的书籍标明的地方不同。

4.拥塞控制
  1. 这是一个全局流量控制。同一个路由器承担太多的数据发送,但是节点来不及接受,就会遗弃IP数据报。网络就是拥塞状态,这里会有一个拥塞窗口,然后具体应用在传输层。即,发送窗口等于接收窗口和拥塞窗口之间的最小值。
四、传输层
  1. 传输层提供可靠连接和不可靠连接两种方式。是端口对端口的模式,也就是为进程服务的,复用分用。

  2. TCP可靠传输,面向连接,建立三次握手和四次挥手,时延大,适用于大文件。UPD不可靠连接,无连接,时延小,不需要确认机制,适用于小文件,可能丢数据。

  3. 端口长度为2byte,16bit。65536个端口号。

  4. 三次握手和四次挥手

    三次发送TCP报文 syn syn+ack ack
    可以4次,但是没必要;不能2次,延迟到达的syn
    fin ack fin ack
    
    针对序列号seq和ack,记住,ack是seq+1,seq是最开始随机,或者上次+1(也等于对方期待的ack)。
    seq代表本次的序号号,而ack表示期待下次的序列号,因此需要+1
    
    2个MSL,time_wait,第一,保证服务器能没有收到最后的ack,再次发送fin。第二,防止延迟的数据,干扰重新使用该端口的新连接,2个MSL,该延迟报文,生存时间肯定没了。
    

    在这里插入图片描述

    在这里插入图片描述

    为什么3次和4次。

    建立连接时,被动方服务器端结束CLOSED阶段进入“握手”阶段并不需要任何准备,可以直接返回SYN和ACK报文,开始建立连接。

    释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。四次的原因,服务器并可能还有数据需要处理。

    1、tcp通过3次握手是为了什么
    为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
    2、为什么3次。可以4次,但是第二次可以同时发SYN和ACK标志位的包。因为是被动连接,B也不需要做准备工作,同时3次就能节省资源。最核心的东西,就是请求应答是双向的!!!这也是不能是2次的的核心原因,因为请求响应是双向的,2次的表象后果是,B可能收到过期的、延迟的SYN请求包,造成混乱。
    3、三次握手真的能保证传输可靠吗?
    不一定,是一种折中的办法。
    因为每次握手都是对收到上次握手的确认,却不能保证本次握手就能顺利到达
    比如A连接B。第三次发送ack的时候,这个传输过程中失败了,a完成了三次,但是b只有2次(当然,超时之后B会重发)。或者B收到了第三次握手,那么B以为建立了连接,但此时已距离第二次握手过去很久了,A却早已关闭连接。此时连接也没有建立成功。

    4、TCP三次握手的第三次的 ack包丢失会怎样?
    B,收不到第三次ack包会启动重试机制。依然收不到会关闭。
    A,若继续发送正常的数据包,B却已经关闭连接,此时B收到data之后,会返回RST包,告知需要连接错误,需要重置。

1.可靠连接/不

UDP:

  1. UDP只是使用了传输层很少的功能,复用分用和差错检测。(可有2面)

    1.UDP是面向无连接的,即不需要三次握手四次挥手这样的耗时的工作。
    2.UDP是尽最大努力交付的,也就是不保证可靠交付,很有可能丢数据。其实下面所有层都是不可靠的,只是TCP有相关的控制,保证可靠。
    3.UDP是面向报文的,就是应用层来的数据报文,所有层自始至终原封不动的传递,不分段,也不分片。所以需要传递合适的长度。
    4.没有拥塞控制,适合实时传输,比如视频。
    
  2. UDP的报文首部很简单,只有源端口,目标端口,总长度,和校验和(整个PDU校验,差错控制,有错就丢)。

TCP:

  1. TCP的功能有可靠传输,差错控制,流量控制,复用分用。(可有2面)

    1.可靠交付,保证数据不丢失
    2.有拥塞控制,全双工,2边都有TCP缓存。
    3.面向字节流,就是可以分段分片,只要保证每一个数据帧的字节能够传输,且接收方能够最终收到整个报文。
    4.面向连接,需要建立三/四
    
    https://cloud.tencent.com/developer/article/1546962
    
  2. TCP的报文首部较为复杂,固定部分也是20个字节。端口,序号和确认号,6个标志位,窗口和校验和。
    在这里插入图片描述

    源端口,目标端口
    序号:字节流中的字节都按照顺序编号,该值表示本报文段所发数据的第一个字节的序号。比如 321 为1;654为4
    确认号:期望对方下一个报文第一个序号值。为N,则代表前N-1的字节都成功了。
    数据偏移,6个控制位,窗口。第一个是首部长度,就是数据具体距离起始位置的长度。URG紧急位,ack确认位,PSH推送位,RST复原位,SYN同步位,FIN终止位。窗口,就是接收端的接受窗口。
    检验和,紧急指针。计算头部和数据的,差错控制。URG紧急位存在的时候才有意义,指出了紧急数据的尾部字节的位置。
    
    可选,填充
    数据
    
2.差错控制-校验和-重传
  1. 使用数据校验和。
  2. 字节序号和确认号
  3. 超时重传和快速重传(3个冗余ack)
3.流量控制
  1. 滑动窗口(类似SR)

    发送窗口只有收到发送窗口内字节的ACK确认,才会移动发送窗口的左边界

    发送窗口大小等于接收窗口和拥塞窗口的最小值。

    窗口是可变的,与数据链路层的不一样,数据链路层是点到点。此处是端到端的,服务端和客户端,更加的宏观。

  2. 拥塞控制四种算法:慢启动,拥塞避免;快重传,快恢复。

    指数增加,到达门槛值,+1线性增加,或者再从1开始,且门槛值为一半,或者到门槛值开始。
    判断拥塞依据:
    	慢启动,拥塞避免: 发送端设置一个重传计时器RTO,对于某个已发出的数据报文段,如果在RTO计时到期后,还没有收到来自接收端的确认,则认为此时网络发生了拥塞。
    	快重传,快恢复:快速重传算法中规定如果收到某数据报文段的三个重复确认,则立即重传下一个数据报文段
    

在这里插入图片描述

4.复用分用
  1. 复用,共用传输层

  2. 分用,根据端口分发到各自的进程

五、应用层

​ 本节讨论会话层、表示层和应用层这三层所设计的知识点。

  1. 请求类型

    在这里插入图片描述

    GET和POST

    安全性(GET暴露url),数据大小,缓存设置(GET会)。

    底层都是tcp,POST可能发2次请求,先发送header,服务端返回100状态码再发送body。

  2. 报文

    请求报文:请求行、请求头,空行,请求数据

在这里插入图片描述

响应报文:响应行,响应头、响应数据

在这里插入图片描述

常见的返回状态码

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

HTTP状态码列表:

状态码状态码英文名称中文描述
100Continue继续。客户端应继续其请求
200OK请求成功。一般用于GET与POST请求
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
500Internal Server Error服务器内部错误,无法完成请求
502Bad Gateway连上后端,超时,作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
504Gateway Time-out没连上后端超时,充当网关或代理的服务器,未及时从远端服务器获取请求
  1. NDS( Domain Name System)是“域名系统”,解析域名为对应的

    包括递归寻址(靠别人)和迭代寻址(靠自己)过程;

    本地缓存(浏览器)- 本地host

    本地DNS服务器(路由器或ISP)- 根服务器-顶级域名服务器-权限域名服务器。

在这里插入图片描述

  1. http各个版本
    长幼预存多推头

    http1.1对比http1.0
    长连接,节约带宽,host域,缓存
    http2.0对比http1.1
    多路复用,服务器推送,头部数据压缩
    

    HTTP3.0基于google的QUIC协议,而quic协议是使用udp实现的。减少了tcp三次握手时间,以及tls握手时间。

  2. http与https

    1、http信息是明文传输,https使用ssl/tls加密传输协议。
    2、http和https端口前者是80,后者是443。
    3、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
    
  3. 加密

    对称加密,使用同一个秘钥进行加密和解密。如何保证这个秘钥的安全呢?请求的过程中,中间人完全可以截取。

    非对称加密,公钥加密只能私钥解密,私钥加密也只能公钥解密。但是也会有中间人攻击的现象。

    比如,下图,用户请求真实服务器的公钥真A的时候,中间者给的是自己的公钥B,同时中间人自己去请求真实的公钥真A。那么用户用的假的公钥B加密,会被中间人解密。同时中间人把信息用真实公钥A加密给真实服务器,获取服务器的数据。

    在这里插入图片描述

    问题的本质就是用户无法确认自己获取的公钥是否是真实有效的。

    那么就出现了CA机构,基于信任机制,通信双方信任的实体,大家使用CA颁发的证书,并且可以使用CA的公钥进行验证。

    CA证书包含的信息:CA信息,公钥的用户信息,公钥,签名,有效期等。

在这里插入图片描述
重点:CA数字证书,摘要,签名。把自己的公司公钥和各种公司信息给CA进行CA的私钥签名。然后使用CA的公钥去解签名得到摘要,若客户端根据同样的算法计算公司公钥和公司信息得到摘要,进行对比即可。

  1. SSL/TLS

    在三次握手之后,需要建立安全的连接。标准是有来回9个报文请求。现在简述为4个过程。

    在这里插入图片描述

    https真的安全吗?

    不一定。

    现在我们是基于ca进行验证,基于信任机制。那么ca可能是假的。但是一般不会存在,因为一般公司去申请ca证书的时候,都会选择正规的CA机构。那样中间人就不会得到CA的私钥。虽然CA的公钥公开,即使这中间人解开了CA数字证书,也没法改变数据之后进行私钥加密。

    第二个,数字证书不一定用CA机构进行生产。数字证书是可以自定义的。一般这种情况,需要手动安全数字证书,安装这个证书一般是去官网下载。那么就有可能下载数字证书的时候,被劫持,替换为中间人的数字证书。


8、断点续传Range和Content-Range,分片1M。Range: bytes=0-100 Content-Range: bytes 0-100/2350
9、跨域问题,服务端和客户端2边设置相同的Access-Control-Allow-Origin的值。主要是浏览器在阻止。

以上就是计算机网络的知识汇总,喜欢就点个赞吧~~~
【完】

正在去BAT的路上修行

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值