计算机网络100问

增加了一些http和https相关的问题。
大致内容已经梳理(有些坑还没填先预留一下),有机会再慢慢磨一磨,有问题欢迎大家指出并改进。
已完成:协议模型(1-4)、应用层(5-35)、传输层(36-65)、网络层(66-87)、数据链路层(88-95)。
计算机网络知识点复习总结,持续更新中。。。
时间有限,可能存在部分纰漏和理解不当,欢迎指正交流。
参考资料:工大计网慕课、《计算机网络自顶向下方法》
慕课课件百度网盘:
链接:https://pan.baidu.com/s/10B6XFJc8v2pHlxhs4sikqQ
提取码:9ric
《计算机网络自顶向下方法》第六版中文pdf:
链接:https://pan.baidu.com/s/1ou6fdAn_Rt3Z3sGTI3XVVA
提取码:ezr9

计算机网络模型

1、五层因特网协议栈和七层OSI(Open System Interconnections)参考模型分别是什么?

5层:应用层、传输层、网络层、数据链路层、物理层
7层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

2、为什么考虑分层的架构,有什么优势和缺陷?

分层优势

协议分层具有概念化和结构化的优点。分层提供了一种结构化方式来讨论系统组件。模块化使更新系统组件更为容易。

分层缺陷

分层的一个潜在缺点是一层可能冗余较低层的功能。例如,许多协议栈在基于每段链路和基于端到端两种情况下,都提供了差错恢复。第二种潜在的缺点是某层的功能可能需要仅在其他某层才出现的信息(如时间戳值),这违反了层次分离的目标。

3、每一层的功能和作用分别是什么?每一层的传输数据类型是什么?

  1. 应用层(数据):确定两个通信端点上的进程之间通信的性质以满足用户需要以及提供网络与用户应用
  2. 表示层(数据):主要解决拥护信息的语法表示问题,如加密解密
  3. 会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的
  4. 传输层(段):提供应用进程之间的逻辑通信,实现网络不同主机上用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测,流量控制等
  5. 网络层(包):提供主机之间的逻辑通信,提供逻辑地址(IP)、选路,数据从源端到目的端的传输
  6. 数据链路层(帧):将上层数据封装成帧,用 MAC 地址访问媒介,错误检测与修正
  7. 物理层(比特流):设备之间比特流的传输,物理接口,电气特性等

