计算机网络学习

最近在看计算机网络,记录下学习的过程,不定期更新。加油!

计算机网络

概述

网络性能:速率,带宽(最高的数据率),频率,时延,吞吐量等来衡量

建立分层次的思想:以文件传输为例

  • 发送文件方需要先激活信道
  • 告诉网络如何识别需要接受文件的计算机
  • 查明接收文件的计算机是否开机,是否连接网络
  • 查明接收文件的计算机的文件管理系统是否做好了接受文件的准备
  • 如果文件不兼容,至少需要有一方来完成文件格式的转换
  • 如果出现故障,保证接收方最终收到的文件是正确的

分支主题 3

网络协议

网络协议的三要素:语法(描述的是数据的格式或结构),语义(描述的是发送何种控制信息,实现哪种动作),同步(事件的实现顺序)

  • 著名的OSI协议,七层协议,但由于过于复杂且商用性比较低,所以现在使用的比较少

  • 现在多用TCP/IP协议,这是一个统称,并非只有这两种协议,还有以下四种

    • 应用层

      • 常用的协议有:HTTP,SMTP,FTP
    • 网络层

      • 常用的协议是ip协议
      • 将运输层的数据加上ip数据报,传输给数据链路层
    • 数据链路层

      • 主要的工作:将网络层传输来的数据封装成帧

      • 常用的协议:点对点信道下的PPP协议。广播,不存在协议

        • ppp协议是该层点对点模式下常用的协议,该协议的特点就是比较简单,主要完成:1.将网络层的ip数据报封装成帧,并放进串联的链路中;2.完成建立,配置,测试数据链路(LCP);3.网络层的控制协议的完成(NCP)

          • 点对点模式下,物理链路打开的流程:1.计算机通过调制解调器发送信号,激活通道;2.进入到LCP协商过程,完成配置,测试等过程,然后完成鉴别;3.进入NCP协商过程,完成和网络层相关的测试等;4.成功建立数据链路
      • 有三个基本的问题:封装成帧,透明传输,差错检测

        • 封装成帧:将网络层的数据按照一定的大小分组,然后在头部和尾部添加标志位(SOH,EOT)
        • 透明传输:当数据可以用ASCii表示时,不存在问题;当数据是其他类型时,可能存在帧不完整,因为存在其他数据的二进制可能和SOH,EOT相同,需要在出现这两个数据的位置之前插入ESC
        • 差错检测:通常用的是CRC(循环检测)检测,是通过在原数据后添加FCS数据,来完成数据的检测(FCS是通过一系列的计算获得的数值,接收方通过计算,匹配的话则数据正常),通常是通过硬件来完成。如果出现差错,通过运输层来完成改正
    • 物理层

      • 主要的工作:将帧转换为bit信号,通过物理媒介传输
      • 控制变量的前提下,提高传输速率:可以通过编码的方式让码元携带更多的数据

运输层

