【计算机网络基础 八】计算机网络考点汇集

计算机网络体系

各层的作用及用到的协议简单介绍如下:

  • 应用层:应⽤层(application-layer)的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。应⽤层协议定义的是应⽤进程(进程:主机中正在运⾏的程序)间的通信和交互的规则。对于不同的⽹络应⽤需要不同的应⽤层协议。在互联⽹中应⽤层协议很多,如域名系统DNS,⽀持万维⽹应⽤的 HTTP协议,⽀持电⼦邮件的 SMTP协议等等。我们把应⽤层交互的数据单元称为报⽂应用层详解
  • 运输层:运输层的主要任务就是负责向两台主机进程之间的通信提供通⽤的数据传输服务。应⽤进程利⽤该服务传送应⽤层报⽂,传输的内容为报文段运输层详解
  • 网络层:⽹络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送,在发送数据时,⽹络层把运输层产⽣的报⽂段或⽤户数据报封装成分组和包进⾏传送。在 TCP/IP 体系结构中,由于⽹络层使⽤IP协议,因此分组也叫IP数据报网络层详解
  • 数据链路:数据链路层通常简称为链路层。两台主机之间的数据传输,总是在⼀段⼀段的链路上传送的,这就需要使⽤专⻔的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将⽹络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送。每⼀帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等 数据链路层详解
  • 物理层:在物理层上所传送的数据单位是⽐特。 物理层(physical layer)的作⽤是实现相邻计算机节点之间⽐特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 使其上⾯的数据链路层不必考虑⽹
    络的具体传输介质是什么。物理层详解

以上就是各个层的作用,应用进程的数据在各层之间的传递过程中所经历的变化:
在这里插入图片描述
访问一个网页的全流程:输入URL后发生了什么

应用层考点

包括:域名解析协议过程、状态码的含义HTTP和HTTPS的区别、HTTP1.0和HTTP1.1的区别、HTTP1.0和HTTP2.0的区别、POST 与 GET 的区别URI和URL的区别POST 与 GET 的区别

域名解析协议过程

主机向本地域名服务器的查询采用递归,特点就是,询问者和答复者一层一层构成递归。本地域名服务器向根域名服务器的查询通常采用迭代,特点就是询问者不停的询问可能的答复者
在这里插入图片描述

当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

状态码的含义

以下是各个状态码的含义

  • 1XX Informational(信息性状态码)
  • 2XX Success(成功状态码)。例如:200 OK 表示从客户端发来的请求在服务器端被正常处理了。
  • 3XX Redirection(重定向状态码) 例如:302,客户请求的文档转移到了一个新的地址,请求被重定向了。
  • 4XX Client Error(客户端错误状态码)。例如:404 Not Found 该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
  • 5XX Server Error(服务器错误状态码)。例如:500 Internal Server Error 该状态码表明服务器端在执行请求时发生了错误。

以上就是响应的一个例子

HTTP和HTTPS的区别

分别就端口、安全性和资源消耗来进行对比:

  • 端⼝ :HTTP的URL由“http://”起始且默认使⽤端⼝80,⽽HTTPS的URL由“https://”起始且默认使⽤端⼝443。
  • 安全性和资源消耗
    • HTTP协议运⾏在TCP之上,所有传输的内容都是明⽂,客户端和服务器端都⽆法验证对⽅的身份,HTTPS是运⾏在SSL/TLS之上的HTTP协议,SSL/TLS 运⾏在TCP之上。所有传输的内容都经过加密,加密采⽤对称加密,但对称加密的密钥⽤服务器⽅的证书进⾏了⾮对称加密。所以说,HTTP 安全性没有 HTTPS⾼,但是 HTTPS ⽐HTTP耗费更多服务器资源

简单介绍下对称加密和非对称加密:

  • 对称加密:密钥只有⼀个,加密解密为同⼀个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
  • ⾮对称加密:密钥成对出现(且根据公钥⽆法推知私钥,根据私钥也⽆法推知公钥),加密解密使⽤不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的⾮对称加密算法有RSA、DSA等。

总结而言http有以下缺点:

  • 通信使用明文不加密,内容可能被窃听
  • 不验证通信方身份,可能遭到伪装
  • 无法验证报文完整性,可能被篡改

而https可以做到很好的安全性,虽然耗费的服务器资源会多一点,https的目标是保障传输的安全性

HTTP1.0和HTTP1.1的区别

