计算机网络
1. HTTP 三次握手
HTTP协议是基于TCP协议的,而TCP协议使用三次握手建立连接。在HTTP中,并不直接进行三次握手,而是通过底层的TCP协议来实现连接的建立。
在TCP协议中,三次握手的过程如下:
客户端向服务器发送一个带有SYN标志的数据包,请求建立连接。 服务器接收到客户端发送的SYN包后,会回复一个带有SYN/ACK标志的数据包,表示同意建立连接。 最后,客户端再向服务器发送一个带有ACK标志的数据包,表示连接建立成功。 这样,经过三次握手,客户端和服务器就建立了可靠的连接,可以进行数据传输。HTTP协议在这个基础上进行数据的传输与通信。
2. HTTP 协议和HTTPS 区别
http是超文本传输协议,信息是明文传输,https是具有安全性的ssl解密传输协议http和https连接方式完全不同,端口也不同,http是80,https是443http的连接很简单,是无状态的,https协议是由ssl+http协议构建的可进行加密传输,身份认证的网络协议,比http协议安全
3. HTTP常见状态码?
100: 这个状态码是告诉客户端应该继续发送请求,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会在请求完成后向客户发送一个最终的结果200: 这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客广端所请求的最终结果202: 表示服务器已经接受了请求,但是还没有处理,而且这个请求最终会不会处理还不确定204: 服务器成功处理了请求,但没有返回任何实体内容 ,可能会返回新的头部元信息301: 客户端请求的网页已经永久移动到新的位置,当链接发生变化时返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接发出请求,已返回请求结果404: 请求失败,客户端请求的资源没有找到或者是不存在500: 服务器遇到未知的错误,导致无法完成客户端当前的请求.503: 服务器由于临时的服务器过载或者是维护,无法解决当前的请求
4. Get 和 post 不同
Get 是从服务器上获取数据,post 是向服务器传送数据在客户端,get通过url 提交数据,数据在url 中可以看到,post 方式数据放在 html header 中提交安全性问题 Get提交数据最多只能有 1024 字节,post 没有限制
5. 一个页面从输入 URL 页面加载显示完成,这个过程中都发生了什么?
分为4个步骤
- 当发送一个
URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询。这能使浏览器获得请求对应的IP地址 - 浏览器与远程
Web服务器通过TCP三次握手协商来建立一个TCP/IP连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这二个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,然后服务器响应并接受客户端的请求,最后由客户端发出该请求已经被接受的报文 - 一旦
TCP/IP连接建立,浏览器会通过该连接向远程服务器发送HTTP的GET请求。远程服务器找到资源并使用HTTP响应返回该资源 - 此时,
Web服务器提供资源服务,客户端开始下载资源
6. get 请求传参长度的误
误区: 我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。实际上HTTP协议从未规定GET/POST的请求长度限制是多少。对get请求参数的限制是来源与浏览器或web服务器,浏览器或web服务器限制了url的长度。为了明确这个概念,我们必须再次强调下面几点HTTP协议 未规定GET和POST的长度限制GET的最大长度显示是因为 浏览器和web服务器限制了URI的长度不同的浏览器和WEB服务器,限制的最大长度不一样要支持IE,则最大长度为2083byte,若只支持Chrome,则最大长度8182byte
7. get 和 post 请求在缓存方面的区别
post/get 的请求区别,具体不再整述补充补充个get和post在缓存方面的区别:
get请求类似于查找的过程,用户获取数据,可以不用每次都与数据库连接,所以可以使用缓存。post不同,post做的一般是修改和删除的工作,所以必须与数据库交互,所以不能使用缓存。
因此
get请求适合于请求缓存
ISO 网络七层模型
ISO(国际标准化组织)的网络七层模型是指OSI(Open Systems Interconnection)参考模型,它将网络通信分为七个层次,每个层次负责不同的功能,从物理连接到应用程序之间的通信过程进行了抽象和分层。这些七个层次分别是:
物理层(Physical Layer):负责传输比特流,即通过物理媒介传输数据,主要关注数据的传输速率、电气接口标准等。
数据链路层(Data Link Layer):负责在相邻节点之间传送数据帧,进行差错控制和流量控制。以太网、Wi-Fi等协议工作在此层。
网络层(Network Layer):负责在网络上选择路由,并把数据包传送到目标地址。IP协议工作在此层。
传输层(Transport Layer):负责端到端的数据传输,提供可靠的数据传输服务。TCP和UDP协议工作在此层。
会话层(Session Layer):负责建立、管理和终止会话,以及数据的交互和同步。常用的RPC、NetBIOS工作在此层。
表示层(Presentation Layer):负责数据的格式化、加密、压缩等操作,以便让应用层处理数据。常用的ASCII、JPEG等工作在此层。
应用层(Application Layer):提供用户接口和服务。包括HTTP、FTP、SMTP等应用协议。
这种分层模型使得不同层次的功能能够相对独立地设计和实现,同时也方便了不同厂商和组织之间的互操作性和标准化。
短连接与长连接的区别
HTTP短链接和长链接是两种不同的连接方式,它们在维持连接的时间和资源利用上有所不同。
短链接是一种即时连接方式,客户端与服务器之间建立连接后,在完成一次请求-响应后即立即关闭连接。这意味着每次请求都需要重新建立连接,造成了额外的开销,如TCP握手、建立连接和关闭连接的时间。短链接适用于一次性请求或者对于连接数有限制的服务器。
长链接是一种持久连接方式,客户端和服务器之间建立连接后会保持一段时间,允许多个请求-响应对在同一连接上进行。客户端可以在一段时间内发送多个请求,而不需要重新建立连接。这样可以减少连接建立和关闭的开销,提高性能。长链接适用于频繁的请求和响应,如实时通信、流媒体传输等。
总结起来,短链接适用于单次请求的场景,而长链接适用于多次请求的场景。选择使用哪种方式要根据具体需求和服务器能力来决定。
