计算机网络5层知识概要

计算机网络学习笔记

数据链路层
  • 点对点信道
    用户与ISP通信,使用ppp协议
  • 广播信道
    一个站点发送帧,链路上所有站点都可接收到。

局域网上的主机可称为主机、工作站、站点、站。
以太网三个基本问题:

  • 封装成帧

     帧的定界符
    
  • 透明传输

     字节填充,防止帧数据中出现定界符
    
  • 差错检测

     CRC循环冗余检验,通过帧后的帧检测序列(FCS)检测
    

以太网:是基带总线局域网,以太网上的数据传输是不可靠传输,对于传送的帧数据只决定要不要,不进行过多的操作。

为了知道以太网信道中的数据是否正常传送,以太网使用CSMA/CD(载波监听多点接入碰撞检测)协议检测是否存在数据冲突,如果存在冲突则停止正在发送的数据稍后再发;载波监听,即边发送边监听,为了能检测是否发生数据冲突,保证数据帧的最短长度为64字节(数据往返的时间(碰撞窗口)与数据正常传送速度的乘积计算出64字节,如果在发送这64字节的时间中没有检测到碰撞,那就没有发生碰撞),以太网之只能以半双工的方式工作。

以太网中数据帧的格式
帧格式
帧的种类

  1. 广播帧:发给本局域网中所有站点的帧
  2. 单播帧:收到帧的mac地址与本站的硬件地址相同
  3. 多播帧:发给局域网中一部分站点

网卡(网络接口卡)中的存储器分为ROM(保存网卡的MAC地址),RAM缓存数据帧

扩展以太网

物理层扩展:集线器

扩大碰撞域,使以太网内的数据传输率下降

数据链路层扩展:网桥、交换机

交换机中扩大了以太网规模且没有碰撞域的限制,可以全双工的方式传输数据,交换机使用mac地址表转化数据,mac地址表通过交换机的自学习生成

自学习:
1.A向B发送数据,数据到达交换机,交换机添加A的mac地址与接口的映射关系,但是不知道B连接在哪个接口上,交换机发送广播,局域网内所有站点都收到来自A的数据帧,B发现数据帧的目的mac与自身网卡ROM中的物理地址相同,接口数据帧,并发出响应,交换机添加B的mac地址与交换机接口的映射关系,通过多次局域网内站点的通信,最后拥有整个局域网所有站点的mac地址映射,由于可能存在站点退出局域网需要更新映射表,所以mac地址映射表中的数据项存在生存期。

由总线以太网到交换机星型以太网,并不再是总线局域网为什么一直称之为以太网,因为数据帧的结构还是以太网的帧格结构。

网络层

IP数据报首部各字段

IP数据报首部
分别讲解每个字段的含义:

  • 版本

指IP协议的版本,分为ipv4与ipv6。

  • 首部长度

表示首部的字节数,一般为20个字节。

  • 总长度

表示整个IP数据报的数据长度与首部长度之和,一般这个长度要小于数据链路层的MTU,如果超出这个长度则要考虑对IP数据报分片。

  • 标识

如果数据报分片,则为了标识哪些数据报是一个整体,所以为每个被分片的数据报增加一个标识,相同标识的数据报,接受者接收后,可以重新组装。

  • 标志

为了告诉接收端是否还有分片,有两个有效标志位MF(more fragment)与DF(more fragment),MF=1表示后面还有分片,MF=0表示这是最后一个分片;DF=0表示能分片,DF=1表示不能分片。

  • 片偏移

说明该分片在整个数据报中的位置。

  • 生存时间(TTL)

为了防止数据报在多个路由器中间兜圈圈,设置生存时间,生存时间通过跳数表示,即能经过路由器的个数,若TTL为零,则路由器不会转发此IP数据报。

  • 协议

指出携带的数据部分是使用哪种协议(常见的协议:ICMP,UDP,TCP…)

  • 首部校验和

只检验数据报的首部,校验首部数据是否出差错。

  • 目的地址

记录将要发送到的站点的IP地址。

  • 源地址

记录发送端站点的IP地址。

ICMP(网际控制报文协议):该协议可以使主机或路由器用来传送网络中的异常信息,并可以检测网络是否可达,分为两类,ICMP差错报告报文,ICMP询问报文(回送请求和回答ping(应用层直接使用网络层icmp协议的例子),时间戳请求和回答)

ARP(地址解析协议):将IP地址解析为硬件地址,每一台主机中的arp高速缓存中会记录IP地址到mac地址的映射表,该协议用来解决同一局域网中的主机或路由器IP与mac地址的映射问题

ARP协议执行过程:

  1. 通信双方处于同一个局域网