HTTP1.0最早在⽹⻚中使⽤是在1996年,那个时候只是使⽤⼀些较为简单的⽹⻚上和⽹络请求上,⽽HTTP1.1则在1999年才开始⼴泛应⽤于现在的各⼤浏览器⽹络请求中,同时HTTP1.1也是当前使⽤最为⼴泛的HTTP协议。 主要区别主要体现在:

  1. ⻓连接 : 在HTTP/1.0中,默认使⽤的是短连接,也就是说每次请求都要重新建⽴⼀次连接
    HTTP 是基于TCP/IP协议的,每⼀次建⽴或者断开连接都需要三次握⼿四次挥⼿的开销,如果每次
    请求都要这样的话,开销会⽐较⼤。因此最好能维持⼀个⻓连接,可以⽤个⻓连接来发多个请
    求。HTTP 1.1起,默认使⽤⻓连接 ,默认开启Connection: keep-alive。 HTTP/1.1的持续连接
    有⾮流⽔线⽅式和流⽔线⽅式 。
    • 流⽔线⽅式是客户在收到HTTP的响应报⽂之前就能接着发送新的请求报⽂。
    • ⾮流⽔线⽅式是客户在收到前⼀个响应后才能发送下⼀个请求。
  2. 错误状态响应码 :在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源
    与资源的当前状态发⽣冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
  3. 缓存处理 :在HTTP1.0中主要使⽤header⾥的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引⼊了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略。
  4. 带宽优化及⽹络连接的使⽤ :HTTP1.0中,存在⼀些浪费带宽的现象,例如客户端只是需要某个对象的⼀部分,⽽服务器却将整个对象送过来了,并且不⽀持断点续传功能,HTTP1.1则在请求头引⼊了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就⽅便了开发者⾃由的选择以便于充分利⽤带宽和连接

总体而言HTTP1.1完胜HTTP1.0.http1.1的目标是全面提升优化1.0

HTTP1.0和HTTP2.0的区别

HTTP1.0已经比HTTP1.1弱很多了,相比于HTTP2则更差:

  • 1.HTTP2使用的是二进制传送,HTTP1.X是文本(字符串)传送。
    大家都知道HTTP1.X使用的是明文的文本传送,而HTTP2使用的是二进制传送,二进制传送的单位是帧和流。帧组成了流,同时流还有流ID标示,通过流ID就牵扯出了第二个区别
    2.HTTP2支持多路复用因为有流ID,所以通过同一个http请求实现多个http请求传输变成了可能,可以通过流ID来标示究竟是哪个流从而定位到是哪个http请求
    3.HTTP2头部压缩HTTP2通过gzip和compress压缩头部然后再发送,同时客户端和服务器端同时维护一张头信息表,所有字段都记录在这张表中,这样后面每次传输只需要传输表里面的索引Id就行,通过索引ID就可以知道表头的值了
    4.HTTP2支持服务器推送HTTP2支持在客户端未经请求许可的情况下,主动向客户端推送内容

总而言之:http/2.0的目标是改善用户使用web时的速度体验

URI和URL的区别

URI的作⽤像身份证号⼀样,URL的作⽤更像家庭住址⼀样。

  • URI(Uniform Resource Identifier) 是统⼀资源标志符,可以唯⼀标识⼀个资源
  • URL(Uniform Resource Location) 是统⼀资源定位符,可以提供该资源的路径。它是⼀种具体的 URI,即 URL 可以⽤来标识⼀个资源,⽽且还指明了如何 locate 这个资源

URL是⼀种具体的URI,它不仅唯⼀标识资源,⽽且还提供了定位该资源的信息

POST 与 GET 的区别

Get是从服务器上获取数据,是安全的和幂等的,POST是修改服务器上的数据

  • 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
  • 幂等 的意味着对同一URL的多个请求应该返回同样的结果。

GET请求的数据会附在URL之后,POST把提交的数据则放置在是HTTP包的包体中。POST的安全性更高

  • GET方式提交的数据最多只能是2048字节,理论上POST没有限制,可传较大量的数据
  • GET支持缓存(取到的资源),POST不支持缓存

总的来说,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。

用户状态保存

HTTP 是⼀种不保存状态,即⽆状态(stateless)协议。也就是说 HTTP 协议⾃身不对请求和响应之间
的通信状态进⾏保存。那么我们保存⽤户状态呢?

Session和Cookie

