计算机网络八股文

目录

一、应用层:

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)、开销不一样,由于ht

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值