局域网内A主机要向B主机发送数据,但是不知道B主机的mac地址,数据帧无法将数据传送到B,这是A主机发送一个apr广播,交换机转发这个广播到整个局域网,广播大概意思就是(我的ip地址是x.x.x.x,mac地址是x.x.x.x,我想知道ip地址是y.y.y.y的主机的mac地址,请这个ip地址的主机收到广播后回复),B收到广播发现广播中y.y.y.y地址就是自己的IP地址,于是收下广播信息,并且把广播信息中A主机的IP与mac的映射关系记录到自己的apr高速缓存映射表中,然后给A主机发送apr响应,携带自己的mac地址,通过这样一个过程,A、B主机的arp缓存中都有对方的mac地址,由于一台主机的IP地址不会永远固定在一个主机上,所以IP与mac地址的映射关系会发生改变,所以主机中的映射表信息存在生存时间,超过生存时间就会舍弃这个映射关系,从而达到映射表的动态更新。

  1. 通信双方不处于同一个局域网
    arp代理
    arp代理

当A与B主机通过路由器相连时,首先还是A先发送广播,局域网内其他主机发现广播信息与自己的信息不符合,都不理睬这个广播信息,但是当路由器收到这个广播信息时,发现在自己的路由表里能找到B主机对应的网段,于是路由器扮演代理的arp的角色做出arp响应,返回自己接口处的mac地址来代替B的mac地址,下次还需要发送消息给B时就直接将数据报发送给路由器了。

学习了主机之间如何获得IP与mac地址的对应关系后,接下来就是明白路由器如何把数据送到正确的主机

内部网关协议RIP(基于向量的路由选择协议)
RIP要求每个路由器中的路由表中记录自己到其他每一个网络的距离信息,并且每隔一段时间,相邻的两个路由器互换自己的信息,一开始每个路由器中的路由信息表只有直连路由的信息,直连路由的距离为1,通过几次的路由器之间的信息交换,所有路由器都会知道本自治系统中任何一个网络的最短路径和下一跳路由的地址。

距离向量算法(RIP路由表的更新)
相邻两个路由器交换信息后就需要将新来的信息整合到当前的路由表中,这就需要使用距离向量算法来实现路由表信息的更新,共存在三种信息的更新

三种更新情况
通过每个路由表中的路由信息就可以将数据传送到自治系统中的任何一个网络,路由的整个过程就像你要找中国银行在哪,要找银行要经过很多街区,不同的街区通过很多岔路口相连,而每一个岔路口都会站一个交警,而站在不同岔路口的交警就是路由器,如果银行就在你当前所在的街区上就相当于直连路由,交警就会告诉你“沿着这条路直走100米就是中国银行”,如果在不同街区,交警只会告诉你要去中国银行下一步要往哪个路口走(左转还是右转),沿着这条路到达下一个岔路口,仍会有一个交警告诉你接下来往哪里走,每两个相邻路口的交警每隔一段时间都会交流一下自己知道的目的地信息,通过询问不同岔路口的交警就可以找到中国银行在哪。

传输层

UDP(用户数据报协议):不可靠传输信道
由于前面两层都是不可靠传输,为了保证数据的可靠传输,在传输层提供了可靠传输方案,即TCP(传输控制协议),网络层提供主机之间的逻辑通信,运输层为应用提供端到端的逻辑通信,网络中传输的数据并不是传送到相应的主机就完事了,还需要传送到相应的应用程序;应用层的复用与分用,就是所有的应用进程都可以通过运输层传送数据到IP层,运输层可以从IP层收到数据发送给不同的应用进程。为了将数据传送到不同的应用,就需要不同的应用有不同的标识,于是协议端口号就诞生了,软件端口就是应用层的各种协议进程与运输实体进行层间交互的一种地址。

端口号分为两大类:系统端口(常用的应用程序绑定的端口)和短暂端口(用户选择使用的端口)

TCP实现可靠传输

tcp报文段的首部格式
tcp报文首部格式
部分字段简介
序号
序号是记录本报文数据的第一个字节的序号,tcp连接中的字节流传送中每一个字节都有编号。
确认号
累计确认,记录已收到数据的最后一个字节+1的序号,表示这个序号之前的分组都已经收到
数据偏移
记录数据部分的开始字节到报文的起始字节的长度,就是记录数据报的首部长度(占四位),数据偏移以4个字节为偏移单位
六个控制位
URG=1时表示紧急指针有效,发送方把紧急数据插入到本报文的最前面,并告诉系统此报文中有紧急信息,需要尽快发送
ACK=1时表示确认号有效,tcp连接建立后ACK报文段都必须置1
PSH=1接收方收到该报文不进行缓存直接交付给对应的应用进程
RST重置控制符,置1时表示需要重新建立连接
SYN建立连接时用来同步序号
FIN=1表示终止一个连接
窗口
接收方告诉发送方自己还能接收多少字节的数据,避免数据发送过快,还可用来进行拥塞控制的实现