先来了解两个概念,Session和Cookie,Cookie 和 Session都是⽤来跟踪浏览器⽤户身份的会话⽅式,但是两者的应⽤场景不太⼀样

  • Cookie ⼀般⽤来保存⽤户信息,通过这种方式不需要用户反复去输入用户信息去登录
    • 我们在 Cookie 中保存已经登录过得⽤户信息,下次访问⽹站的时候⻚⾯可以⾃动帮你登录的⼀些基本信息给填了;
    • ⼀般的⽹站都会有保持登录也就是说下次你再访问⽹站的时候就不需要重新登录了,这是因为⽤户登录的时候我们可以存放了⼀个 Token 在 Cookie中,下次登录的时候只需要根据 Token 值来查找⽤户即可(为了安全考虑,重新登录⼀般要将 Token重写);
    • 登录⼀次⽹站后访问⽹站其他⻚⾯不需要重新登录
  • Session 的主要作⽤就是通过服务端记录⽤户的状态。 典型的场景是购物⻋,当你要添加商品到购物⻋的时候,系统不知道是哪个⽤户操作的,因为 HTTP 协议是⽆状态的。服务端给特定的⽤户创建特定的 Session 之后就可以标识这个⽤户并且跟踪这个⽤户了。
  • Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。Cookie 存储在客户端中,⽽Session存储在服务器上,相对来说 Session 安全性更⾼。如果要在Cookie 中存储⼀些敏感信息,不要直接写⼊ Cookie 中,最好能将 Cookie 信息加密然后使⽤到的时候再去服务器端解密

可以通俗的这么理解,Cookie在客户端保存用户信息,知道用户干了什么事儿,Session则在服务端给用户创建了相应的数据存档,下次只要对应用户登录就能读档,那么要想找到用户正确的访问内容需要二位配合了。

用户状态保存机制

Session 和Cookie联手可以解决这个问题,Session 的主要作⽤就是通过服务端记录⽤户的状态。典型的场景是购物⻋,当你要添加商品到购物⻋的时候,系统不知道是哪个⽤户操作的,因为 HTTP 协议是⽆状态的。

  • 服务端给特定的⽤户创建特定的Session 之后就可以标识这个⽤户并且跟踪这个⽤户了
  • ⼀般情况下,服务器会在⼀定时间内保存这个Session,过了时间限制,就会销毁这个Session
  • 在服务端保存 Session 的⽅法很多,最常⽤的就是内存和数据库(⽐如是使⽤内存数据库redis保存)。

既然 Session 存放在服务器端,那么我们如何实现 Session 跟踪呢?⼤部分情况下,我们都是通过在Cookie 中附加⼀个 Session ID 来⽅式来跟踪,这样用户登录并且携带sessionid,在访问对应网站时去redis里找对应的session信息,就拿到了购物车里的物品,也就是知道了买了什么东西。

运输层考点

TCP和UDP的区别、滑动窗口、拥塞控制、三次握手、四次挥手、为什么不是两次握手、为什么不是四次握手

TCP和UDP的区别

UDP和TCP的主要区别:

  • TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
  • TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报
  • TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

主要就是以上三种区别。

TCP可滑动窗口实现

滑动串口按照如下的方式步骤实现:

  1. B将确认号31告知A,然后A从该确认号开始,发送后边的窗口大小的数据

这里写图片描述

  1. 如果此时32,33没有按序到达,说明31没有收到,所以B仍然只能给A返回确认号仍然是31
    这里写图片描述
  2. 如果31,32,33都顺利到达,A收到了新的确认号34,则滑动窗口向前移动3

这里写图片描述
4. 如果A在连续发送完42-53之后,P2和P3重合,发送窗口内的序号都已经用完了,但还没有再收到确认,这样A就等待一段时间(重传计时器控制)后就重传这部分数据,重新设置重传计时器,直到收到B的确认为止。
在这里插入图片描述

以上有几个指针标识的区间如下:

  • P3-P1 = A的发送窗口大小
  • P2-P1 = 已发送但还没有收到确认的
  • P3-P2 = 允许发送但还没有发送的

需要注意的是,窗口大小是可变的。发送方的发送窗口不能超过接收方给出的接收窗口的数值

TCP拥塞控制实现

拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路器不致过载。拥塞控制多要做的都有一个前提,就是网络能够承受现有的网络负荷拥塞控制是一个全局性的过程,涉及到所有的主机、多有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往指点对点通信量的控制,是个端到端的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

TCP进行拥塞控制的算法有四种,即慢开始(slow-start)、拥塞避免(congestionavoidance)、快重传(fast retransmit)和快恢复(fast recovery)
在这里插入图片描述

慢开始和拥塞避免

