计算机网络面试题目

1. http

  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World
    Wide Web )服务器传输超文本到本地浏览器的广泛应用的网络传输协议。

  • HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

  • 三个注意事项

    • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
      无连接
    • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
    • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
  • 请求和响应报文格式

2. TCP三次握手四次挥手

参考1
参考2
参考3
参考4

  • 半连接:服务器收到SYN包而还未收到ACK包时的连接状态称为半连接。

  • 半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
    参考

  • seq: 序号(seq)用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节的编号。

  • ack: 确认号包含发送确认的一端所期望收到的下一个序号。确认号之前的数据已经全部成功接收。

  • 关于ack和seq的计算

  • DOS(Denial of Service,即拒绝服务)攻击:让目标机器停止提供服务或资源访问。

    • SYN FLOOD :利用服务器的连接缓冲区(Backlog Queue,即上面所说的半连接队列),向服务器端发送大量只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。
      如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。
      参考1
      参考2

3. TCP流量控制——滑动窗口

发送TCP要对能够接受多少从发送进程传来的数据进行控制;
接受tcp要对发送TCP能够发送多少数据进行控制
流量控制是为了控制发送方发送速率,防止接受方因数据过多而来不及处理。
接收方发送的确认报文中的窗口字段可以⽤来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

  • 为平衡发送方产生数据的速度和接受方消耗数据的速度,两边各有发送缓存和接受缓存。
  • 发送窗口一部分是已发送正在等待确认的字节,另一部分是可以发送的字节。
  • 接收窗口的大小 = 接收缓存的大小 - 正在等待进程拉取的字节数
  • 当发送TCP传来更多数据,接收窗口关闭(左壁右移);当更多字节被进程拉取,接收窗口打开(右壁右移)。
  • 发送窗口的大小受接收方的控制。当一个新的确认到达,且这个确认允许时,发送窗口关闭(左壁右移);当接收方通告的窗口大小允许时,发送窗口会打开(右壁右移)。

4. 糊涂窗口综合征(滑动窗口操作中出现的问题)

发送应用程序产生数据的速度很慢,或接收应用程序消耗数据的速度很慢,或二者都有。会使发送数据的报文段很小,会降低运行的效率,使用网络容量的效率非常低。

5. DNS

  • DNS 客户端和本地域名服务器之间使用TCP

  • 本地域名服务器和其他的域名服务器之间使用的是UDP

  • 为什么要用UDP
    参考
    浏览器响应时间= DNS域名解析时间 + TCP 连接建立时间 + HTTP交易时间

  • DNS解析过程

    参考1
    参考2

  • 迭代解析
    本地域名服务器不断去问其他的域名服务器
    本地问A,A告诉本地去问B

  • 递归解析
    本地域名服务器问A域名服务器,A不知道会去问B,B再去问C

  • A记录——记录主机名和IP地址的对应关系
    NS记录——用来表明由哪台服务器对该域名进行解析
    参考

6. HTTPS

  • 提供运输层安全的协议:

    • SSL(安全套接层)协议
    • TLS(运输层安全)协议

提供对服务器和客户的鉴别以及数据的保密和完整性。从应用层传来的数据经过压缩(可选)、签名和加密,再被传给可靠的运输层协议。

  • 加密方法族——密钥交换、散列以及加密算法

    • 散列算法——提供报文完整性
  • SSL两层4个协议

    • 记录协议:一个载体,运载来自其他三个协议的报文以及来自应用层的数据。

      • 上一层的数据经过分片和压缩(可选)处理,再用协商后的散列算法计算得到MAC(报文鉴别码,message authentication code),并将其添加到压缩后的报文上。这个压缩后的分片与MAC一起经过协商后的加密算法的加密。最后在加密的报文上添加SSL首部。
    • 握手协议:为记录协议提供安全参数。建立加密集并提供密钥和安全参数,负责客户和服务器的鉴别。

      • 第一阶段——安全能力的建立。确定要使用的SSL版本、加密的算法、压缩的方法以及用于密钥生成的两个随机数;
      • 第二阶段——服务器密钥的交换和鉴别。用来鉴别服务器;
      • 第三阶段——客户密钥的交换和鉴别。用来鉴别客户;
      • 第四阶段——完成和结束。客户和服务器互相发送报文以更改加密规约,并结束握手协议。
    • 改变加密规约协议:通知各项加密用密钥/参数已准备好。

    • 告警协议:报告异常状况。

  • 加密

    • 对称密钥加密方法——加密解密使用相同的密钥(密钥是双方共享的),并且这个密钥可用于双向通信。P706
    • 不对称密钥加密方法——密钥属于个人,每个人要生成并保存自己的密钥。P715
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值