网络和Linux网络_9(应用层和传输层_笔试选择题)

目录

一. 常见应用协议等等

1. 以下不是合法HTTP请求方法的是( )

2. 文件传输使用的协议是()

3. HTTP1.1的请求方法不包括?()

4. http状态码中,( )表示访问成功,( )表示坏请求,( )表示服务不可用。()

5. 以下关于HTTP协议叙述正确的是()

6. 【多选题】以下关于HTTP说法正确是的:()

7. 【多选题】以下对http请求方法描述正确的是()

8. 以下对http请求方法描述错误的是()

9. HTTP CODE中403代表什么含义?()

10. 以下http状态码中哪一个是永久重定向?( )

11. 【不定项选择题】关于HTTP状态码说法正确的是 ()

12. HTTP 应答中的 500 错误是:()

一. 答案解析

二. HTTP请求/响应报头属性等

1. 以下 HTTP 请求里,不带有 HTTP Body 的请求有?()

2. 标准的http响应报文中,以下哪个说法是错误的()

3. 【多选题】标准的http请求报文头中,以下哪个说法是正确的()

4. 如何在响应报文头部去设置字符编码()

5. 下面有关Cookie的说法,错误的是()

6. 【多选题】cookie有什么用?()

7. 如果没有为Cookie指定失效时间,则设置的Cookie将在何时失效?( )

8. 【多选题】cookie安全机制,cookie有哪些设置可以提高安全性?()

9. 【多选题】cookie的基础属性有哪些?()

10. 下列关于Session的描述中,错误的是()

11. 关于Session对象的属性,下列说法正确的是( )

12. 关于Session的描述中,错误的是()

13. 【多选题】cookie 和 session 的区别描述正确的是()

14. 关于cookie和session描述错误的是()

15. 【多选题】以下关于http和https说法正确的是()

16. 以下关于http和https说法不正确的是()

17. 关于http和https描述错误的是()

二. 答案解析

三. 端口号等

1. 在TCP报文段中,接收窗口(receive window)字段用于( )

2. 主机甲和主机乙新建一个TCP 连接,甲的拥塞控制初始阈值为 32KB,甲向乙始终以 MSS=1KB 大小的段发送数据, 并一直有数据发送;乙为该连接分配 16KB 接收缓存,并对每个数据段进行确认,忽略段传输延迟。若乙收到的数据全 部存入缓存,不被取走,则甲从连接建立成功时刻起,未发送超时 的情况下,经过 4 个 RTT 后,甲的发送窗口是 ()

3. 以下关于TCP可靠性说法错误的是()

4. TCP/IP 模型中哪一层处理传输的可靠性、流量控制和错误控制()

5. TCP使用滑动窗口进行流量控制,流量控制实际上是对( )的控制

6. 端口号是保留给常用的服务器应用程序的,也被称为熟知端口,其范围是( )

7. 下列TCP端口号中不属于熟知端口号的是()

8.【多选题】FTP服务的控制端口与数据端口默认是()

9. 关于UDP的说法正确的是()

10. 关于TCP和UDP说法错误的是()

11. TCP 三次握手的过程,accept 发生在三次握手哪个阶段?()

12. 主机甲向主机乙发送一个(SYN=1,seq=11220)的TCP段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的TCP段应该是()

13.下列哪项最恰当地描述了建立TCP连接时“第一次握手”所做的工作 ( )

14. 【多选题】客户端主动断开TCP连接的时候,以下“四次挥手”过程中表述错误的是()

15. 【多选题】客户端主动断开TCP连接的时候,以下"四次挥手"过程中状态变迁表述正确的是()

三. 答案解析

四. HTTP请求/响应报头属性等

1. TCP协议在建立连接的过程中可能处于不同的状态,用netstat命令显示出TCP连接的状态为SYN_SEND,则这个连接正处于()

2. 以下不属于tcp连接断开的状态是()

3. TCP主动关闭一方进入最后的一个状态是()

4. TCP 连接有多重状态,如何在系统中查看某个连接的状态 ?()

5. 【多选题】TCP 状态变迁中,存在 TIME_WAIT 状态,请问以下正确的描述是?()

6. 以下关于TCP粘包说法不正确的是()

7. 以下哪种描述不可以缓解TCP粘包问题()

8.【多选题】以下哪种情况下会可能会触发TCP粘包()

9. 以下关于TCP连接异常描述错误的是()

10. 以下情况下不一定出现TCP分节RST的情况是:()

11. TCP数据包里的出现什么标志位表示连接被异常终止,或被拒绝的异常请求()

12. 下面关于int listen(SOCKET s, int backlog)函数说法不正确的是()

13.int listen(SOCKET s, int backlog);该函数中第二个参数的含义是?()

四. 答案解析

本篇完。


一. 常见应用协议等等

1. 以下不是合法HTTP请求方法的是( )

A.GET

B.SET

C.HEAD

D.PUT

2. 文件传输使用的协议是()

A.SMTP

B.FTP

C.UDP

D.TELNET

3. HTTP1.1的请求方法不包括?()

A.PUT

B.DELETE

C.POLL

D.TRACE