常用的协议:TCP,UDP

  • UDP:特点:1.无连接2.面向报文3.尽最大可能传输4.一对一,一对多,多对多等形式5.没有拥塞控制

    • UDP只是在IP数据报的基础上添加了复用,分用和检测数据的功能
  • TCP:特点:1.面向连接的2.可靠的3.一对一,每个连接只有两个端点,此端点为套接字(ip+端口号)4.提供双全工通信,设有发送缓存和接收缓存5.面向字节流

    • 工作原理

      • 停止等待协议

        • 无差错情况:发送端A发送数据,接收端B在收到消息后,给A发送确认消息,A确认完成再发下一组
        • 出现差错:可能的情况是,A发送的数据B未接收到;B接收到消息但是检测失败,这两种情况B都会直接将消息丢弃,然后等待A的超时时间超过后重新发送消息
        • 确认丢失,确认迟到:这种情况是A发送消息B收到消息,但是确认消息A未收到,或者是确认消息超时,A已重新发送消息,然后收到之前的确认消息。这两种情况,B不会上传重复的消息
      • 停止等待协议会发现一个问题,信道的使用率不高,基本上在5.56%

        • 为提高效率,就有了连续发送ARQ协议(也就是发送方不会等接收方发送确认后才发送下一次的数据,而是一次性连续的发送多组数据),滑动窗口协议
    • TCP报文的首部格式:TCP所有的功能全部体现在首部的字段中,也是首部这些字段保证了TCP的安全传输

      • 源地址和目标地址:源端口和目标端口

      • 序号:主要作用是分片后凑成源数据

      • 确认号:接收方给发送方的序号,期望下一次的第一个数据序号

      • 数据偏移:表示的是头部的长度

      • 保留位

      • 紧急URG:当置为1时,会优先发送和处理该数据

      • 确认ACK:要求在TCP连接过程中必须为1

      • 推送PSH:置为1时当发送方需要立即响应该数据,那么接收方不会等缓存满时,再上传,会直接上传

      • 复位RST:置为1,表示连接出错,需要重新建立连接

      • 同步SYN,理解相当于一个锁

      • 终止FIN:置为1,表示数据传送完成,需要关闭TCP连接

      • 窗口:大小[0,2^16-1],表示的接收方能够接收的数据量

      • 检验和:作为检验头部和数据的信息

      • 紧急指针:配合紧急URG使用

      • 选项

        • 窗口扩大
        • 时间戳
        • 选择确认
    • TCP可靠传输的实现:通过的滑动窗口实现,通过三个指针来理解

    • TCP的流量控制:通过滑动窗口实现,通过接收方在确认消息中携带窗口大小,来实现流量控制

  • 主要完成的工作是:为两个主机之间的进程提供通信服务,应用程序之间的通信实际上是端点的通信。

  • 可以实现复用和分用。复用的含义是不同的应用层可以使用同一个运输层来完成数据传输;分用的含义是运输层的数据经过拆除头部,可以将数据分给不同的进程

  • 主要是为进程提供通信,网络层的主要作用是为主机提供通信

  • 以上可以得知,运输层实际上是进程之间的通信。那么在不同的操作系统上,进程号肯定是不相同的,为了解决这种问题,引入了端口协议。标志的是本地与运输层之间的层间接口

  • 服务器端使用的端口(0-1023)

    • 熟知端口,像80,21,25等
    • 登记端口
  • 客户端使用的端口(49152-65535),客户端的端口在一次通信完成后,被释放,以便后面的进程可以使用

网络层

主要完成的工作:为分组交换网上的不同的主机提供通信服务

常用的协议:IP,所以网络层传输的ip数据报

  • 与ip协议相配套的还有四个协议:1.地址解析协议ARP;2.逆地址解析协议RARP;3.网络控制报文协议ICMP;4.网际组管理协议IGMP。之间的关系是ICMP,IGMP是需要使用ip协议来工作的,ip协议是要使用ARP,RARP协议来完成工作的

    • 关于ARP协议():主机上一般都有ARP高速缓存,主要用来存放的是ip地址和硬件地址的映射关系,且是动态更新。可以通过网络中两个主机建立连接举例:当A主机接入网络后,需要向B主机传送数据,A主机会将自己需要的的ip和硬件地址在ARP高速缓存中寻找,如果没有会在网络中广播,当B主机收到该广播时,会单独和A主机进行通信,那么此时A,B主机都会将对方的ip和硬件地址放在自己的高速缓存中。以上举例针对在同一个局域网内的示例,如果不在同一个局域网中,那么是需要通过路由器来完成主机的寻找
  • IP地址通常是32位,每一个ip地址在全世界范围内都是唯一的。通常我们使用点分十进制表示。

    • A类地址:网络号占一个字节,主机号占3个字节,其中网络号的总数为27-2,主机号的总数为224-2
    • B类地址:网络号占2个字节,主机号占2个字节,网络号的总数为214-1,主机号总数为216-2
    • C类地址:网络号占3个字节,主机号占1个字节,网络号总数为221-1,主机号为28-2
  • IP数据报

    • 数据

    • 头部

      • 固定长度20字节

        • 版本:占4字节,主要记录ipv4,还是ipv6
        • 首部长度:占4字节,
        • 区分服务:占8字节
        • 总长度:占16位,首部+数据长度之和,数据报最大长度2^16-1,最小长度位576字节
        • 标识:占16位,主要作用将分片之后的数据整合到一块
        • 标志:占3位,最低位记为MF,MF=1,表示还有分片,MF=0,表示没有分片了
        • 片偏移:占13位某片在原片中的位置,以8个字节位单位,也就是数据报在分片时是以8个字节位单位的
        • 生存时间:占8位,TTL,原来的生存时间是时间量,现在的生存时间是跳数,表示数据在网络中转发的次数,当跳数为0时,表示数据将被抛弃,当为1时,表示只在本局域网中转发。
        • 协议:占8位,常见的协议有ICMP,IGMP,TCP,UDP,
        • 首部检验和:占16位,检验ip数据报的首部,不检测数据
        • 源地址:占32位
        • 目的地址:占32位
        • 举例,一个数据报总长度为3820字节,其数据部分长度为3000字节,需要分片长度不超过1420字节的数据报文,因固定首部长度为20,所以每一分片的长度为1400.1400.1000。
          对应的每片的数据为(数据报片1:总长度1420,标识12345,MF1,DF0,片位移量0,数据报片2:总长度1420,标识12345,MF1,DF0,片位移量175,数据报片3:总长度1000,MF0,DF0,片位移量350)

