计算机网络八股文

目录

一、应用层:

1、DNS域名解析协议:

2、FTP文件传输协议

3、TFTP简单文件传输协议

4、DHCP动态主机配置协议

5、电子邮件协议

6、HTTP超文本传输协议:

6.1、cookie和session

6.2、http和https 的区别

7、web页面请求过程:

二、传输层

1、传输层:为应用层提供通信服务;向高层屏蔽了下面网络核心中的细节,使得在传输层看上去就好像是传输层实体之间建立的一条端到端的逻辑通信信道。

2、IP协议能将客户端的分组按照目的地址发送给服务器,为什么还需要传输层?

3、用户数据报协议UDP:

4、传输控制协议TCP:

4.1、为什么需要TCP协议

4.2、为什么序列号需要随机产生

5、TCP三次握手:

6、四次挥手:

7、为什么要三次握手,而不能是两次

9、在四次挥手中,为什么客户端最后要等待2MSL后才能释放?

10、TCP如何保证数据传输的可靠性

11、滑动窗口

12、传输协议

13、流量控制

14、拥塞控制

15、流量控制和拥塞控制的区别

16、TCP粘包和拆包问题:

三、网络层

1、网络层

2、网络层和数据链路层之间的关系

3、IP分址

4、IP分片和重组(首部固定>=20字节)

5、IPv6:与IPv4之间通过双协议栈进行通信

6、ARP地址解析协议

7、NAT网络地址转换协议

7.1、虚拟专用网VPN

8、网际控制报文协议ICMP

9、路由器的结构

10、路由分组转发流程

11、路由选择协议

四、数据链路层

1、数据链路层

2、基本问题:

3、信道分类

4、CSMA/CD协议

5、MAC地址(硬件地址)

6、适配器

7、局域网

8、以太网

9、各层之间的设备


一、应用层:

1、DNS域名解析协议:

DNS是一个分布式的数据库。

(1)、作用:从域名中解析出IP地址,提供了主机名和IP之间的相互转换的服务。

(2)、DNS使用的是UDP协议,端口号为53。因为使用了UDP,故需要域名解析器和域名服务器自己保证数据传输的可靠性。

(2.1)、为什么要使用UDP:因为UDP比较快,不需要像TCP一样建立连接

(3)、域名解析的方式:首先是检查主机缓存是否有域名到IP的映射,有则结束,没有则向本地域名服务器进行查询,看是否查询到对应域名主机的IP地址,查到,则返回,未查到,则继续查询其他域名服务器(查询方式为递归查询或迭代查询),从根域名服务器开始查询,自上而下查询。

(4)、为什么域名可以查到对应主机,还需要IP地址呢?

                因为IP地址是固定的长度吗,,而域名的长度不固定,所以机器处理起来会计较困难。

(5)、域名服务器中的高速缓存的作用:减轻服务器的负担,提高DNS的查询速度,提高性能。每过一段时间高速缓存就会删除数据,目的是为了保持域名和域名服务器的一致性。

(6)、数据头部:1、标识符(ID,16位);2、标志符(flag,16位):标志查询方式;等等

2、FTP文件传输协议

(1)、链接方式:TCP链接。

(2)、FTP在使用过程中需要建立两条TCP链接:第一条为控制连接,端口号为20;第二条为数据传输连接,端口号为21。

(3)、使用两条连接的作用:使协议更简单和更容易实现,同时在传输文件时,还可以通过控制连接来控制文件的传输。同时,由于控制连接和数据传输连接的分离,使得主机之间的控制报文传输和数据报文传输不会发生混乱。

3、TFTP简单文件传输协议

(1)、连接方式:UDP连接

(2)、每次传输文件长度为512字节,最后一个数据报的长度可以不足512字节。若最后一个数据报的长度刚好为512字节,那么发送端还需要发生一个只包含头部的数据报,以表示数据发送完毕。

4、DHCP动态主机配置协议

(1)、连接方式:UDP连接,端口号:67/68

(2)、自动配置用户的IP地址,网关IP地址,子网掩码等

(3)、工作过程:当计算机接入一个新的网络当中时,需要动态的分配其IP地址和其他东西

主机向DHCP服务器发送一个DHCP报文请求,DHCP服务器接收后,响应该报文,后向主机发送一个DHCP报文(该报文中就携带租用给主机的IP地址和其他一些信息)(目的IP全为1,主机IP全为0)

