|
|
|
|
移动端

3.3 网络协议(2)

《程序员面试笔试真题与解析》本书针对当前各大 IT企业面试笔试中特性与侧重点,精心挑选了 3年以来近百家典型 IT企业的面试笔试真题,这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机 APP、安全关键软件等,面试笔试真题非常具有代表性与参考性。本节为大家介绍网络协议。

作者:猿媛之家来源:机械工业出版社|2017-12-07 11:19

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


3.3 网络协议(2)

【真题 324】下列关于 HTTP协议的描述中,不正确的是()。

A.有状态,前后请求有关联关系

B.FTP也可以使用 HTTP协议

C.HTTP响应包括数字状态码, 300代表此次请求有正确返回

D.HTTP和 TCP、UDP在网络分层里是同一层的协议答案:A、B、D。 HTTP是 Hyper Text Transfer Protocol(超文本传输协议)的缩写, HTTP协议是一个属于应用层的、

用于从 Web服务器传输超文本到本地浏览器的传送协议,由请求和响应构成。主要特点如下:

1)支持客户/服务器模式。

2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD和 POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP协议简单,使得 HTTP服务器的程序规模小,因此,其通信速度很快。

3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由 Content-Type加以标记。

4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5)无状态:

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

本题中,对于选项 A,HTTP协议是无状态的,因此,需要 cookie、session等对客户端浏览器做标

识。所以,选项 A不正确。对于选项 B,FTP和 HTTP都是应用层协议,不存在谁使用谁的问题。所以,选项 B不正确。对于选项 C,HTTP的 3xx状态码表示请求资源被转移。 HTTP状态码被分为五大类,见下表:

所以,选项 C正确。对于选项 D,HTTP工作在应用层,TCP与 UDP工作在传输层。所以,选项 D不正确。

【真题 325】 TCP报文首部信息中与关闭连接有关的是( )。

A.URG  B.ACK  C.SYN  D.FIN

答案:D。

本题主要考察的是 TCP连接中的三次握手知识。要想找出本题的答案,首先就需要弄明白 TCP是如何建立连接与断开连接的。

TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。TCP使用三次握手( Three-way Handshake)协议来建立连接,下图描述了三次握手的报文序列。

当 TCP 连接建立起来后,就可以在两个方向传送数据流。当 TCP 的应用进程再没有数据需要发送时,就发送关闭命令。 TCP通过发送控制位 FIN=1的数据片来关闭本方数据流,但还可以继续接收数据,直到对方关闭那个方向的数据流,连接就关闭。

TCP 协议使用修改的三次握手协议来关闭连接,即终止一个连接要经过 4 次握手。这是由于 TCP的半关闭(Half-close)造成的。由于一个 TCP连接是全双工(即数据在两个方向上能同时传递)的,因此,每个方向必须单独地进行关闭。关闭的原则就是当一方完成它的数据发送任务后就能发送一个 FIN来终止这个方向的连接。当一端收到一个 FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。发送 FIN通常是应用层进行关闭的结果。过程如下所示:

从一方的 TCP来说,连接的关闭有三种情况:

(1)本方启动关闭

收到本方应用进程的关闭命令后, TCP在发送完尚未处理的报文段后,发 FIN=1的报文段给对方,且 TCP不再受理本方应用进程的数据发送。在 FIN以前发送的数据字节,包括 FIN,都需要对方确认,否则要重传。注意 FIN也占一个顺序号。一旦收到对方对 FIN的确认以及对方的 FIN报文段,本方 TCP就对该 FIN 进行确认,再等待一段时间,然后关闭连接。等待是为了防止本方的确认报文丢失,避免对方的重传报文干扰新的连接。

(2)对方启动关闭

当 TCP收到对方发来的 FIN 报文时,发 ACK确认此 FIN报文,并通知应用进程连接正在关闭。应用进程将以关闭命令响应。 TCP在发送完尚未处理的报文段后,发一个 FIN报文给对方 TCP,然后等待对方对 FIN的确认,收到确认后关闭连接。若对方的确认未及时到达,在等待一段时间后也关闭连接。

(3)双方同时启动关闭

如果连接双方的应用进程同时发关闭命令,则双方 TCP在发送完尚未处理的报文段后,发送 FIN报文。各方 TCP在 FIN前所发报文都得到确认后,发 ACK确认它收到的 FIN。各方在收到对方对 FIN的确认后,同样等待一段时间再关闭连接。这称之为同时关闭( Simultaneous Close)。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

精通JavaScript动态网页编程(实例版)

本书通过大量实例代码,以ECMA-262版本3为基础,结合JavaScript 1.5和JavaScript 5.5,由浅入深、循序渐进地介绍了JavaScript知识要点与编...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