选项
MSS(最大报文长度,并不包括报文首部),为了保证传输效率的高效,传输数据不能太长也不能太短,通过这个选项控制报文数据长度,尽量使数据报在IP层不用再分片。

tcp连接的端点叫做套接字(=【ip地址:端口】)
可靠传输得解决两个问题:

  • 数据丢失可重传
  • 传送速度可调控

数据丢失可重传
ARQ(自动重传请求):

1.数据无差错传送 等待接受方的确认,收到接收方的确认后继续传送后续数据段
2.出现差错 发送端有一个超时计时器,在规定的时间内没有收到接收方的确认即可认为发送的数据段丢失,需要重新发送上一个数据段,实现这一功能就需要,首先得发送端保存发送的数据报副本,其次发送的数据报需要编号确保发送方知道是哪个数据段丢失,最后计时器的设置超时时间稍稍大于数据段的平均传输往返时间。
3.确认丢失和确认迟到 接收端的确认没能按时到达发送方,导致发送方已经重发数据段,此时接收方丢弃发送方的副本数据段,并重新发送确认。不久后接收端收到两个重复的确认,接收端将直接丢弃这些确认。
确认丢失,发送端发送副本数据段,接收端收到数据后直接丢弃并再次发送确认。

由上面的确认重传机制可以发现,每次发送方发送数据都需要等待接收方的确认才可继续发送,显然这样的发送效率极低,于是下面会讲到连续ARQ协议滑动窗口协议

连续ARQ协议
相对于ARQ协议,连续ARQ会连续的发送多个分组,而不会等待确认后一个一个的发送分组;接受方接收到分组后,采用累计确认的方式,告诉发送方在这个分组之前的所有分组都已经正确接收,至于每次连续发送多少个分组则由下面将要提到的滑动窗口协议决定,累计确认也存在缺点,假如传6个分组,而第3个分组丢失了,那接受方发送第3个分组的确认,表示第3个分组之前的分组都收到了,但是第3个以后的分组下落不明,实际上除了第三个分组其他分组接收方已经收到,但是发送方还是会把第3个分组后的分组重新发送一遍。

滑动窗口协议
通过报文段首部字段中的窗口值,确定滑动窗口大小,每次只有当收到累计确认后滑动窗口才可以向后滑动,保证滑动窗口前的数据都成功接收,滑动窗口中已发送但未收到确认的数据需要保留,确保数据丢失可重传,现在还有一个问题没有解决,就是什么时间才可断定发出去的数据段已经丢失,这个问题可以使用Karn算法,基于RTT(报文段的往返时间)计算重传时间。

流量控制
让发送方的发送速率不要太快,保证接收方来得及接收,通过报文首部的窗口大小控制发送方的发送数据量。报文段的发送时机,当数据段中的数据等于MSS时就组成一个报文段发送出去,其次可以由tcp报文首部控制符PSH控制是否发送报文段,最后可以通过计时器确定一定时间发送一次报文段

拥塞控制
拥塞控制是对整个网络系统的数据流量的控制,确保网络中的数据能流畅的到达不同的站点,防止过多的数据注入网络中,保证网络中的路由器或链路不过载,当网络中出现拥塞的状况时及时调整报文段首部的窗口大小。解决网络拥塞由四种方法:慢开始、拥塞避免、快重传、快恢复。基于窗口的拥塞控制,发送方维持一个拥塞窗口(cwnd)的状态变量。发送方要自己的窗口等于拥塞窗口。

  • 慢开始

由小到大逐渐增大发送窗口,指数增长(1,2,4…),防止cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh,当发送窗口小于ssthresh时,发送方采用慢开始算法,当发送窗口大于ssthresh时采用拥塞避免算法

  • 拥塞避免算法

发送窗口的大小成线性增长,(1,2,3…)
拥塞窗口(cwnd)增大到一定大小时,当网络出现超时时,发送方判断为网络拥塞,于是修改慢开始门限为:cwnd/2,然后重新按照慢开始算法增大窗口大小(1,2,4…)

  • 快重传

网络中的数据段可能丢失,如果发送方迟迟没有收到来自接收方的确认就会认为网络拥塞,这是发送方将启动慢开始,而实际上网络并没有拥塞,这会导致数据的传输效率降低,这是就需要使用到快重传,当接收方发现丢包时立即发送3个重复确认,告诉发送方存在丢失的数据段,避免发送方错误的启动慢开始,而是启动快恢复算法

  • 快恢复算法

ssthresh=cwnd/2,cwnd=ssthresh,同时开始拥塞避免算法

rwnd(接收方窗口)
发送方窗口的上限值=Min[rwnd,cwnd]

TCP运输连接管理(后期添加)
  • 三次握手

  • 四次断开

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值