4. http状态码中,( )表示访问成功,( )表示坏请求,( )表示服务不可用。()

A.2xx, 4xx, 5xx

B.1xx, 4xx, 3xx

C.2xx, 4xx, 3xx

D.3xx, 1xx, 4xx

5. 以下关于HTTP协议叙述正确的是()

A.HTTP协议是建立在 TCP/IP 协议之上的网络层规范,分为三个部分:状态行、请求头、消息主体

B.Cookie数据在消息主体(body)中传输

C.HTTP协议支持一定时间内的TCP连接保持,这个连接可以用于发送/接收多次请求

D.HTTP是有状态的,每个请求都是独立的

6. 【多选题】以下关于HTTP说法正确是的:()

A. HTTP POST方式比GET更私密

B.HTTP GET请求提交参数没有长度限制

C.HTTP POST请求提交参数没有长度限制

D.HTTP GET和POST请求提交参数都没有长度限制

7. 【多选题】以下对http请求方法描述正确的是()

A.POST请求永远不会被缓存,且对数据长度没有限制

B.我们可以从浏览器历史记录中查找到GET请求

C.我们无法从浏览器历史记录中查找到POST请求

D.PUT方法会将包含的元素放在所提供的URI下,如果URI指示的是当前资源,则会被改变。如果URI未指示当前资源,则服务器不可以使用该URI创建资源

8. 以下对http请求方法描述错误的是()

A.GET请求是安全的,长度是有限制的

B.HEAD请求是没有响应体的,仅传输状态行和标题部分

C.DELETE方法用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容

D.PUT方法用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容

9. HTTP CODE中403代表什么含义?()

A.服务器当前无法处理请求

B.服务器不能或者不会处理该请求

C.服务器收到该请求但是拒绝提供服务

D.服务器无法回应且不知原因

10. 以下http状态码中哪一个是永久重定向?( )

A.301

B.302

C.303

D.307

11. 【不定项选择题】关于HTTP状态码说法正确的是 ()

A.404 表示正常返回信息

B.302 表示永久性重定向

C.503 表示服务器端暂时无法处理请求

D.403 表示禁止访问

12. HTTP 应答中的 500 错误是:()

A.服务器内部出错

B.文件未找到

C.客户端网络不通

D.没有访问权限

一. 答案解析

1. B

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

2. B

SMTP: 简单邮件协议

FTP: 文件传输协议

UDP: 用户数据报协议

TELNET: Internet远程登录服务的标准协议

3. C

http1.0,三种:post,get,head

http1.1,八种:post,get,head,options,put,delete,trace,connect

4. A

1xx:信息状态码,接受到请求正在处理

2xx:成功状态码,请求正常处理完毕

3xx:重定向状态码,需要进行附加操作来完成请求

4xx:客户端错误状态码,服务器无法处理请求

5xx:服务器错误状态码,服务器处理请求出错

5. C

A错误:HTTP协议,是TCP/IP协议栈中应用层的协议

B错误:Cookie数据是在HTTP协议头部字段中传输

C正确:HTTP协议在目前1.1版本中支持了长连接管理,也就是支持在一定时间内保持TCP连接建立,用于发送/接收多次请求

D错误:HTTP协议是无状态的协议,在最初设计的时候HTTP协议是一种简单的请求-响应协议,即一次建立连接中,完成一次请求一次响应后,通信结束关闭连接,所以是无状态的

6. AC

A正确:更私密指的是将请求的数据放在了body中

B错误:Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制,而这个限制是实实在在存在的。

C正确:理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力,而并非限制。

D错误:与B选项是相同的,GET提交参数有长度限制,而POST没有

7. ABC

A正确:POST请求主要用于向服务器提交表单数据,因此POST请求不会被缓存,POST请求不会保留在浏览器历史记录当中,POST请求不能被保存为书签,POST请求对数据长度没有要求

B正确:GET请求主要用于从服务器获取实体资源,资源可被缓存,可以记录历史记录

C正确:

D错误:PUT方法请求服务器去把请求里的实体存储在请求URI(Request-URI)标识下。

  • 如果请求URI(Request-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此URI所指定资源实体的最新修改版本。
  • 如果请求URI(Request-URI)指定的资源不存在,并且此URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此URI所标识下的资源。如果一个新的资源被创建了,源服务器必须能向用户代理(user agent) 发送201(已创建)响应。如果已存在的资源被改变了,那么源服务器应该发送200(Ok)或者204(无内容)响应

8. A

A错误:安全的定义很宽泛....这里的安全更多的指的是在提交参数时的安全系数,它是不够安全的。

BCD正确 :选项中的解释都是对对应请求方法的文档解释,作为固定概念性理解即可。

9. C

403:服务器拒绝接收到请求但拒绝提供服务,原因较多,比如权限不足,IP被拉入黑名单.....

10. A

301:

  • 301 状态码表明目标资源被永久的移动到了一个新的 URI,任何未来对这个资源的引用都应该使用新的 URI。

302:

  • 302 状态码表示目标资源临时移动到了另一个 URI 上。由于重定向是临时发生的,所以客户端在之后的请求中还应该使用原本的 URI。
  • 由于历史原因,用户代理可能会在重定向后的请求中把 POST 方法改为 GET方法。如果不想这样,应该使用 307(Temporary Redirect) 状态码

303:

  • 303 状态码表示服务器要将浏览器重定向到另一个资源。从语义上讲,重定向到的资源并不是你所请求的资源,而是对你所请求资源的一些描述。
  • 比如303 常用于将 POST 请求重定向到 GET 请求,比如你上传了一份个人信息,服务器发回一个 303 响应,将你导向一个“上传成功”页面。

307:

  • 307 的定义实际上和 302 是一致的,唯一的区别在于,307 状态码不允许浏览器将原本为 POST 的请求重定向到 GET 请求上。

308:

  • 308 的定义实际上和 301 是一致的,唯一的区别在于,308 状态码不允许浏览器将原本为 POST 的请求重定向到 GET 请求上。

11. CD

404 NOT FOUND,表示客户端请求的资源不存在

302 表示临时重定向

503 由于临时的服务器维护或者过载,服务器当前无法处理请求。. 这个状况是临时的,并且将在一段时间以后恢复。

403 禁止访问,服务器理解请求客户端的请求,但是拒绝执行此请求(比如权限不足,ip被拉黑。。。等一系列原因)

12. A

500 表示服务器内部出错

二. HTTP请求/响应报头属性等

1. 以下 HTTP 请求里,不带有 HTTP Body 的请求有?()

A.HTTP DELETE

B.HTTP GET

C.HTTP POST

D.HTTP HEAD

2. 标准的http响应报文中,以下哪个说法是错误的()

A.可以从响应的头部首行中查看状态码以及状态码的解释

B.响应报文中是不存在Header的,只有请求的时候才会有

C.如果存在Body则可以查看Content-Length来去确定Body的长度

D.响应报文中的Body中可以返回任意长度的内容

3. 【多选题】标准的http请求报文头中,以下哪个说法是正确的()

A.User-Agent: 声明用户的操作系统和浏览器版本信息

B.Content-Type: 正文数据类型,用于告知对端正文的编码类型及处理方式

C.Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上

D.location: 搭配3xx状态码使用, 实现重定向,告诉客户端接下来要去哪里访问

4. 如何在响应报文头部去设置字符编码()

A.Content-Type: charset=utf-8

B.Content-language: charset=utf-8

C.Content-Type: charset=UTF-8

D.Content-language: charset=UTF-8

5. 下面有关Cookie的说法,错误的是()

A.Cookie不是只有一个

B.Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie

C.在HTTP请求中的Cookie是密文传递的

D.有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私

6. 【多选题】cookie有什么用?()

A.记录用户的ID

B.记录用户的密码

C.记录用户浏览过的商品记录

D.记录用户的浏览器设置

7. 如果没有为Cookie指定失效时间,则设置的Cookie将在何时失效?( )

A.关机时

B.下次访问该网站时

C.结束当前会话时

D.访问另一个网站时

8. 【多选题】cookie安全机制,cookie有哪些设置可以提高安全性?()

A.指定cookie domain的子域名

B.httponly设置

C.cookie secure设置,保证cookie在https层面传输

D.都不对

9. 【多选题】cookie的基础属性有哪些?()

A.Domain

B.path

C.httponly

D.secure

E.expires

10. 下列关于Session的描述中,错误的是()

A.Session存放于服务端

B.默认情况下,Session依赖于Cookie

C.Session中只能存放字符串,不能存放其他类型的数据

D.在分布式架构中,存在Session共享的问题

11. 关于Session对象的属性,下列说法正确的是( )

A.Session的有效期时长默认为90秒,且不能修改

B.Session的有效期时长默认为20分钟,且不能修改

C.SessionID可以存储每个用户Session的代号,是一个不重复的长整型数字

D.以上全都错

12. 关于Session的描述中,错误的是()

A.Session存储在服务端

B.大量的Session会对服务端内存造成压力

C.Session可以在多个服务器之间共享

D.通常下cookie比Session安全

13. 【多选题】cookie 和 session 的区别描述正确的是()

A.cookie数据存放在客户的浏览器上,session数据放在服务器

B.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

C.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

D.单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

14. 关于cookie和session描述错误的是()

A.cookie保存在客户端浏览器中,而session保存在服务器上

B.cookie和session都是用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力

C.session是有有效期的,而cookie则没有有效期

D.如果浏览器禁用了cookie,session机制不会失效

15. 【多选题】以下关于http和https说法正确的是()

A.http是超文本传输协议

B.https是超文本传输安全协议

C.http是明文传输

D.https是加密传输

16. 以下关于http和https说法不正确的是()

A.http协议通常使用80端口

B.https协议通常使用445端口

C.http协议是无状态的

D.https在http的基础上增加ssl层

17. 关于http和https描述错误的是()

A.HTTPS是加密传输协议,HTTP是明文件传输协议

B.HTTPS需要用到SSL证书,而HTTP不需要

C.HTTPS标准端口是80,HTTP标准端口是445

D.HTTPS的安全基础是TLS/SSL

二. 答案解析

1. B

GET请求中是不带有HTTP body的,get方式在url后面拼接参数,只能以文本的形式传递参数

2. B

A正确:响应首行元素包含协议版本,响应状态码, 状态码描述

B错误:不论是请求还是响应报文,都是存在Header的

C正确:头部字段中的Content-Length属性用于存储正文的长度

D正确:HTTP协议对正文大小并不做长度限制要求

3. ABCD

选项内容既是每个头部字段的基本解释。

4. AC

Content-Type:用于告诉客户实际返回的内容的内容类型或者说编码类型,比如 Content-Type: text/html; charset=utf-8 用于表示正文是 text/html文档类型,字符集为utf-8

Content-Language:用于表示用户希望采用的语言或语言组合,比如 Content-Language: de-DE 表示该文件为说德语的人提供,但是要注意者不代表文件内容就是德语的。

这里理解 Content-Type 和 Content-Language 区别: Content-Language更多表示上层语言的表示, 而Content-Type用于底层数据编码的表示

因此在响应报文头部设置字符编码是在Content-Type中设置charset属性,大小写不敏感

5. C

cookie是一种保存在客户端的小型文本文件,用于保存服务器通过Set-Cookie字段返回的数据,在下次请求服务器时通过Cookie字段将内容发送给服务器。是HTTP进行客户端状态维护的一种方式

而Set-Cookie以及Cookie字段可以包含有多条信息,也可以由多个Cookie及-Set-Cookie字段进行传输多条信息

并且cookie有生命周期,在超过生命周期后cookie将失效,对应的cookie文件将被删除。

C错误:HTTP的cookie是明文传送的,HTTPS是HTTP的加密传输,因此HTTPS的cooike是才密文传送的

6. ABC

cookie是一种保存在客户端的小型文本文件,用于保存服务器通过Set-Cookie字段返回的数据,在下次请求服务器时通过Cookie字段将内容发送给服务器。是HTTP进行客户端通信状态维护的一种方式。

cookie的可以记录用户的ID,记录用户的密码,记录用户浏览过的商品记录。但是无法记录用户的浏览器设置(浏览器设置属于浏览器,而并不属于某次请求的信息)

7. C

Cookie的Expires属性指定了cookie的生存期,默认情况下coolie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户退出浏览器后这些值也会丢失,如果想让cookie存在一段时间,就要为expires属性设置为未来的一个过期日期。现在已经被max-age属性所取代,max-age用秒来设置cookie的生存期

因此当没有设定过期时间时,则退出当前会话时cookie失效,正确选项为:C

8. ABC

  • domain:可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。
  • path:Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
  • httponly:如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,但不是绝对防止了攻击
  • secure:该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。
  • expires:指定了coolie的生存期,默认情况下cookie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户退出浏览器后这些值也会丢失,如果想让cookie存在一段时间,就要为expires属性设置为未来的一个过期日期。现在已经被max-age属性所取代,max-age用秒来设置cookie的生存期

Set-Cookie: qwerty=219ffwef9w0f;

Domain=somecompany.co.uk;

Path=/;

Expires=Wed, 30 Aug 2019 00:00:00 GMT

  • 对保存到cookie里面的敏感信息加密
  • 设置指定的访问域名
  • 设置HttpOnly为true
  • 设置Secure为true
  • 给Cookie设置有效期
  • 给Cookies加个时间戳和IP戳,实际就是让Cookies在同个IP下多少时间内失效

9. ABCD

  • domain:可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。
  • path:Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
  • httponly:如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,但不是绝对防止了攻击
  • secure:该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。
  • expires:指定了coolie的生存期,默认情况下cookie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户退出浏览器后这些值也会丢失,如果想让cookie存在一段时间,就要为expires属性设置为未来的一个过期日期。现在已经被max-age属性所取代,max-age用秒来设置cookie的生存期

10. C

cookie是一种保存在客户端的小型文本文件,用于保存服务器通过Set-Cookie字段返回的数据,在下次请求服务器时通过Cookie字段将内容发送给服务器。是HTTP进行客户端状态维护的一种方式

但是cookie不断的传递客户端的隐私信息,存在一定的安全隐患(比如认为篡改),因此有了session管理

session服务器为了保存用户状态而创建的临时会话,或者说一个特殊的对象,保存在服务器中,将会话ID通过cookie进行传输即可,就算会话ID被获取利用,但是session中的数据并不会被恶意程序获取,这一点相对cookie来说就安全了一些,但是session也存在一些缺陷,需要建立专门的session集群服务器,并且占据大量的存储空间(要保存每个客户端信息)

C错误:Session可以存放各种类别的数据,相比只能存储字符串的cookie,能给开发人员存储数据提供很大的便利

11. C

A和B错误:一般session的有效期默认是30分钟

C正确:session_id是session的代号或者说唯一标识,通常是不重复的整数,但是其实是否用整数倒是无所谓,主要是唯一且要方便使用

12. D

cookie是一种保存在客户端的小型文本文件,用于保存服务器通过Set-Cookie字段返回的数据,在下次请求服务器时通过Cookie字段将内容发送给服务器。是HTTP进行客户端状态维护的一种方式

但是cookie存在一定的缺陷:比如有大小限制,以及cookie不断的传递客户端的隐私信息,存在一定的安全隐患(比如认为篡改),因此有了session管理

session服务器为了保存用户状态而创建的临时会话,或者说一个特殊的对象,保存在服务器中,将会话ID通过cookie进行传输即可,就算会话ID被获取利用,但是session中的数据并不会被恶意程序获取,这一点相对cookie来说就安全了一些,但是session也存在一些缺陷,需要建立专门的session集群服务器,并且占据大量的存储空间(要保存每个客户端信息)

基于以上理解,ABC选项都是正确的理解,而题目为选择错误选项,因此选择:D,session比cookie安全。

13. ABCD

cookie是一种保存在客户端的小型文本文件,用于保存服务器通过Set-Cookie字段返回的数据,在下次请求服务器时通过Cookie字段将内容发送给服务器。是HTTP进行客户端状态维护的一种方式

但是cookie存在一定的缺陷:比如有大小限制,通常不能超过4k,以及cookie不断的传递客户端的隐私信息,存在一定的安全隐患(比如认为篡改),因此有了session管理

session服务器为了保存用户状态而创建的临时会话,或者说一个特殊的对象,保存在服务器中,将会话ID通过cookie进行传输即可,就算会话ID被获取利用,但是session中的数据并不会被恶意程序获取,这一点相对cookie来说就安全了一些,但是session也存在一些缺陷,需要建立专门的session集群服务器,并且占据大量的存储空间(要保存每个客户端信息)

基于以上理解,四个选项都是正确的。

14. C

C错误:session默认有效期是30分钟,Cookie没有设置expires属性,那么 cookie 的生命周期只是在当前的会话中,关闭浏览器意味着这次会话的结束,此时 cookie 随之失效

D正确:一般情况下Session是通过Cookie传递Session_ID实现的,禁用cookie则session就没法用了,但是劳动人民智慧是无穷的,可以将SESSION_ID附着在URL中来实现,也就是session并不一定完全依赖于cookie实现,因此D选项是正确的。

15. ABCD

HTTP协议是一种以字符串明文传输的简单的请求-响应协议,在传输层基于TCP协议实现。HTTP协议默认使用80端口

HTTPS协议是一种对HTTP加密后的协议,主要是多了身份验证以及加密传输等功能,HTTPS协议默认使用443端口

基于以上理解,所有选项都是正确的。

16. B

HTTP协议是一种以字符串明文传输的简单的请求-响应协议(HTTP协议无状态,一次请求-响应就会结束通信),在传输层基于TCP协议实现。HTTP协议默认使用80端口

HTTPS协议是一种对HTTP加密后的协议,主要是多了身份验证以及加密传输等功能(这里的加密采用SSL加密),HTTPS协议默认使用443端口

17. C

HTTP协议是一种以字符串明文传输的简单的请求-响应协议(HTTP协议无状态,一次请求-响应就会结束通信),在传输层基于TCP协议实现。HTTP协议默认使用80端口

HTTPS协议是一种对HTTP加密后的协议(这里的加密采用SSL加密),主要是多了身份验证以及加密传输等功能,HTTPS协议默认使用443端口

A正确

B正确:SSL中的身份验证通过CA签名认证实现(权威机构颁发的CA证书)

C错误:HTTP是80端口,HTTPS是443端口

D正确:HTTPS就是基于TLS/SSL加密保证安全传输的

三. 端口号等

1. 在TCP报文段中,接收窗口(receive window)字段用于( )

A.可靠数据传输

B.延迟保证

C.流量控制

D.拥塞控制

2. 主机甲和主机乙新建一个TCP 连接,甲的拥塞控制初始阈值为 32KB,甲向乙始终以 MSS=1KB 大小的段发送数据, 并一直有数据发送;乙为该连接分配 16KB 接收缓存,并对每个数据段进行确认,忽略段传输延迟。若乙收到的数据全 部存入缓存,不被取走,则甲从连接建立成功时刻起,未发送超时 的情况下,经过 4 个 RTT 后,甲的发送窗口是 ()

A.1KB

B.8KB

C.16KB

D.32KB

3. 以下关于TCP可靠性说法错误的是()

A.TCP能保证数据的正确性,无差错、不丢失、不重复、并且按序达到

B.三次握手和四次挥手也是TCP可靠性的保证

C.TCP的流量控制也是TCP可靠性的保证

D.以上说法都是不正确的

4. TCP/IP 模型中哪一层处理传输的可靠性、流量控制和错误控制()

A.应用层(Application)

B. 传输层(Transport)

C.互联网络层(Internet)

D.网络访问层(Network Access)

5. TCP使用滑动窗口进行流量控制,流量控制实际上是对( )的控制

A.发送方数据流量

B.接收方数据流量

C.发送、接收方数据流量

D.链路上任意两节点间的数据流量

6. 端口号是保留给常用的服务器应用程序的,也被称为熟知端口,其范围是( )

A.0~1024

B.0~1023

C.1~1024

D.1~1023

7. 下列TCP端口号中不属于熟知端口号的是()

A.21

B.23

C.80

D.3210

8.【多选题】FTP服务的控制端口与数据端口默认是()

A.20

B.21

C.22

D.23

9. 关于UDP的说法正确的是()

A.UDP的包大小没有限制

B.UDP不会进行错误重传

C.UDP跟TCP一样提供可靠的数据报协议

D.UDP有简单的流控制

10. 关于TCP和UDP说法错误的是()

A.TCP是面向连接的协议,UDP是无连接的协议

B.TCP和UDP消息到达网络另一端都是有序的

C.TCP速度比较慢,UDP速度比较快

D.UDP没有流量控制和拥塞控制

11. TCP 三次握手的过程,accept 发生在三次握手哪个阶段?()

A.第一次握手

B.第二次握手

C.第三次握手

D.三次握手后

12. 主机甲向主机乙发送一个(SYN=1,seq=11220)的TCP段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的TCP段应该是()

A.(SYN=1,ACK=1,seq=11220,ack=11220)

B.(SYN=1,ACK=1,seq=11221,ack=11221)

C.(SYN=0,ACK=0,seq=11221,ack=11221)

D.(SYN=0,ACK=1,seq=11220,ack=11220)

13.下列哪项最恰当地描述了建立TCP连接时“第一次握手”所做的工作 ( )

A.“连接发起方”向“接收方”发送一个SYN-ACK段

B.“接收方”向“连接发起方”发送一个SYN-ACK段

C.“连接发起方”向目标主机的TCP进程发送一个SYN段

D.“接收方”向源主机得到TCP进程发送一个SYN段作为应答

14. 【多选题】客户端主动断开TCP连接的时候,以下“四次挥手”过程中表述错误的是()

A.当Client收到Server的ACK包之后,Client状态变成FIN_WAIT2状态

B.当Server发送FIN包到Client之后,Client需要等待1MSL,状态才从TIME_WAIT状态变成CLOSED状态

C.Server端出现大量的CLOSE_WAIT状态,是由于Client没有及时的关闭连接

D.“四次挥手”是完全没有必要的,“三次挥手”就可以了

15. 【多选题】客户端主动断开TCP连接的时候,以下"四次挥手"过程中状态变迁表述正确的是()

A.Client发送一个FIN,用来关闭Client到Server之间的数据传输,Client进入FIN_WAIT1状态

B.Server收到了来自Client的FIN包,发送一个ack给client,进入CLOSE_WAIT状态

C.Server发送一个FIN,用来关闭Server到Client之间的数据传输,Server进入LAST_ACK状态

D.Client收到FIN包之后,Client发送一个ACK给Server, 紧接着进入TIME_WAIT状态,Server收到ack后进入CLOSED状态

三. 答案解析

1. C

通过接收窗口开确认对方是否收到请求报文,从而对流量进行控制

2. A

发送窗口的上限值   =Min[ 接收窗口,拥塞窗口 ] 。4个RTT后,乙收到的数据全部存入缓存,不被取走,接收窗口只剩下1KB ( 16  -  1  -  2  -  4  -  8 = 1 )缓存,使得甲的发送窗口为1KB   。

3. D

ABC选项都是TCP保证可靠性的机制,所以选D

4. B

tcp协议完成可靠性,流量控制和错误控制,而tcp协议工作在传输层

5. A

流量控制的原因是由于网络延时过大或者对端处理能力弱,而导致可能会发生拥塞,所以需要控制发送发的数据流量,从而和接收方的处理能力相匹配

6. B

熟知(知名)端口范围:0~1023,通常这些端口号都是留给知名协议对应的服务的,比如HTTP服务默认使用80端口

7. D

0~1023之间的端口都属于知名端口,保留给知名协议的对应服务。

  • 21 : 文件传输协议端口
  • 23 : telnet端口
  • 80 : http服务端口

因此正确选项为:D

8. AB

FTP协议中,20端口号用于传输数据,21端口号用于传输控制

9. D

A错误:UDP报文协议字段中包含有2个字节大小的数据报大小字段,因为2字节能够存储的最大数字为65535,因此UDP报文限制传输报文大小为必须小于64k。

B正确:UDP传输,没有报文的丢包检测以及重传机制,数据报丢了就没了,以及数据出错也不会进行重传

C错误:UDP是不可靠传输,不保证数据安全及有序到达对端

D错误:UDP是数据报传输,没有流控制...

10. C

TCP协议特性: 面向连接,可靠传输,提供字节流传输服务。 它的传输安全性较高,保证数据能够安全有序到达对端,但是效率与UDP传输相比较低

UDP协议特性: 无连接,不可靠,提供数据报传输服务,它不保证可靠传输,只管快速的传输数据,安全性不如TCP,但是效率较高

A正确

B错误:UDP没有包序管理,不保证数据有序到达

C正确

D正确:流量控制和拥塞控制是TCP协议中为了避免因为意外情况而丢包重传的两种机制。

11. D

accept函数的功能为:获取一个已经连接建立完成的socket套接字描述符,作为与指定客户端通信的句柄。

既然是已经连接建立完成,则accept发送在三次握手之后。

正确选项为:D

12. B

TCP三次握手过程:

网络和Linux网络_9(应用层和传输层_笔试选择题)_第1张图片

SYN和ACK是TCP协议报头中的6个保留位中的2位。

ACK:ACK位置为1表明确认号是合法的。如果ACK为0,那么数据报不包含确认信息,确认字段被省略。

seq:发送方的本条报文起始序号

ack:对于上次对方发送的数据的确认序号,通常是对方发送的数据的起始序号+数据长度,但是在三次握手阶段稍有不同,是上次对方发送的请求的起始序号+1

SYN=1,seq=11220, SYN=1表示这是一个客户端的第一次握手连接建立请求, 并且起始序号为11220

服务器收到请求后,向客户端进行第二次握手,第二次握手既是自己的连接建立请求,也是对客户端连接请求的确认,因此 SYN=1,ACK=1, 而确认序号为对方的起始序号+1, 则为11221

则 SYN=1,ACK=1,ack=11221,seq=自己的起始序号,一般为随机值这个不做要求

13. C

TCP三次握手过程:

网络和Linux网络_9(应用层和传输层_笔试选择题)_第2张图片

  • 第一次握手:客户端向服务器发送连接请求, 也就是SYN段
  • 第二次握手:服务器向客户端发送确认回复及连接请求, 也就是 SYN+ACK段
  • 第三次握手:客户端向服务器发送确认回复,也就是ACK段

14. BCD

TCP四次挥手过程:

网络和Linux网络_9(应用层和传输层_笔试选择题)_第3张图片

A正确

B错误:当Server发送FIN包到Client之后,Client需要等待2MSL,处理有可能因为最后一次ACK丢失导致的重传(重传的FIN是1MSL,自己发送的ACK是1MSL,共2MSL),最终状态才从TIME_WAIT状态变成CLOSED状态

C错误:CLOSE_WAIT状态是被动关闭方收到FIN并进行ACK回复后进入的状态,接下来他会等待上层知道对方要关闭连接后做出处理,当自己也要关闭连接的时候给对方发送FIN,则 进入LAST_ACK状态,而一旦自己上层没有做出处理,则套接字状态会一直处于CLOSE_WAIT, 因此Server端出现大量的CLOSE_WAIT,是由于Server端没有及时的关闭连接导致的。

D错误:这里需要了解FIN的功能,收到FIN只能表示对方不再给自己发送数据,而不是完全关闭既不发送数据也不再接收数据,他还是可以继续接收数据的,因此被动关闭方收到FIN请求进行ACK确认后,可能还会继续发送数据,直到自己也不再发送了,才会发送接下来的FIN包,因此四次挥手不能合并成为 三次挥手。

15. ABCD

TCP四次挥手过程:

网络和Linux网络_9(应用层和传输层_笔试选择题)_第4张图片

四. TCP状态等

1. 进程和线程是操作系统中最基本的概念,下列有关描述错误的是 ( ) 

A.进程是程序的一次执行,而线程可以理解为程序中运行的一个片段

B.由于线程没有独立的地址空间,同一个进程的一组线程可以共享访问大部分该进程资源,这些线程之间的通信很高效

C.线程之间的通信简单(共享了虚拟地址空间及页表,因此函数传参以及全局变量即可实现通信),而不同进程之间的通信更为复杂,通常需要调用内核实现

D.线程有独立的虚拟地址空间,但是拥有的资源相对进程来说,只有运行所必须的栈,寄存器等

2. 多线程中栈与堆的基本情况是 () 

A.多个线程共有一个栈,各自有一个堆

B.多个线程共有一个栈, 共有一个堆

C.多个线程各自有一个栈,共有一个堆

D.多个线程各自有一个栈, 各自有一个堆

3. 下面关于线程的叙述中,正确的是()

A.不论是系统支持线程还是用户级线程,其切换都需要内核的支持

B.线程是资源的分配单位,进程是调度和分配的单位

C.不管系统中是否有线程,进程都是拥有资源的独立单位

D.在引入线程的系统中,进程仍是资源分配和调度分派的基本单位

4. 下面有关线程的说法错误的是?[多选]

A.每个线程有自己独立的地址空间

B.耗时的操作使用线程,提高应用程序响应

C.多CPU系统中,使用线程提高CPU利用率

D.线程包含CPU现场,可以独立执行程序

5 .关于进程和线程,下列说法正确的是___[多选]

A.线程是资源分配和拥有的单位

B.线程和进程都可并发执行

C.在linux系统中,线程是处理器调度的基本单位

D.线程的粒度小于进程,占用资源更少,因此通常多线程比多进程并发性更高

E.不同的线程共享相同的栈空间

6. 下述有关Linux进程和线程的描述,正确的有?[多选] 

A.在linux 中,进程比线程安全的原因是进程之间不会共享数据

B.进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)