建立网络连接是需要中间设备的

  • 物理层:转发器,实际上只是扩大网络,并没有真正的实现网络连接
  • 数据链路层:网桥,实际上只是扩大网络,并没有真正的实现网络连接
  • 网络层:路由器,真正实现网络连接的
  • 网络层以上:使用的是网关

ICMP协议(了解)

  • ICMP差错报告报文

    • 终点不可到达
    • 源点抑制
    • 时间超过
    • 参数问题
    • 改变路由
  • ICMP询问报文

TCP协议

可靠传输的实现

  • 以字节为单位的滑动窗口
  • 超时重传机制
  • 选择确认

流量控制

  • 通过滑动窗口实现,在确认消息中携带接收方的窗口的大小来控制

    • 存在一问题,当B发送给A的确认消息丢失,A,B两方陷入死锁状态时,此时有一个持续计时器,当超过这个时间A未收到B的确认消息,会发送一个零窗口探测报文段(仅携带一字节的数据)B会给出现在的窗口值

传输效率

  • 在应用程序将数据交给运输层后,发送时机是由传输层来决定的

    • 当发送缓存中的数据达到MSS字节后,发送数据

    • 当存在psh时,即发送放的应用程序要求数据立刻发送

      • 解决传输效率

        • Nagle算法:规定发送方先发送一个数据字节,然后将后面的数据缓存起来,当收到关于这一字节的确认消息,然后再发送数据,比如发送“nagle”,会先发送“n”,将“agle”缓存起来,当收到关于“n”的确认,再将“agle”发送。会有一个问题,当发送大文件时,缓存的数据可能会很大,此时如果还在等待之前的小数据的确认,可能造成传输效率更低的问题。nagle算法,有规定当数据达到窗口值【0,2^16-1】的一半或者报文段的最大长度,则立刻发送数据,解决了大文件的问题
    • 当发送方的计时器到期,发送数据,此时发送数据的大小依然不能超过MSS数据的大小

TCP的拥塞控制

  • 对于拥塞的判断就是确认消息的速度

  • 分类

    • 开环控制:即在网络设计之初,就将可能出现的拥塞充分考虑,在系统运行起来后,不再更改
    • 闭环控制:基于反馈环路的概念,可以理解为动态的控制
  • 拥塞控制的办法

    • 慢开始和拥塞避免

      • 引入一个慢开始门限的概念,正常情况下,确认消息的传输正常,每经过一轮传输,cwnd(拥塞窗口)就会加倍,但是当网络出现拥塞时,此时确认消息时间加长,当时间超过慢开始门限后,进入拥塞避免状态,此时cwnd的增长速度减慢为增长1,当出现真正出现拥塞时,慢开始门限会立刻减少到之前的一半,并重新开始执行慢开始算法(即将cwnd的值设置为1)

        • 出现了两种算法,一种是慢开始算法,一种是拥塞避免。分别对应的是加法增大(拥塞避免的过程)和乘法减小(立即减小的过程),统称为AIMD
    • 快开始和快恢复

      • 快重传

        • 当接受方收到一个失序的数据时,立即发送三次确认消息到发送方,发送方收到三次确认消息后立即将该数据重新发送,不会等到持续时间到期再发送。
      • 快恢复

        • 当收到3条确认消息时,会将慢开始门限减半,但不会重新开始执行慢开始,而是进入拥塞避免状态,这是因为能够收到3条确认消息,说明网络的拥塞程度不是很严重
    • 随机早期检测RED

      • 这是出现在路由器上面的情况,当路由器上面的队列满了,会将后续到达的数据丢弃,造成没有确认消息,发送方持续发送,导致网络拥塞

        • RED的策略是,在网络拥塞之前,根据算法自动的丢弃一部分数据。引入最大门禁和最小门禁的概念,当队列中的数据小于最小门禁时,数据正常发送;当队列中的数据位于最大门禁和最小门禁之间,丢弃部分数据;当队列中的数据大于最大门禁时,数据完成丢弃。这样在网络拥塞之前完成检测,可以减少拥塞的发生