4、每一层使用哪些数据交换设备?

  1. 网关:应用层、传输层(网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连)
  2. 路由器:网络层(路由选择、存储转发)
  3. 交换机:数据链路层、网络层(识别数据包中的 MAC 地址信息,根据 MAC 地址进行转发,并将这些 MAC 地址与对应的端口记录在自己内部的一个地址表中)
  4. 网桥:数据链路层(将两个 LAN 连起来,根据 MAC 地址来转发帧)
  5. 集线器(Hub):物理层(纯硬件设备,主要用来连接计算机等网络终端
  6. 中继器:物理层(在比特级别对网络信号进行再生和重定时,从而使得它们能够在网络上传输更长的距离)

应用层

5、主流的应用程序体系结构是哪些?他们的优缺点是什么?

C/S模式(客户机/服务器)、P2P模式(对等方)、混合模式。

6、同一主机下和不同主机下的进程间是如何通信的?

同一主机下的进程间通信由操作系统决定。
不同的主机下的进程间通信通过消息/报文交换完成。

7、什么是套接字socket?套接字是用来干什么的?

套接字是个API,是应用程序和网络的接口。进程可类比于一座房子,而它的套接字可以类比于它的门。当一个进程想向位于另外一台主机上的另一个进程发送报文时,它把报文推出该门。

8、进程如何寻址?

主机地址(ip)+目的主机中指定接收进程的标识符(端口号)

9、应用层协议定义了哪些东西?

1.交换的报文的类型:请求报文或相应报文
2.报文类型的语法,每个字段是如何描述的
3.字段的语义
4.确定一个进程何时以及如何发送报文,以及报文的相应规则

10、web应用程序的应用层协议是什么?什么是无状态协议?

HTTP:超文本传输协议。所谓的无状态协议是指服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。HTTP协议就是无状态协议。web应用利用cookie技术作为补充,弥补了HTTP协议无状态带来的可能缺陷。

11、什么是URL?格式是什么样的?

URL:统一资源定位器。用于web页面中对象的寻址,引用对应的对象。
一个web页面由多个对象组成,包括一个html基本文件和引用对象。引用对象用URL地址标识。
URL格式:协议://主机名/路径名(http://www.baidu.com/documents)(这里涉及到DNS解析域名和主机名)

12、什么是持续连接和非持续连接?概念前提是什么?优缺点分别是什么?http协议采用哪种连接方式?

考虑每个请求/响应是经过一个独立的TCP连接发送,还是所有的请求/响应经过相同的TCP连接发送。
前者为非持续连接(串行/并行),后者是持续连接(带流水/不带流水)。
前提:C/S模式,TCP???
HTTP协议既可以使用持续连接也可以使用非持续连接。默认情况下使用带流水线的持续连接。
带流水线的持续连接:http客户机遇到一个对象引用就发送一个请求,而不用等到前一个请求响应后再发送。

13、http报文类型及相应的报文格式

http请求报文格式:URL只包含路径名,主机名在首部行中hosts
在这里插入图片描述
http响应报文格式在这里插入图片描述

14、http请求报文常用方法有哪些?分别是什么作用?

HTTP1.0:GET、POST、HEAD
HTTP1.1:GET、POST、HEAD、PUT、DELETE
GET:请求对象
POST:上传表单,一般放在实体体
HEAD:发送请求但不返回请求对象,常用于调试跟踪
PUT:允许用户上传对象到服务器
DELETE:允许用户删除服务器的某些对象

15、GET请求和POST请求的区别?

1.第一点区别:HTTP报文层面,GET将请求信息放到URL,请求信息与URL之间使用问号隔开,请求信息格式是键值对的形式,POST将请求信息放在报文体中,获取请求信息必须解析报文。GET请求是放在URL中的,URL本身是没有长度限制的,但是浏览器是有长度限制的,会对URL进行长度限制。POST是将请求信息放到报文体中的,所以对URL是没有长度限制的。
2.第二点区别:数据库层面,GET符合幂等性(对数据库的一次操作或者多次操作的结果是一致的,则认为符合幂等性)和安全性(对数据库的操作没有改变数据库的数据,则认为符合安全性的,GET操作是做查询操作的,因此不会改变数据库里面的数据),POST不符合(POST请求既不幂等也不安全,POST会向数据库中提交数据,所以会改变数据库里面的数据,POST每次获取到的结果都有可能不一样的,因为POST请求是作用在上一级的URL上面的,每一次请求都会添加新资源)。
3.第三点区别:GET请求可以被缓存(可以保存到浏览器的浏览记录中),被存储(GET请求URL可以被保存为浏览器书签),但是POST不行。

16、http响应报文常见状态码和相关短语有哪些?分别什么含义?

HTTP状态码

1xx,指示信息,表示请求已接收,继续处理。
2xx,成功,表示请求已被成功接收、理解、接受。
3xx,重定向,要完成请求必须进行更进一步的操作。
4xx,客户端错误,请求有语法错误或者请求无法实现。
5xx,服务器端错误,服务器未能实现合法的请求。

HTTP相关短语

200 OK:请求成功,信息返回在响应报文中
301 Moved Permanently:请求的对象被永久转移,新的URL定义在响应报文的首部行Location中
400 Bad Request:通用差错代码,表示请求不能被服务器响应
401 Unauthorized:请求未经授权
403 Forbidden:服务器收到请求但是拒绝服务
404 Not Found:请求的文档不在服务器上
500 Internal Server Error:服务器发生不可预期的错误
503 Server Unaviable:服务器当前不能处理客户机请求
505 HTTP Version Not Supported:服务器不支持请求报文使用的http协议版本

17、简述http请求响应的流程步骤。

1.客户端连接到web服务器,一个http客户端通常是浏览器与web服务器的http端口,默认端口号是80,建立一个tcp套接字连接。
2.然后发送http请求,即通过tcp套接字,客户端向web服务器发送一个文本的请求报文。
1.然后服务器接受到客户端的请求并返回HTTP响应。web服务器解析该请求定位请求资源,服务器将资源副本写到tcp套接字由客户端读取。
3.然后释放TCP连接。若连接模式是CLOSE,则服务器主动关闭tcp连接,客户端被动关闭tcp连接,释放tcp连接。若连接模式是keep alive,咋该连接会保持一段时间,在该时间内可以继续接受请求。
4.然后客户端浏览器解析HTML内容。并进行解析,客户端浏览器首先解析状态行,查看表名请求是否成功的状态代码,然后解析每一个响应头,响应头告知以下若干字节的HTML文档和文档的字符集,客户端浏览器读取响应数据HTML,根据html语法对其进行格式化,并在浏览器窗口中进行解释。

18、什么是cookie?其四大组件是什么?

cookie内容

cookie技术允许站点对用户进行跟踪。因为HTTP是无状态的,意味着每次访问有登录页面的需求的时候,都要输入账号和密码。Cookie技术是客户端的解决方案,是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端。客户端每次向服务器发送请求的时候都会带上这些特殊信息,比如当客户使用浏览器访问支持Cookie的网站的时候,需要输入账号和密码提到到服务器,服务器向客户端回应超文本的同时将个人信息返回,个人信息不是存放在响应体http body中,而是保存到HTTP响应头http header中的,当客户端接收服务器的响应以后,浏览器将这些信息存放到统一位置。客户端再次请求的时候,会把Cookie发送到服务器中,Cookie信息存放到http响应头中。服务器接收到客户端浏览器的请求以后,会分析存放在请求头中的Cookie信息,得到客户端特有的信息,从而动态生成与该客户端相对应的内容。

cookie技术四大组件

1.在HTTP响应报文中的一个cookie首部行:set-cookie字段
2.在HTTP请求报文中的一个cookie首部行:cookie字段
3.在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
4.位于Web站点的一个后端数据库

19、简述cookie的设置和发送流程。

Cookie的设置以及发送过程,第一步,客户端发送Http Requert请求到服务器。第二步,服务器端发送Http Response和设置Cookie头部到客户端。第三步,客户端Http Request和Cookie头部请求到服务器端。第四步,服务器端发送一个Http Response请求到客户端。

20、什么是Session?Session怎么利用cookie?

Session概念

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。

session与cookie

思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。有人问,如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。

21、cookie和session有什么区别?简述两者两者典型场景。

两者都是常用的会话跟踪技术。
1.cookie数据存放在客户的浏览器上,session数据放在服务器上。
2.cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

典型场景:登录网站,今输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是cookie。session一个场景是购物车,添加了商品之后客户端处可以知道添加了哪些商品,而服务器端如何判别呢,所以也需要存储一些信息就用到了session。

22、什么是web缓存器?如何判断缓存的对象是否是最新的?

代理服务器,能够代表初始服务器满足http请求的网络实体。客户机请求先发送到代理服务器,代理服务器有请求内容直接响应,没有继续向上发送请求到初始服务器。能够做到快速响应,减少请求的响应时间,但是存在需要解决缓存数据新旧的问题。

条件GET方法:缓存服务器发送使用GET方法发送请求报文给初始服务器,并在报文首部行中包含“If-Modified-Since”字段。

23、什么是socket?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kfPF2II-1612014040638)(.\socket.jpg)]