1)、客户端发送 Discover 报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理。

2)DHCP 服务器收到 Discover 报文之后,发送 Offer 报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个 DHCP 服务器提供的信息,因此客户端需要进行选择。

3)、如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。

4)、DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。

5、电子邮件协议

(1)、连接方式:TCP连接,

(2)、组成:用户代理,邮件服务器、邮件协议

(3)、邮件协议包括:发送协议:SMTP(161/162);接收协议:POP3(110),

HTTP(80),IMAP(143)

(4)、工作方式:用户代理--->(SMTP/TCP)--->邮件服务器------>(SMTP/TCP)--->邮件服务器--->((POP3/IMAP/HTTP)/TCP)。

(5)、SMTP只能发送ASCII码。

(6)、POP3是把邮件从邮件服务器下载下来,存在客户端中,并删除服务器中的邮件;而IMAP是将邮件存放在邮件服务器上,保持同步更新,也可以将邮件下载到客户端。

(7)、为什么不能把邮件服务器直接装到用户计算机中:

        1)、计算机没有足够的内存空间来运行

        2)、计算机没有足够的CPU资源来运行服务器,因为服务器需要每时每刻都在运行且连接着互联网。

6、HTTP超文本传输协议:

(1)、连接方式:TCP连接,端口号:80

(2)、请求报文格式:

第一行包含:请求方法、URL、协议版本
接下来多行:请求首部,每个首部都有一个自己的名称和其对应的值
接下来一行:空行,用于分隔首部和内容主体
接下来多行:请求内容主题
GET http://www.example.com/ HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Host: www.example.com
If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT
If-None-Match: "3147526947+gzip"
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 xxx

param1=1&param2=2

URL:统一资源定位符

首部方法:

  1. GET:获取资源,可以理解为读取或者下载数据;
  2. HEAD:获取资源的首部信息(主要用于确认 URL 的有效性以及资源更新的日期时间等);
  3. POST:向资源提交数据,相当于写入或上传数据;
  4. PUT:类似 POST,向服务器传输新的数据,用于完全替换旧的数据;
  5. DELETE:删除服务器资源;
  6. CONNECT:要求在与代理服务器通信时建立隧道;
  7. OPTIONS:查询可支持的方法;
  8. TRACE:用于回环测试,追踪路径。
  9. PATCH:对资源进行部分修改

GET和POST的区别:

  1. GET是向服务器获取数据,而POST是向服务器传送数据
  2. 对于数据类型的限制:GET只允许是ASCII字符,而POST没有限制
  3. 在参数上:两者都可以带参数,但是GET所带参数存放在URL中,而POST所带参数存放在主体中
  4. GET可缓存而POST不可缓存
  5. GET 的语义是请求获取指定的资源。GET 方法是安全、幂等、可被缓存的。
  6. POST 不安全,不幂等,(大部分实现)不可缓存。
  7. 幂等:指的是多次执行相同的操作,其返回结果都是一样的
  8. 安全:指请求方法不会修改服务器上的资源

(3)响应报文格式:

第一行包含:协议版本、状态码以及描述
接下来多行:是首部内容
一个空行:分隔首部和内容主体
最后是响应的内容主体
HTTP/1.1 200 OK
Age: 529651
Cache-Control: max-age=604800
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 648
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Nov 2020 17:53:39 GMT
Etag: "3147526947+ident+gzip"
Expires: Mon, 09 Nov 2020 17:53:39 GMT
Keep-Alive: timeout=4
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Proxy-Connection: keep-alive
Server: ECS (sjc/16DF)
Vary: Accept-Encoding
X-Cache: HIT

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
	// 省略... 
</body>
</html>

状态码:

  1. 1xx:表示通知信息(如:100,表示到目前为止都很正常,客户端可以继续发送信息)
  2. 2xx:表示成功(如:200表示成功接收,204:表明已经成功接收,但返回的响应报文中不含主体部分)
  3. 3xx:表示重定向,如果要完成请求,那么还必须采取进一步的行动(如:301:永久重定向,302:临时重定向,303:临时重定向,但要求客户端必须用GET获取资源)
  4. 4xx:表示客户端的错误(如400:表示请求报文中存在语法错误,401:表示发送的请求需要认证,403:表示请求被拒绝,404:表示没有找见)
  5. 5xx:表示服务器的错误(500:表示服务器正在执行时发生错误,501:表示客户端请求的功能服务器暂时还不支持;503:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求)

