增加了一些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、每一层的功能和作用分别是什么?每一层的传输数据类型是什么?
- 应用层(数据):确定两个通信端点上的进程之间通信的性质以满足用户需要以及提供网络与用户应用
- 表示层(数据):主要解决拥护信息的语法表示问题,如加密解密
- 会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的
- 传输层(段):提供应用进程之间的逻辑通信,实现网络不同主机上用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测,流量控制等
- 网络层(包):提供主机之间的逻辑通信,提供逻辑地址(IP)、选路,数据从源端到目的端的传输
- 数据链路层(帧):将上层数据封装成帧,用 MAC 地址访问媒介,错误检测与修正
- 物理层(比特流):设备之间比特流的传输,物理接口,电气特性等
4、每一层使用哪些数据交换设备?
- 网关:应用层、传输层(网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连)
- 路由器:网络层(路由选择、存储转发)
- 交换机:数据链路层、网络层(识别数据包中的 MAC 地址信息,根据 MAC 地址进行转发,并将这些 MAC 地址与对应的端口记录在自己内部的一个地址表中)
- 网桥:数据链路层(将两个 LAN 连起来,根据 MAC 地址来转发帧)
- 集线器(Hub):物理层(纯硬件设备,主要用来连接计算机等网络终端
- 中继器:物理层(在比特级别对网络信号进行再生和重定时,从而使得它们能够在网络上传输更长的距离)
应用层
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