美文网首页C++面试题集
计算机网络相关

计算机网络相关

作者: saviochen | 来源:发表于2017-08-02 22:17 被阅读77次
1、TCP为何采用三次握手来建立连接,可否采用两次握手,请说明原因

不可以。采用三次握手是为了防止失效的连接请求报文突然又传送到服务器,从而发生错误。当客户发出的连接请求报文段由于某些原因,没有到达服务器,在客户端等待一段时间后,又重新向服务器发送连接请求,且顺利建立连接,完成数据传输。第一次发送的连接请求报文段称为失效报文段。

考虑这样的情况:客户端第一次发送的请求没有丢,而是因网络问题延迟到达服务器,服务器以为是客户端又发送新的连接情求,于是同意连接,并向客户发回确认。但此时,客户端不予理会,服务器就会一直等待客户端发送数据,导致服务器的资源浪费。

2、TCP三次握手有什么漏洞

泛洪攻击SYN Flood
SYN Flood利用了TCP协议三次握手的过程来达到攻击的目的。三次握手的第三步中如果服务器没有收到客户端的ACK报文,服务端一般会进行重试,也就是再次发送SYN+ACK报文给客户端,并且一直处于SYN_RECV状态,将客户端加入等待列表。重发一般会进行3~5次,大约每隔30秒左右会轮询一遍等待队列,重试所有客户端;另一方面,服务端在发出SYN+ACK报文后,会预分配一部分资源给即将建立的TCP连接,这个资源在等待重试期间一直保留,服务器资源有限,可以维护的等待队列超过极限后就不再接收新的SYN报文,也就是拒绝建立新的TCP连接。

攻击者伪造大量的IP地址给服务器发送SYN报文,但是由于伪造的IP地址几乎不可能存在,也就不可能从客户端得到任何回应,服务端将维护一个非常大的半连接等待列表,并且不断对这个列表中的IP地址进行遍历和重试,占用了大量的系统资源。服务器资源有限,大量的恶意客户端信息占满了服务器的的等待队列,导致服务器不再接收新的SYN请求,正常用户无法完成三次握手与服务器进行通信。

3、TCP为何采用四次挥手来释放连接

关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方已经将所有数据发送完毕了。此时,由于当前端并不一定将需发送的数据向对方发送完毕,并不会马上关闭socket。当前段将所有数据发送完成后,也会向对方发送FIN,表示已经数据发送完毕。针对每一个FIN都需要一个ACK,因此需要四次挥手。

如果收到FIN报文通知时,恰好当前端已经将所有数据发送完毕,则可将ACK+FIN一同发送给对方,对方收到后,只需要回传一个ACK即可,此时仅需要三次挥手。

4、TCP定时器

TCP为每条链接建立7个定时器,依次为:连接建立,重传,延迟ACK,持续,保活,FIN_WAIT2,TIME_WAIT。

5、IP知识

主机号全0:网络本身
主机号全1:网络的广播地址
127.0.0.1:网络保留做环路自检地址,表示任意主机本身
32位全0:整个TCP/IP网络
32位全1:整个TCP/IP网络的广播地址
私有地址:
10.0.0.0-10.255.255.255
172.16.255.255-172.31.255.255
192.168.0.0-192.168.255.255

6、网络相关命令

ping:发送数据包,并要求对方返回数据包,(非协议,是应用程序)
tracert:显示每跳路由情况
telnet:是Internet远程登陆服务的标准协议和主要方式
netstat:可以显示路由表,实际网络连接以及每一个网络接口设备的状态。

7、TCP如何确保可靠性

在TCP的连接中,数据流必须以正确的顺序送达对方,TCP的可靠性是通过顺序编号和确定(ACK)来实现的,TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列中,同时启动时钟。其后,如果收到接受端对该段的ACK确认,则将该段从队列中删除。如果规定时间内,ACK未返回,则从发送队列中再次发送出这个段。

TCP协议对数据传输做了保障,UDP是面向不可靠连接的,不能保证数据正确达到目的地。

8、Http与Https的区别

Http缺省工作在TCP协议80端口,用户访问http://开头的都是标准http服务,其封装的信息是明文,通过抓包工具可以分析其内容。

Https缺省工作在443端口,它的工作流程一般如下方式:
1)完成TCP三次握手
2)客户端验证服务器数字证书
3)DH算法协商对称加密算法密钥,hash算法密钥
4)SSL加密方式传输,采用协商的对称加密算法和密钥解密,保证数据机密性,完整性,防止数据被截获或篡改。

9、滑动窗口机制

作用:
1、提供TCP可靠性;2、提供TCP流控特性,保证字节流顺序到达

基本原理:
1)对于TCP会话发送端,任何时候在发送缓存区内的数据都可分为4类:已发送且已收ACK,已发送未收到ACK,未发送但允许发送,未发送不允许发送。已发送但还未收到ACK的“未发送”但允许发送的称为发送窗口。
当收到新ACK对发送窗口的确认时,窗口滑动