(4)、HTTP1.0,HTTP1.1,HTTPS的区别:

        1)HTTP1.0:非持续链接(短连接):每次HTTP请求都需要重新建立TCP连接;缺点:时       间消耗大,对服务器负担重(因为每一次TCP连接都需要服务器响应连接)

        2)HTTP1.1:持续连接(长连接):客户端和服务器建立连接后,在后面一段时间内该连接都持续有效。减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。(断开方式:主动释放,或长时间内客户端和服务器没有数据交互,服务器主动释放连接)

工作方式:

  1. 流水线方式:客户在收到前一个响应之前,能够继续发送新的请求
  2. 优点:减少了TCP连接的空闲时间,提高了文档的下载速率
  3. 缺点:当出现网络拥塞时,客户端在不知情的情况下,会继续向服务器发送请求,阻塞网络
  4. 非流水线方式:客户收到前一个响应后才能发出下一个请求
  5. 优点:可以避免在出现网络拥塞的时候,继续向网络中添加请求
  6. 缺点:在服务器发送完一个对象后,TCP连接会出现一段空闲,浪费服务器资源

        3)HTTPS:在应用层和传输层之间加了一层SSL/TLS安全协议传输层。在TCP建立三次握手后,还需要进行四次SSL/TLS握手,这样才能进行报文的加密传输。

  1. 对称加密:只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换。
  2. 非对称加密:使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢。

(5)、HTTP传输都是无状态的明文传输,同一客户多次访问同一个服务器上的同一个资源时,服务器返回的响应和第一次返回的响应相同。故在HTTP1.1中,可以使用cookie,用于跟踪用户信息,并将服务器返回的cookie保存在客户端,当客户端下次继续访问同一资源时,就将该cookie一同发给服务器。

6.1、cookie和session

(1)、session:和cookie一样,都是客户端和服务器之间保持状态的解决方案,都是用于跟踪用户信息

(2)、cookie是将数据保存在客户端上,客户端请求服务端时会将cookie一起提交;而session是将数据保存在服务器上,主要是通过检索sessionid查看状态,保存sessionid 的方法可以采用cookie,如果cookie被禁了的话,则可以采用URL重写机制(把会话ID保存在URL中),也可以保存在数据库、文件和内存中。对于安全性而言,session更安全

(3)、cookie只能存储字符串,而session能存储任何数据类型,所有当考虑数据的复杂性时,首先使用的是session

(4)、cookie和session的存储数据的大小限制也不同:cookie数据存储的大小受浏览器的限制,而session数据的存储大小受当前内存的限制

(5)、

6.2、http和https 的区别

(1)、端口号不同,http是80,而https 是443

(2)、传输方式不同,http是明文传输,而https 是密文传输

(3)、开销不一样,由于https是加密传输,所以,https会带来更大的CPU和内存的消耗

7、web页面请求过程:

  1. DHCP配置主机信息:主机接入网后,以广播的形式向DHCP服务器发送请求,获取用户需要配置的信息;
  2. DNS域名解析:通过域名向域名服务器解析出域名中服务器的ip地址等信息;
  3. HTTP请求:建立TCP连接,然后发送HTTP请求报文。
  4. 服务器响应请求,发送响应报文
  5. 客户端浏览器接收到响应报文后,解析报文中的代码
  6. 客户端浏览器对响应后的页面进行渲染呈现给用户

二、传输层

1、传输层:为应用层提供通信服务;向高层屏蔽了下面网络核心中的细节,使得在传输层看上去就好像是传输层实体之间建立的一条端到端的逻辑通信信道。

2、IP协议能将客户端的分组按照目的地址发送给服务器,为什么还需要传输层?

(1)、因为网络层是提供主机到主机之间的通信,数据通信还保留在网络层,而无法到达应用进程;而传输层是提供端到端之间的通信,能够将数据分组交付到应用进程中。

3、用户数据报协议UDP:

(1)、特点:无连接的、尽最大可能交付的、没有拥塞控制的、面向报文的用户数据报协议,支持一对一,一对多,多对一,多对多的交互通信。(常用在流媒体中)