发送方维持一个叫做拥塞窗口(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口
在这里插入图片描述

  • 慢开始算法的思路是:先探测一下,由小到大逐渐增大发送窗口,也就是说由小到大逐渐增大拥塞窗口数值。使用慢开始算法后,每经过一个传输轮次(transmission round),拥塞窗口cwnd就加倍
    在这里插入图片描述

  • 拥塞避免算法的思路:是让拥塞窗口cwnd缓慢地增加,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样,拥塞窗口cwnd按现行规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多

慢开始结合拥塞避免算法,ssthresh是算法的切换,窗口大小到达这个值开始从慢开始切换到拥塞避免,到达拥塞上限的时候,将ssthresh减半,窗口设置为1,重新开始。

快重传和快恢复

快重传算法首先要求接受方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等待自己发送数据时才进行确认。

这里写图片描述

  • 当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把慢开始门限ssthresh减半。这是为了预防网络发生拥塞。
  • 由于发送方现在认为网络很可能没有发生拥塞,因此与慢开始不同之处是现在不执行慢开始算法,而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

在这里插入图片描述

TCP三次握手

开始A和B都处于CLOSED状态然后B先进入LISTEN状态,等待请求

  • 首先Client端发送连接请求报文A发送后A进入SYN-SENT状态
  • Server段接受连接后回复ACK报文,并为这次连接分配资源,B发送后B进入SYN-RCVD状态
  • Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源。A发送后A进入ESTAB-LISHED状态,B收到后也进入该状态,这样TCP连接就建立了。

三次握手的示意图如下:
在这里插入图片描述

为什么不是两次握手

为什么要三次握手防止失效的连接请求报文段突然又传送到主机B
场景:A首先发送一个连接请求,但是该请求在网络节点上滞留了,没有收到确认。于是A重传了一次请求,并且收到了B的确认,于是连接建立,数据传输完成后,释放连接,假定A发出的第一个请求报文段并没有丢失,而是在某些网络节点上滞留,本来是一个失效的请求,但B收到后误认为是A再次发出一个新请求,于是向A发送确认,同意建立连接。

  • 假定采用两次握手,那么只要B发出确认,则新的连接就建立了。由于A并没有发出请求,因此不理会B的确认,也不会向B发送数据,但B却以为新的连接已经建立,并一直等待A的数据,B的许多资源就这样白白浪费了。
  • 假定采用三次握手,则B发出确认,但A因为并没有发请求,所以不理会B的确认,B没有收到A的确认,则连接建立失败,B知道连接建立失败。会回收资源。

极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,“三次握手”很有必要!

为什么不是四次握手

握手握的是序列号,四次握手的过程是

  1. A发送给B 同步序号SYN+A的seq为x
  2. B收到后确认收到ACK发给A,然后存储该序号SYN为B的ack=x+1,确认A的seq按序到达
  3. B向A发送SYN+自己的序列号seq为y
  4. A收到B的序列号,存储到本地,发送ack=y+1,确认收到了,发送ACK+ack和自己的新序号seq为x+1

由此可以看出,2和3两步可以合成一部,所以没有必要四次握手

四次挥手

TCP连接断开过程开始的时候A和B都处于ESTAB-LISHED状态

  • 假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。A发完后A进入FIN-WAIT-1状态

  • 所以你先发送ACK,“告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。B收到后向A发送ack,B发完后B进入COLSE-WAIT状态

  • A收到B的确认后进入FIN-WAIT-2状态

  • 当B确定数据已发送完成,则向A发送FIN报文,“告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。A收到B的ack就进入Client端收到FIN报文后, "就知道可以关闭连接了。B发完后B进入 LAST-ACK状态

  • 但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,“就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

在这里插入图片描述

设置2MSL时间的问题

为什么要设置2MSL的时间:

  • 1,为了保证A发送的最后一个ACK能到达B。因为这个ACK可能丢失,因为使B收不到确认,无法关闭,有个这段时间,B就可以超时重传FIN+ACK,然后A就重传一次ACK,然后重置定时器。最后A,B都能顺利关闭,如果没有这段时间,A发送完ACK就关闭,B不一定能顺利关闭
  • 2,防止“已失效连接请求报文段”出现在本连接中,A在发送完最后一个ACK后,再经过2MSL,就可以使本链接持续的时间内所产生的所有报文段都在网络中消失,这样就可以使下一个连接中不再出现这种旧的请求报文段

这个状态标准的持续时间是4分钟

网络层考点

分组转发算法、地址解析协议ARP、子网划分。

分组转发算法

分组转发算法示意如下:
在这里插入图片描述

  1. 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
  2. 若网络 N 与此路由器直接相连。则把数据报直接交付目的主机 D。否则是间接交付,运行(3)。
  3. 若路由表中有目的地址为 D 的特定主机路由。则把数据报传送给路由表中所指明的下一跳路由器。否则,运行(4)。
  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器。否则,运行(5)。
  5. 若路由表中有一个默认路由。则把数据报传送给路由表中所指明的默认路由器;否则,运行(6)。
  6. 报告转发分组出错。

特定主机路由:这样的路由是为特定的目的主机指明一个路由。采用特定主机路由可使网络管理人员能更方便地控制网络和測试网络,同一时候也可在须要考虑某种安全问题时采用这样的特定主机路由。

默认路由:作用:路由器还可采用默认路由以降低路由表所占用的空间和搜索路由表所用的时间。仅仅要目的网络在路由表中匹配不到,就一律选择默认路由

地址解析协议ARP

己经知道了一个机器(主机或路由器)的IP地址,需要找出其相应的硬件地址。地址解析协议ARP就是用来解决这样的问题的,由于是IP协议使用了ARP协议,因此通常就把ARP协议划归网络层。但ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址
在这里插入图片描述
场景举例:主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;注意,需要是同一局域网内的解析当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

  1. 根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址
  2. 如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
  3. 主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
  4. 主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
  5. 当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

需要注意的是:ARP是广播发送,ARP响应是单播发送的

划分子网

从两级IP地址到三级IP地址,在早期,原来的两级IP地址的设计不够合理。

  • 第一,IP地址空间的利用率有时很低。有的单位申请到了一个B类地址网络,但所连接的主机数并不多,可是又不愿意申请一个足够使用的C类地址,理由是考虑到今后可能的发展。
  • 第二,给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
  • 第三,两级IP地址不够灵活。有时情况紧急,一个单位需要在新的地点马上开通一个新的网络。但是在申请到一个新的IP地址之前,新增加的网络是不可能连接到互联网上工作的。

为解决上述问题,从1985年起在IP地址中又增加了一个“子网号字段”,使两级IP地址变成为三级IP地址,它能够较好地解决上述问题,并且使用起来也很灵活。这种做法叫做划分子网(subnetting) [RFC 950]。或子网寻址或子网路由选择 。划分子网己成为互联网的正式标准协议。划分子网是通过借用IP地址的若干位主机位来充当子网地址从而将原网络划分为若干子网而实现的。划分子网的思路如下:

  • 划分子网时,随着子网地址借用主机位数的增多,子网的数目随之增加,而每个子网中的可用主机数逐渐减少。

子网划分举例

以C类网络为例,原有8位主机位,2的8次方即256个主机地址,默认子网掩码255.255.255.0

  • 借用1位主机位,产生2个子网,每个子网有126个主机地址
  • 借用2位主机位,产生4个子网,每个子网有62个主机地址

每个网中,第一个IP地址(即主机部分全部为0的IP)和最后一个IP(即主机部分全部为1的IP)不能分配给主机使用,所以每个子网的可用IP地址数为总IP地址数量减2;根据子网ID借用的主机位数,我们可以计算出划分的子网数、掩码、每个子网主机数。
在这里插入图片描述
若子网占用7位主机位时,主机位只剩一位,无论设为0还是1,都意味着主机位是全0或全1。由于主机位全0表示本网络,全1留作广播地址,这时子网实际没有可用主机地址,所以主机位至少应保留2位

子网掩码

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分

  • 子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。
  • 如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。

其实就是用主机位为0与掉ip地址里1的部分,这样就证明在同一个网段。
在这里插入图片描述
如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码

数据链路层考点

透明传输和差错控制。

透明传输

透明是一个很重要的术语。它表示:某一个实际存在的事物看起来却好像不存在一样(例如,你看不见在你前面有块100%透明的玻璃的存在)。在数据链路层透明传送数据表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的

当帧的数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃:
在这里插入图片描述

为了解决透明传输的问题,可以使用字符填充或者字节填充,:

  • 发送端的数据链路层在数据中出现控制字符SOH或EOT的前面插入一个转义字符ESC(其十六进制编码是1B,二进制是00011011)
  • 接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符

这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个
在这里插入图片描述

差错检测

现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错1可能会变成0,而0也可能变成1。这就叫做比特差错。比特差错是传输差错中的一种。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER (Bit Error Rate)。例如,误码率1000时,每1000个比特就会出现一个比特的差错。误码率与信噪比有很大的关系。如果设法提高信噪比,就可以使误码率减小。实际的通信链路并非是理想的,它不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC (Cyclic Redundancy Check)的检错技术,帧内的差错检测和传输过程中帧出现的帧丢失,帧重复,帧失序。为了防止出现传输差错,增加了:帧编号,确认和重传机制

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值