C.进程——资源分配的最小单位,线程——程序执行的最小单位

D.进程和线程都有单独的地址空间

7. 关于多线程和多线程编程,以下哪些说法正确的()[多选]

A.多进程之间的数据共享比多线程编程复杂

B.多线程的创建,切换,销毁速度快于多进程

C.对于大量的计算优先使用多进程

D.多线程没有内存隔离,单个线程崩溃会导致整个应用程序的退出

8. 有关进程和线程的说法,错误的是()[多选]

A.一个程序至少有一个进程,一个进程至少有一个线程

B.操作系统的最小调度单位是进程

C.线程自己不拥有系统资源

D.一个线程可以创建和撤销另一个线程

9. 关于多线程和多进程编程,下面描述正确的是() [多选]

A.多进程里,子进程可复制父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,但拥有自己的栈空间

B.线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于资源管理和保护

C.线程的通信速度更快,切换更快,因为他们在同一地址空间内,且还共享了很多其他的进程资源,比如页表指针这些是不需要切换的

D.线程使用公共变量/内存时需要使用同步机制,因为他们在同一地址空间内

E.因多进程里,每个子进程有自己的地址空间,因此相互之间通信时,线程不如进程灵活和方便

10. 进程和线程是操作系统中最基本的概念,下列有关描述错误的是 ( ) 