(2)、优点:头部开销小(8字节),传输速度快,不需要维护复杂的连接状态,对应用层传下来的报文,直接加上UDP头部,就交付给网络层。

(3)、缺点:因为没有建立连接,所以在传输过程中可能会出现错误(如报文丢失,报文出错,乱序等等),那么就需要用户进程来保证数据传输的可靠性。

(4)、首部:其中伪首部只是临时添加到UDP数据报中,用于计算校验和;伪首部既不向下传,也不向上递交,只是为了计算检验和而临时添加的。

4、传输控制协议TCP:

(1)、特点:面向连接的、提供可靠交付的、有流量控制和拥塞控制的、面向字节流的传输控制协议,只支持一对一,全双工通道。

(2)、优点:可靠传输,保证数据传输的可靠性,按序交付给应用进程。

(3)、缺点:头部开销大(最少20字节,最多60字节),且需要维护复杂的链接。

(4)、首部:

  • 序号:每次建立连接时,生成一个随机序号,用于对字节流进行编号,用来解决乱序问题
  • 确认号:期望收到的下一个报文段的序号,用来解决丢包问题
  • 数据偏移:指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度
  • 确认ACK:当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1
  • 同步SYN:在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1
  • 终止FIN:用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接
  • 窗口:窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的
  • SYN攻击:大量伪造ip地址的SYN,去请求连接服务器,导致服务器大量处于半连接状态

4.1、为什么需要TCP协议

(1)、因为IP层是不可靠的,保证不了数据的可靠交付、保证不了数据的按序交付、也保证不了数据的完整性,而TCP协议保证了数据的可靠交付。

4.2、为什么序列号需要随机产生

(1)、防止历史的报文被下一个相同的四元组的连接接收

(2)、为了安全性

5、TCP三次握手:

服务器被动连接(创建一个传输控制块TCB,准备接受客户进程的连接请求,进入listen((收听)状态),客户端主动连接

(1)、客户端请求建立连接,向服务器发送一个同步报文(SYN=1),并随机设置一个初始序列号x(seq=x),并进入SYN-SENT(同步已发送)状态。(消耗一个序列号,不可带数据)

(2)、服务器收到连接请求后,如果同意建立连接,则向客户端发送一个同步确认报文(SYN=1,ACK=1),并随机设置一个初始序列号y(seq=y),确认号为ack=x + 1,序列号为             seq = y,并进入SYN-RCVD(同步确认)状态。(消耗一个序列号,不可带数据)

(3)、客户端收到确认报文后,向服务器端发送确认报文(ACK=1),确认号为ack=y + 1,序列号为seq = x + 1,客户端进入ESTABLISHED(已建立连接)状态。(带数据则消耗一个序列号,不带数据,则不消耗一个序列号)

(4)、服务器端收到确认报文后,也进入ESTABLISHED(已建立连接)状态。

6、四次挥手:

(1)、客户端向服务器发送连接释放报文(FIN=1,ACK=1),主动关闭连接,同时等待服务器的同意

(2)、服务器收到释放请求后,立即发出确认报文(ACK=1),此时TCP连接处于半关闭状态。

(3)、当服务器向客户端发送完数据后,发送连接释放报文(FIN=1,ACK=1),主动关闭连接,同时等待客户端的同意

(4)、客户端收到释放请求报文后,立即发送确认报文(ACK=1),同时进入TIME-WALT(时间等待)状态 ,此时客户端的TCP还没有释放,只有等2MSL(最长报文寿命)结束后才释放;而服务器端只要收到确认就释放连接。

7、为什么要三次握手,而不能是两次

(1)、防止已过期的连接请求,发送到服务器,从而使服务器处于半连接状态,因而产生错误和浪费资源。

(2)、同步序列号,告诉对方自己的初始序列号,和知道对方的初始序列号。

8、为什么不能是四次握手?

(1)、四次握手是将服务器对客户端发来的连接请求的确认和服务器对客户端的连接请求分开发送,因为两者没有任何关联,所以可以在一个数据报中发送,从而节约资源和减少建立连接时间。

9、在四次挥手中,为什么客户端最后要等待2MSL后才能释放?

(1)、确保客户端发送的最后一个确认报文,服务器端能够收到。(如果服务器端没有收到,那么服务端将重传连接释放请求报文,客户端刷新2MSL)

(2)、防止已失效的连接请求报文出现在之后的连接中(因为TCP在2MSL中使用不同的序列号,所以,在这段时间内可以基本保证在这次的连接中已过期的连接请求报文都从网络中消失)

10、TCP如何保证数据传输的可靠性

(1)、TCP提供了检验和、序列号/确认应答机制,超时重传、滑动窗口、流量控制、拥塞控制等方法

11、滑动窗口

(1)、滑动窗口既提高了报文传输的效率,也避免了发送方发送过多的数据而导致接收方无法正常处理的异常,起到了一个限流的作用

(2)、窗口是缓存中的一部分,在发送方和接收方各有一个窗口(发送窗口和接收窗口),接收方通过TCP报文中的窗口字段,告诉发送方,自己窗口的大小,从而发送方根据这个值设置自己的发送窗口的大小。保证了发送方发送的数据,对接收方来说都有能力可以接收。在发送窗口中的字节都是允许被发送的,在接收窗口中的字节也都是被允许接收的。

(3)、发送窗口:其中的字节是已经发送出去的,但还未收到确认。大小由流量控制窗口和拥塞窗口决定,取其最小值。

12、传输协议

(1)、停止等待协议:发送窗口=1,接收窗口=1,及发送方发送一个数据报后,只有等到接收到确认报文后,才能发送下一个报文

(2)、go-back-n协议:发送窗口>1,接收窗口=1,必须按序接收,发送方可以发送多个报文,而接收方只能一次接收一个报文,但接收方可以累计确认报文后,再发送确认报文(确认报文号为按序到达的最后一个报文的确认报文),这样就不用接收一个报文,就发送一个报文。如果报文不是按序到达接收端,那么接收端在接收到无序的报文时就会发送接收窗口中待接收报文前的一个确认报文,当发送端连续收到三个重复报文,那么接收端就立即重传。

(3)、sr:发送窗口>1,接收窗口>1,可以乱序接收,非累积确认。

13、流量控制

(1)、控制发送方的发送速率,保证接收方能够来得及接收

(2)、接收方可以通过TCP报文中的窗口字段控制发送方的发送窗口值的大小,从而影响发送方的发送速率。

(3)、当接收方的发给发送方的窗口值为0时,发送方将不在发送报文,发送方将设置一个持续计时器,在这段时间内将等待接收方发送的非0窗体的通知,若接到,则开始传输,没有收到,那么到达计时器所设置的时间后,发送方将发送一个字节的探测报文,而接收方接收到该报文后,也将自己的窗口值设置在TCP报文中,若依然为0,则刷新计时器,否则就打破死锁,重新传输报文。

14、拥塞控制

(1)、网络拥塞:对网络资源的需求大于可用的网络资源。如果网络出现拥塞,分组将丢失,那么发送方将继续重传分组,这将导致网络拥塞程度更高。

(2)、拥塞控制:防止过多的数据注入到网络中,这样可以防止网络过载。当网络出现拥塞时,将控制发送方的发送速率。

(3)、拥塞控制算法:慢开始,拥塞避免,快重传,快恢复

        发送方维护着一个拥塞窗口,并设置一个慢开始门限ssthresh

(情况1:遇到超时:拥塞窗口值设为1,慢开始门限减半,从新开始慢开始;情况2:遇到三个重复确认,慢开始门限减半,拥塞窗口值为慢开始门限,开始拥塞避免)

  • 慢开始:刚开始设定拥塞窗口值为1,当收到确认后,将拥塞窗口值翻倍,从小到大增大窗口值,知道拥塞窗口值超过慢开始门限后,开始拥塞避免算法。
  • 拥塞避免:当拥塞窗口值超过慢开始门限后,开始线性增大拥塞窗口值(加1)。
  • 快重传:连续收到三个重复的确认,马上重传数据报。
  • 快恢复:当出现快重传时,慢开始门限减半,设定拥塞窗口值为慢开始门限,开始拥塞避免。

15、流量控制和拥塞控制的区别

(1)、拥塞控制是一个全局性的过程,包括网络中的所有主机和路由器

(2)、流量控制是指点对点的通信量的控制,是端到端的问题

16、TCP粘包和拆包问题:

(1)、粘包:发送的数据包(消息)小于一次tcp报文所能传输的最大值,由于发送速度过快,此时TCP在封装过程中会将多个完整的消息封装成一个TCP数据包

(2)、拆包:发送的数据包(消息)超过一次tcp报文所能传输的最大值时,就会将一个数据包拆成多个最大tcp长度的tcp报文分开传输。进行MSS(最大报文长度)大小的TCP分段,当(TCP报文长度-TCP头部长度)>MSS的时候将发生拆包。

(3)、解决办法:

  • 发送端给每个数据包添加TCP首部时,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度(简单理解就是,应用层下来的报文前面加上一个报文长度字段)
  • 发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来
  • 可以在数据包之间设置边界,如添加特殊符号,这样,接收端通过这个边界就可以将不同的数据包拆分开

三、网络层

1、网络层

(1)、负责主机与主机之间的通信,向上层提供简单灵活的、无连接的、尽最大努力交付的数据报服务

(2)、使用IP协议,可以把异构的物理网络连接起来,使得在网络层看来就好像是一个统一的网络。

2、网络层和数据链路层之间的关系

(1)、网络层提供的是主机与主机之间的通信,IP地址是网络层及以上各层使用的地址是一种逻辑地址,负责的是在没有直连的两个网络之间的通信

(2)、数据链路层负责两段链路之间的通信,而Mac地址是数据链路层和物理层使用的地址,提供的是两个直连的通信设备之间的通信

(3)、在数据传输过程中,数据包中的源IP,目的IP都不会发送变化,而源MAC地址和目的MAC地址在一直变化

3、IP分址

(1)、分类:IP地址 ::= {<网络号>, <主机号>}

  • A类:0.0.0.0 - 127.255.255.255 / 0(8位网络号)
  • B类:128.0.0.0 - 191.255.255.255 / 10(16位网络号)
  • C类:192.0.0.0 - 223.255.255.255 / 110(24位网络号)
  • D类: 224.0.0.0 - 239.255.255.255 / 1110
  • E类: 240.0.0.0 - 247.255.255.255 / 1111
  • 主机号全为1时,为指定某个网络下的所有主机,用于多播
  • 主机号全为0时,为指定某个网络
  • 网络号全为0时,表示为保留地址,指的是“本网络”
  • 网络号为127(01111111)时,被保留用做本地软件进程之间做回环测试用,127不是一个网络地址

(2)、划分子网:主机号中,拿出一部分作为子网号,把两级IP划分为三级IP;要使用划分子网,就必须要子网掩码(网络号和子网号全位1,主机号全为0);注意在外部网络看来,是不存在子网的;IP地址 ::= {<网络号>, <子网号>, <主机号>}

(3)、无分类地址:前面为网络前缀,后面为主机号;表现形式:a.b.c.d/x  其中x为网络前缀位数

  • 子网掩码:网络前缀的位数全为1,主机号的位数全为0,子网掩码和Ip地址相与,即可得到网络号
  • 在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。因为最长前缀匹配是最精确的匹配

4、IP分片和重组(首部固定>=20字节)

(1)、每种数据链路都有一个最大传输单元MTU(加上头部的IP数据报),且每种数据链路的MTU都是不同的(因为每种数据链路的使用目的不同),所以,IP数据包大于MTU时,就会被分片(分片过后的IP数据包,会在IP头部中的标识,标志,片偏移中标记),经分片过后的IP数据包,不会在路由器中重组,只有在主机中重组

(2)、由于分片在传输过程中会遇到分片丢失,一旦有一个分片丢失,那么整个IP数据报都将作废,所以,对于TCP来说,在TCP层引入了MSS,也就是在TCP层进行分片,而不是在IP层分片;而对于UDP来说,尽量不要发送大于MTU的数据报

5、IPv6:与IPv4之间通过双协议栈进行通信

6、ARP地址解析协议

(1)、功能:通过目的IP地址得到目的MAC地址

(2)、如果主机A知道主机B的IP地址,但是ARP高速缓存中,没有该IP地址到MAC地址的映射,那么主机A将通过广播的方式发送ARP请求分组,主机B在收到该请求后,将响应该请求,主机B将发送ARP响应分组给主机A告诉其MAC地址,主机A在收到响应后,将其主机B的IP地址到MAC地址的映射写入其高速缓存中。

7、NAT网络地址转换协议

(1)、功能:将私有IP+端口号转换成公有IP,也被叫做网络地址与端口转换NAPT

(2)、缺点:外部无法主动与内部服务器建立连接;转换表生成和转换过程中会产生其性能的消耗;若NAT重启,那么之前建立的连接都将重置

7.1、虚拟专用网VPN

(1)、用于内部网络通信,不于外部网络通信,其IP地址是专用于内部通信的地址(已经分块好了的),不同的专用网,可以使用相同的IP地址。

(2)、虚拟专用网可以使用公用的互联网作为本机构各个专用网之间的通信载体。

8、网际控制报文协议ICMP

(1)、作用:为了更有效的转发IP数据报和提高交付成功的机会。封装在IP数据报中,但并不属于高层协议,而是属于网络层协议

(2)、主要分为差错报告报文和询问报文

  • 差错报告报文:
  • 终点不可达(类型的值:3)
  • 改变路由(类型的值:5):如果主机发现从发往某个目的地址的数据报的最佳路由是经过网络上的其他某个路由器时,那么路由器就用改变路由报文把这一情况发给主机,主机就在自己的路由表中添加这样一个项目。
  • 时间超过(类型的值:11)
  • 参数问题(类型的值:12)
  • 询问报文:
  • 回送(Echo)请求或回答(类型的值:8/0)
  • 时间戳请求或回答(类型的值:13/14)

(3)应用:

  • ping:主机向目的主机发送ICMP Echo请求报文,目的主机收到后,发送Echo回答报文,ping会根据时间和响应的次数估算出数据包的往返时间和丢包率。(是应用层直接使用网络层,没有经过运输层)
  • traceroute:用来跟踪一个分组从源点到终点的经过路由器的路径(丢包后的路由器向源主机发送时间超过差错报告报文)

(4)、8字节,前4字节:类型、代码、检验和;后4字节:与类型有关

9、路由器的结构

(1)、路由器从功能上分:路由选择和分组转发

(2)、路由器中维护着一张表,实时更新

10、路由分组转发流程

  • 从数据报首部提取出目的IP地址D,和目的网络地址N
  • 若N就是与此路由器直接相连的某个网络地址,则进行直接交付
  • 若路由表中有目的地址为D的特定路由,则把数据传送给表中指明的下一跳路由
  • 若路由表中,有达到网络N的路由,那么就把数据报转发给路由表中指明的下一跳路由
  • 若路由表中有一个默认路由,那么就把数据报转发给路由表中指明的默认路由
  • 否则报告转发分组出错报文

11、路由选择协议

(1)、自治系统AS:自治系统AS是在单一技术管理下的一组路由器,在自治系统中,所有的路由器的路由选择算法都是一样的,而不同的自治系统,其路由选择算法可以不同

(2)、路由选择协议都是自适应的,可以根据网络通信量和拓扑结构的变化而做出相应的变化,属于动态路由选择策略

(3)、内部网关协议:RIP,OSPF

  • RIP:基于距离矢量算法的路由选择协议(Bellman-Ford算法),其中距离指的是跳数,相邻两路由距离为1,跳数最多为15,超过15即为不可达;使用的是UDP协议
  • 步骤:RIP协议是按照固定时间间隔和相邻的路由器交换自己的路由表信息,经过若干次交换后,自治系统中的所有路由器都能知道在该自治系统中到达所有网络的最短距离和下一跳路由
  • 若在规定时间内,没有收到相邻路由器的路由表,那么就把该相邻路由器标记为不可达,即把距离设置为16
  • 好消息传得快,坏消息传得慢,因为有可能形成局部环路

  • OSPF:基于链路状态算法的路由选择协议(Dijkstra算法,最短路径优先)
  • 在本自治系统中用洪泛法向所有路由器发送信息,发送的信息是与本路由器相邻的所有路由器的链路状态;当链路状态发送变化时,路由器就会发送信息,更新路由表
  • 所有路由器都具有相同的全网的拓扑结构,相比于RIP,OSPF收敛更快,但是会产生链路震荡

(4)外部网关协议:BGP

  • 自治系统间的路由选择协议,TCP连接
  • 只能选择一条较好的路由,而不是最佳的路由
  • 每个自治系统配置的有BGP发言人,自治系统间可以通过BGP发言人来交换路由信息

四、数据链路层

1、数据链路层

(1)、数据链路层是两个通信节点之间的数据传输;是将实现控制数据传输协议的硬件和软件加到链路上,即就构成了数据链路层

(2)、数据链路层是在适配器上封装数据的

2、基本问题:

(1)、封装成帧:将网络层传下来的数据,加上链路层首部(SOH)和尾部(EOT),封装成数据帧

(2)、透明传输:在数据中添加转义字符(ESC),以防引起数据传输错误

(3)、差错检测:接收方通过发送和接收双方规定好的检测方法,检测数据是否出错;

  • 循环冗余检验
  • 奇偶校验

3、信道分类

(1)、点对点信道:一对一通信;PPP协议

(2)、广播信道

  • 一对多通信,一个节点发送能被信道上的所有节点接收
  • 所有节点都在同一个广播信道上通信,但每次只能有一条通信建立成功,这时就需要通过一些协议控制,如信道复用技术或是CSMA/CD协议

4、CSMA/CD协议

(1)、载波监听多点接入/碰撞检测协议

  • 载波监听:接入信道的主机需要不停的监听信道
  • 多点接入:信道允许多台主机接入
  • 碰撞检测:在发送中,如果监听到信道中有其他数据在传输,那么就检测到碰撞,停止发送数据,后采用截断二进制指数退避算法,重新找时间发送数据(每台主机最长在2t时间内,就可以检测出是否有发送碰撞)

5、MAC地址(硬件地址)

(1)、数据链路层地址,存放于适配器的ROM中

6、适配器

(1)、进行计算机与外界局域网之间的连接

7、局域网

(1)、指在某一区域内由多台计算机互联成的计算机组

(2)、特点:局域网是一种典型的广播信道,网络为一个单位所拥有,且地理范围和站点数目均有限,局域网中的所有主机可以共享资源

(3)、分类:主要有以太网、令牌环网、FDDI和ATM等局域网技术

8、以太网

(1)、以太网是一种星型拓展结构的局域网

(2)、在物理层对可以用集线器对以太网进行扩展,优点是扩展了以太网,但缺点是碰撞域扩大了,但吞吐量并没有提高

(3)、在数据链路层上扩展以太网可以通过交换机,优点是扩展了以太网,提高了可靠性,但是增加了存储转发时延

(4)、交换机:交换机具有自学功能,学习的是如何交换自己的转发表的内容,交换表中存储着MAC地址与接口之间的映射

9、各层之间的设备

(1)、网络层以上(网关);网络层(路由器);数据链路层(交换机);物理层(集线器)

  • 4
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
计算机网络八股文 计算机网络是现代信息技术的核心基础之一,它涉及了计算机通信和数据传输技术等多个方面。下面将从网络体系结构、网络协议、网络安全和网络性能等方面对计算机网络进行阐述。 首先,计算机网络的体系结构包括了物理层、数据链路层、网络层、传输层和应用层。物理层负责传输比特流,数据链路层提供可靠的点对点数据传输,网络层负责数据包的路由与转发,传输层提供端到端的可靠或不可靠的数据传输服务,而应用层则为用户提供网络应用服务。 其次,网络协议是计算机网络中的重要组成部分。常见的网络协议包括TCP/IP协议、HTTP协议、FTP协议等。TCP/IP协议是互联网的核心协议,它包括了IP地址分配、路由选择和数据传输等功能。HTTP协议用于在Web浏览器与Web服务器之间传输超文本数据,FTP协议用于文件传输。 此外,网络安全是计算机网络中不可忽视的问题。常见的网络安全措施包括防火墙、入侵检测系统和加密技术等。防火墙可以过滤网络流量,保护内部网络免受外部攻击;入侵检测系统可以检测和阻止恶意行为;加密技术可以保护数据的机密性和完整性。 最后,网络性能是衡量计算机网络好坏的重要指标之一。网络性能包括带宽、时延、吞吐量和丢包率等。带宽是指网络传输数据的能力,时延是数据从发送到接收所需的时间,吞吐量是单位时间内传输的数据量,丢包率是指在传输过程中丢失的数据包比例。 综上所述,计算机网络是一门涉及广泛的学科,它的体系结构、协议、安全和性能等方面都需要深入研究和理解。通过不断提高网络技术和加强网络安全措施,我们可以更好地应对计算机网络发展带来的挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值