TCP的连接运输管理

  • 三个阶段:建立连接,数据传输,连接释放
  • 解决了三个问题:1.使得连接双方知道对方的存在;2.允许双方协商一些参数;3.能够对运输实体资源进行分配
  • TCP规定,当SYN为1时,不允许携带数据,当ACK=1时,可以携带数据,也可以不携带数据

建立连接和释放连接

建立连接

  • 三次握手,为什么要执行三次握手,举例,当A发送连接请求,但是由于网络问题,滞留在网络中,B未收到。此时A重新发送请求,经B确认,A确认,连接建立,数据传送,连接释放后,第一次发送的请求到达B,B给与确认,但是A并没有对此消息处理,造成了B资源的浪费

释放连接

  • A,B均可以发送释放连接的信号,以A为例。当A发送释放连接的信号(FIN=1)时,B收到该消息,对A的终止信息给与确认(但是连接还未中断,即FIN=0),然后B通知应用程序通信即将关闭,应用程序给于回应关闭程序,此时,B会将之前的剩余的数据发送给A,并将FIN=1,A收到此消息后给与B确认,并进入时间等待状态,等到2MSL后,连接关闭。(等待的作用是为了保证A最后的确认消息可以到达B,当A突然故障,B在规定的时间内未收到A的最终确认消息,会发送一个探测报文,以后每隔75分发送一次 ,若连续10次A无响应,则连接关闭)

应用层

常见的应用层的协议:文件传输协议FTP/TFTP,超文本协议HTTP/HTTPS等

  • 文件传输协议

    • FTP

      • 特点是复制整个文件,若要存取文件,先获取本地文件的副本,如要修改文件,也只能是修改本地文件的副本,再将副本返回到原点
      • 特点:1.只是提供文件传输的基本服务,使用的是TCP的可靠运输来完成文件的传输,主要的功能是减少或者消除不同的操作系统下处理文件的不兼容性2.一个FTP服务器进程,可以为多个客户端进程提供服务,一个主进程,负责新请求;若干个从属进程,负责单一请求
      • 原理:FTP实际上会建立两个并行的连接,一个用来控制(21),一个用来传输数据(20)
    • TFTP

      • 使用的UDP协议
      • 特点:1.每次最多只能发送512字节的数据;2.首部比较简单;3.支持ASCII码或者二进制文件传输;4.首部比较简单
      • 工作流程:类似于停止等待协议
  • 远程终端协议

    • telnet

      • 可以使用在不同系统的计算机,数据主要存在一个转换的过程,使用的是NVT来完成,
  • 万维网w’w’w

    • 分布式的超媒体系统,

      • 工作流程:以客户服务端运作,当客户程序向服务器程序发出资源的请求,服务器响应回客户端万维网文档

        • 统一资源的定位符:URL,解决了万维网上所有资源的定位

        • 万维网的文档:超文本标记语言HTML

          • 消除了不同计算机之间信息交流的障碍
        • 超文本传输协议:HTTP,是一种无状态,无连接的协议

          • HTTP/1.0协议中,请求数据的时间一般是2*RTT+文本传输时间

          • HTTP/1.1中,因为使用的是持续连接,所以请求时间一般比较快。持续连接,就是在数据传输完成后,连接暂时不会关闭。

            • 非流水线请求
            • 流水线请求

http请求方法和响应码

请求方法

  • option:请求一些选项的信息
  • get:获取URL标志的信息
  • head:获取URL所标志信息的首部
  • post:给服务器添加信息
  • put:在指明的URL下存储信息
  • delete:删除指明URL所标志的资源
  • trace:进行环回测试的请求报文
  • connect:用于代理服务器
  • 1XX:通知信息,表示请求收到了或正在处理
  • 2XX:表示成功
  • 3XX:表示重定向,如需获取资源还需要采取进一步的行动
  • 4XX:客户端的差错
  • 5XX:表示服务器的差错

XMind - Trial Version
插入下xmind图片
————————————————————————————————————————
2020/06/02 更新下MD,图片太大了,放不上来了,狗头保命。@CSDN考虑下增加文件上传的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值