24、什么是HTTPS?它和HTTP有什么关系和区别?

HTTPS(Hyper Text Transfer Protocol Secure)是超文本传输安全协议。HTTPS是一种以计算机网络安全通信为目的的传输协议。HTTP是包含了ip、tcp、http,而HTTPS比HTTP新增了SSL(SSL3.0后改名为TLS)(具有保护交换数据隐私,以及完整性,提供对网上服务器身份认证的功能,是安全版的http)。
SSL(Securiy Sockets Layer,安全套接层),为网络通信提供安全以及数据完整性的一种安全协议,SSL位于TCP与各应用层之间,是操作系统对外的API,SSL3.0以后更名为TLS。采用身份验证和数据加密保证网络通信的安全和数据的完整性。

两者区别

1.HTTPS需要到CA申请证书,HTTP不需要。
2.H

  • 14
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
计算机网络课后习题答案(老师划出的) 第一章 概述 1-10 试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit),从源站到目的站共经过k 段链路,每段链路的传播时延为d(s),数据率为C(bit/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。在怎样的条件下,分组交换的时延比电路交换的要小?(提示:画一下草图观察k段链路共有几个结点) 答:对电路交换,当t=s 时,链路建立;当t=s+x/C,发送完最后一bit;当t=s+x/C+kd,所有的信息到达目的地。对分组交换,当t=x/C, 发送完最后一bit;为到达目的地,最后一个分组需经过k-1 个分组交换机的转发,每次转发的时间为p/C,所以总的延迟= x/C+(k-1)p/C+kd所以当分组交换的时延小于电路交换x/C+(k-1)p/C+kd<s+x/C+kd 时,(k-1)p/C<s 1-17 收发两端之间的传输距离为1000km,信号在媒体上的传播速率为2.3×108 m/s。试计算以下两种情况的发送时延和传播时延:(1) 数据长度为107bit,数据发送速率为100kbit/s,传播距离为1000km,信号在媒体上的传播速率为2×108m/s。(2) 数据长度为103bit,数据发送速率为1Gbit/s,传输距离和信号在媒体上的传播速率同上。 答:(1):发送延迟=107/(100×1000)=100s 传播延迟=1001000/(2×108)=5×10-3s=5ms (2):发送延迟=103/(109)=10-6s=1us传播延迟=1001000/(2×108)=5×10-3s=5ms 第二章 物理层 2-04 试解释以下名词:数据、信号、模拟数据、模拟信号、基带信号、带通信号、数字数 据、数字信号、码元、单工通信、半双工通信、全双工通信、串行传输、并行传输。 答:数据:是运送信息的实体。 信号:则是数据的电气的或电磁的表现。 模拟数据:运送信息的模拟信号。 模拟信号:连续变化的信号。 基带信号:来自信源的信号。 带通信号:经过载波调制后的信号。 数字信号:取值为有限的几个离散值的信号。 数字数据:取值为不连续数值的数据。 码元:在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形 单工通信:即只有一个方向的通信而没有反方向的交互。 半双工通信:即通信和双方都可以发送信息,但不能双方同时发送(当然也不能同时接收)。 这种通信方式是一方发送另一方接收,过一段时间再反过来。 全双工通信:即通信的双方可以同时发送和接收信息。 基带信号(即基本频带信号)——来自信源的信号。像计算机输出的代表各种文字或图像文 件的数据信号都属于基带信号。 带通信号——把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道 中传输(即仅在一段频率范围内能够通过信道)。 2-07 假定某信道受奈氏准则限制的最高码元速率为2000 码元/秒。如果采用振幅调制,把 码元的振幅划分为16 个不同等级来传送,那么可以获得多高的数据率(b/s)? 答:80000 b/s 2-16 共有4 个站进行码分多址CDMA 通信。4 个站的码片序列为: A:( -1 –1 –1 +1 +1 –1 +1 +1) B:( -1 –1 +1 -1 +1 +1 +1 -1) C:( -1 +1 –1 +1 +1 +1 -1 -1) D:( -1 +1 –1 –1 -1 –1 +1 -1) 现收到这样的码片序列:(-1 +1 –3 +1 -1 –3 +1 +1)。哪个站发送数据了?发送数据 的站发送的1 还是0? 答:S•A=(+1-1+3+1-1+3+1+1)/8=1, A 发送1 S•B=(+1-1-3-1-1-3+1-1)/8=-1, B 发送0 S•C=(+1+1+3+1-1-3-1-1)/8=0, C 无发送 S•D=(+1+1+3-1+1+3+1-1)/8=1, D 发送1
回答: 在计算机网络面试中,常常会被到一些与命令相关的问题。以下是一些常见的计算机网络面试常命令: 1. ping命令: ping命令用于测试网络连接和测量网络延迟。它发送一个ICMP回显请求到目标主机,并等待回复。这个命令可以用来检查网络是否正常工作,以及确定网络延迟。 2. ipconfig/ifconfig命令: ipconfig命令用于Windows系统,ifconfig命令用于Linux和Unix系统。它们用于查看和配置网络接口的IP地址、子网掩码、默认网关等信息。 3. nslookup命令: nslookup命令用于查询域名的IP地址或反向查询IP地址的域名。它可以用来检查域名解析是否正常工作。 4. netstat命令: netstat命令用于显示网络连接、路由表和网络接口统计信息。它可以用来查看当前系统的网络连接状态和网络活动。 5. tracert/traceroute命令: tracert命令用于跟踪数据包在网络中的路径。它发送一系列的ICMP回显请求,每个请求的TTL值逐渐增加,直到到达目标主机。这个命令可以用来检查数据包在网络中的传输路径和延迟。 以上是一些常见的计算机网络面试常命令,掌握这些命令可以帮助你在面试中展示你对计算机网络的理解和技能。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [计算机网络面试常_计算机网络最常的面试话题](https://blog.csdn.net/weixin_26729841/article/details/108498248)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [计算机网络面试常见问题](https://blog.csdn.net/weixin_43004044/article/details/112426286)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值