A.进程是程序的一次执行,而线程可以理解为程序中运行的一个片段

B.由于线程没有独立的地址空间,同一个进程的一组线程可以共享访问大部分该进程资源,这些线程之间的通信很高效

C.线程之间的通信简单(共享了虚拟地址空间及页表,因此函数传参以及全局变量即可实现通信),而不同进程之间的通信更为复杂,通常需要调用内核实现

D.线程有独立的虚拟地址空间,但是拥有的资源相对进程来说,只有运行所必须的栈,寄存器等

10. 进程和线程是操作系统中最基本的概念,下列有关描述错误的是 ( ) 

A.进程是程序的一次执行,而线程可以理解为程序中运行的一个片段

B.由于线程没有独立的地址空间,同一个进程的一组线程可以共享访问大部分该进程资源,这些线程之间的通信很高效

C.线程之间的通信简单(共享了虚拟地址空间及页表,因此函数传参以及全局变量即可实现通信),而不同进程之间的通信更为复杂,通常需要调用内核实现

D.线程有独立的虚拟地址空间,但是拥有的资源相对进程来说,只有运行所必须的栈,寄存器等

2. 多线程中栈与堆的基本情况是 () 

A.多个线程共有一个栈,各自有一个堆

B.多个线程共有一个栈, 共有一个堆