2)对TCP的接收方,在某一时刻接受缓存区只有三种:已接收,未接受准备接受,未接受且尚未准备接受。注意:不存在已接收未回复ACK的

接受窗口大小取决于应用,系统,硬件的限制,各自的“发送窗口”则取决于对端通告“接受端口”。

10、阻塞模式与非阻塞模式有什么区别?

使用socket编程实现数据传输过程,通常默认套接字是阻塞的。每个TCP套接字有一个发送缓冲区,当应用程序调用write操作时,内核从应用进程缓冲区复制数据到套接字缓冲区。如果发送缓冲区无法完全容纳应用程序的所有数据,即应用进程缓冲区大于发送缓冲区或者发送缓冲区还有其他数据,应用进程将会被挂起,内核不从write返回,直到应用进程缓冲区所有数据都复制到套接字发送缓冲区。

因此,写一个TCP套接字write调用成功并不意味着对端应用程序已经接受到数据,仅仅表示可以重新使用应用进程的缓冲区了。

下面从发送和接受两方面说明阻塞与非阻塞的区别:
1、对于一个TCP套接字,内核将从应用进程缓冲区向套接字的发送缓冲区复制数据,对于阻塞的套接字,如果其发送缓冲区没有足够的空间,进程将被挂起。
对于非阻塞的TCP套接字,如果其发送缓冲区没有空间,发送函数将立即返回并设置EWOULDBLOCK错误,如果发送缓冲区还有一些空间,返回值将是复制到该缓冲区的字节数。

UDP套接字不存在真正的发送缓冲区。内核只是复制应用进程数据并把它沿协议栈向下传送,依次加上UDP头部和IP头部。因此,UDP的发送阻塞原因与TCP不同。

2、如果某个进程对阻塞TCP调用接受函数,而接受缓冲区没有数据可读,则进程将被挂起,直到有数据到达。TCP是字节流协议,只要到达一些数据,该进程将会被唤醒:这些数据可能是单字节,也可以是一个完整的TCP分节中的数据。

UDP是数据报协议,如果一个阻塞的UDP套接字接受缓冲区为空,对它调用接受函数的进程将被挂起,直到到达一个UDP数据包。对于阻塞的套接字,如果接受操作不能被满足,相应的调用将立即返回一个EWOULDBLOCK错误。

11、HTTPS与HTTP的区别

1)HTTPS协议需要CA申请证书,一般免费证书较少,需要交费
2)HTTP是超文本传输协议,信息是明文传递,HTTPS则是具有安全性的ssl加密传输协议。
3)HTTP和HTTPS使用的是完全不同的连接方式,使用的端口也不同,HTTP80,HTTPS443.
4)HTTP连接很简单,是无状态的,HTTPS协议由SSL+HTTP协议构建,可进行加密传输,身份认证,比HTTP安全。
5)目前HTTPS应用比HTTP少,主要因为前者比较消耗性能,对安全性没那么高的应用而言,HTTP已经足够了。

相关文章

  • 07年版

    07年版 ?计算机网络的相关概念、计算机网络安全体系结构 一、计算机网络面临的主要威胁 恶意程序的威胁:以计算机病...

  • 2019-05-08 计算机网络复习

    1.计算机网络概念2.计算机网络组成3.计算机网络分类4.网络体系结构概念5.OSI/RM体系结构相关6.TCP/...

  • 网络相关知识

    计算机基础知识掌握TCP和HTTP相关知识即可。 这是一份详细 & 清晰的计算机网络基础 学习指南计算机网络:这是...

  • 计算机网络是如何工作的

    前言 本文将我学习的计算机网络相关知识做个汇总,以求备忘,形成体系以及将来能融会贯通。 什么是计算机网络 简单地说...

  • 【计算机网络1】分层模型

    这里总结一下计算机网络的分层模型,用于回顾计算机网络相关知识。 层次结构 OSI七层模型 TCP/IP四层模型 五...

  • Java - 网络编程完全总结

    本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,T...

  • 计网体系结构 - 认识计算机网络

    01 计算机网络 计算机网络和我们的日常生活息息相关。当我们打王者、吃鸡时,手机偶尔会出现卡顿,人物飘来飘去,屏幕...

  • 《趣谈网络协议》第2讲讲网络分层的真实含义是什么?

    长时间从事计算机网络相关的工作,我发现,计算机网络有一个显著的特点,就是这是一个不仅需要背诵,而且特别需要将原理烂...

  • 自用笔记之计算机网络

    这篇文章主要是自己对计算机网络相关知识点的查缺补漏,权当笔记,逻辑比较混乱。参考自计算机网络一书。 总览 上图是关...

  • 网络为什么要分层,它的意义何在?

    长时间从事计算机网络相关的工作,我发现,计算机网络有一个显著的特点,就是这是一个不仅需要背诵,而且特别需要将原理烂...

网友评论

    本文标题:计算机网络相关

    本文链接:https://www.haomeiwen.com/subject/dizylxtx.html