C.多个线程各自有一个栈,共有一个堆

D.多个线程各自有一个栈, 各自有一个堆

3. 下面关于线程的叙述中,正确的是()

A.不论是系统支持线程还是用户级线程,其切换都需要内核的支持

B.线程是资源的分配单位,进程是调度和分配的单位

C.不管系统中是否有线程,进程都是拥有资源的独立单位

D.在引入线程的系统中,进程仍是资源分配和调度分派的基本单位

四. 答案解析

1. B

SYN_SEND是属于请求连接,则先排除C,监听对方简历连接请求指的是服务端处于listen状态,排除A。接收到对方的连接建立请求,则应该处于SYN_RECEIVED

2. C

SYNC_SENT是请求链接

3. CCLOSE_WAIT状态是接收到FIN报文时候的状态

SYN_SENT压根不是四次挥手当中的状态

TIME_WAIT是主动关闭乙方进入的最后一个状态,需要等待2MSL,状态才从TIME_WAIT状态变成CLOSED状态

LAST_ACK是被动方发送FIN报文之后置的状态

4. B

netstat可以查看系统当中连接的状态

eg:netstat -anp | grep [port]

5.ACD

TIME_WAIT 状态是 TCP 是四次挥手过程中的状态

6. B

nagle算法只能缓解TCP粘包问题,不能根本解决

7. D

TCP粘包问题一般是由于缓冲区当中有不同的报文信息,当把缓冲区的数据发送到网络上的时候,就会产生粘包问题;粘包问题带来的问题是会导致对方收到网络上的数据的时候无法进行合理的拆包;所以,在处理粘包问题上,需要给每个报文设置明显的消息边界来进行区分;或者双方约定发送定长的消息;或者在应用层处理的时候加上数据报文头部

8. AC

粘包的问题是指不同报文一起发送到网络上,则当写的缓冲区当中存在不同的报文的时候,就会发生粘包问题,所以排除B。对于接收方而言,如果数据已经到达缓冲区,但是不及时读取,则会导致后边的报文和前面的报文发生粘包问题;D选项,首先需要知道MSS是指的是Maximum Segment Size,TCP一次传输发送的最大数据段长度,所以D选项也是不会造成粘包问题的,故排除

9. C

服务器主机崩溃后重启后,客户端发送送数据时,会收到一个RST,则read返回ECONNREST

10. C

以下四种情况会发送RST包:

1、端口未打开

2、请求超时

3、提前关闭

4、在一个已关闭的socket上收到数据

11. B

在TCP的报文头部,有6个标志位,其中RST表示重置连接,也是区分与正常连接标志的

12. BD

listen 是在man手册的第2个手册,属于系统调用

backlog维护complete connection queue的长度

13. C

backlog 为后台等待连接队列的最大限制值

本篇完。

下一篇:网络和Linux网络_10(网络层)IP协议+分片组装+网段划分+路由。

你可能感兴趣的:(⑦网络和Linux网络,网络,tcp/ip,网络协议,linux)