https://blog.youkuaiyun.com/weixin_45912307/article/details/109523694
1. 协议了解有哪些?
-
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于
从WWW服务器传输超文本到本地浏览器的传送协议
。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。-
HTTP是一个
应用层协议
,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议
。 -
请求行 以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:
- Method Request-URI HTTP-Version CRLF GET /login?from=%2F HTTP/1.1
Method
表示请求方法;Request-URI
是一个统一资源标识符
;HTTP-Version
表示请求的HTTP协议版本;CRLF
表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)】。- 请求方法(所有方法全为大写)有多种,各个方法的解释如下:
- GET(请求获取Request-URI所标识的资源),
- POST(在Request-URI所标识的资源后附加新的数据),
- PUT(请求服务器存储一个资源,并用Request-URI作为其标识),
- DELETE(请求服务器删除Request-URI所标识的资源)
- Method Request-URI HTTP-Version CRLF GET /login?from=%2F HTTP/1.1
-
HTTP响应 也是由三个部分组成,分别是:
状态行、消息报头、响应正文
。-
返回状态行
:HTTP-Version Status-Code Reason-Phrase CRLF
HTTP/1.1 200 OK -
HTTP常见的
响应状态码
有:- 200 OK //客户端
请求成功
- 401 Unauthorized //
请求未经授权
,这个状态代码必须和WWW-Authenticate报头域一起使用 - 403 Forbidden //服务器收到请求,但是
拒绝提供服务
- 404 Not Found //
请求资源不存在
,eg:输入了错误的URL - 500 Internal Server Error //
服务器发生不可预期的错误
- 503 Server Unavailable //服务器当前
不能处理客户端的请求
- 200 OK //客户端
-
而数字:
- 2开头的表示请求成功 ;
- 3开头,重定向,
- 4开头的一般都是客户端的问题 ;
- 5开头的一般都是服务器的问题
-
-
-
HTTPS是身披
SSL外壳的HTTP
。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性
。 -
HTTP特点:·无状态,无连接,基于请求和响应·:基本的特性,由客户端发起请求,服务端响应简单快速、灵活,通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性。
-
HTTPS特点:基于HTTP协议,通过
SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
,如:内容加密,验证身份,保护数据完整性,混合加密,数字摘要,数字签名技术。 -
客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接。
HTTP属于TCP/IP模型中的运用层协议
,所以通信的过程其实是对应数据的入栈和出栈。 -
Tcp协议(传输控制协议):TCP协议又称
传输控制协议
,是面向连接的可靠传输
。udp协议是用户数据报协议,- tcp 三次握手
-
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
-
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
-
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
再进行数据传输
-
- tcp 三次握手
2. 为什么需要三次握手呢?
- 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
3. 网络协议了解多少?
原来我们用得比较多的协议是http和https,以及tcp协议
- http和https都是超文本协议,浏览器发送数据请求基本用的都是他们,不同的是
https在http的基础上增加了ssl加密协议
,http的默认端口是80,https的默认端口是443,https收费,http免费 - tcp协议的话,作用在
传输层
,在发送请求前,会有三次握手。是面向连接的协议,传输过程比较可靠
36,tcp,udp的区别
4. 三次握手,四次挥手
三次握手:
第一次握手
:客户端发送syn包(syn=1,seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;第二次握手
:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
四次挥手:
断开一个TCP连接则需要“四次挥手”。第一次挥手:
主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。第二次挥手:
被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
-第三次挥手:
被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。第四次挥手:
主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
5. http跟https的区别
- 1、https协议需要到
ca申请证书
,一般免费证书较少,因而需要一定费用。 - 2、http是
超文本传输协议
,信息是明文传输
,https则是具有安全性的ssl加密传输协议
。 - 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是
80
,后者是443
。 - 4、http的连接很简单,是
无状态
的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
,比http协议安全。
6. osi模型和tcp模型
-
osi七层网络模型
- 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
-
TCP模型
- 应用层(telnet、sftp、http)、
- 传输层(TCP UDP)、
- 网络层、
- 数据链路层
7. get跟post请求的区别
GET
请求在URL中传送的参数是有长度限制的,而POST
没有。GET
比POST
更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。GET
参数通过URL传递,POST
放在Request body
中。- 对于GET方式的请求,浏览器会把
http header
和data
一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header
,服务器响应100 continue,浏览器再发送data
,服务器响应200 ok
8 . cookie、session、token
cookie
: 在客户端用于存储会话信息的session
:在服务器端,记录用户的请求状态,
一般默认时间30min- session_id会存在cookie中,每次请求cookie中所有信息都会传递给服务器,服务器通过session_id来识别是否是同一个用户请求,不是同一个用户的话,就会要求重新登录
token
:访问权限和身份认证- 相当于
令牌、口令(动态变化),保存在客户端本地
- 鉴权:访问的接口是否正常,是否非法访问绕过前端。
防止跳过页面直接访问接口 token
- 授权:是否具有访问接口的权限。 唯一全局动态的 。
- 相当于
9. http协议包含哪些内容?
- 1)请求信息
- 1.
请求行
:请求方式、请求地址、http版本1.1 - 2.
请求头
:
HTTP消息报头包括普通报头、请求报头、响应报头、实体报头Cache-Control??:no-cache 缓存 Connection : close/keep-alive 是否关闭或者保持连接 Accept-Charset :iso-8859-1 字符集 Accept-Encoding:gzip.deflate 编码格式 Accept-Language:zh-cn 语言 Authorization:服务器授权验证 Host :主机 User-Agent : Location :重定向 Server :服务器版本信息 Content-Encoding : 实体报头的编码格式
- 3.
请求正文
data
- 1.
- 2)响应信息
1.状态行
: http版本 、 状态码、状态信息
2.响应头
: 跟请求头一样
3.响应正文
:
10. http常见的状态码有哪些?
常见状态码:400、404、200、500、302、501、504
-
101服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。
-
102 (代表处理将被继续执行) 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
-
2开头 这一类型的状态码,代表请求已成功被服务器
接收、理解、并接受
。200
(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。201
(已创建) 请求成功并且服务器创建了新的资源。202
(已接受) 服务器已接受请求,但尚未处理。203
(非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。204
(无内容) 服务器成功处理了请求,但没有返回任何内容。205
(重置内容) 服务器成功处理了请求,但没有返回任何内容。206
(部分内容) 服务器成功处理了部分 GET 请求。207
(代表之后的消息体将是一个XML消息),并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。
-
3开头 (请求被重定向)表示
要完成请求,需要进一步操作
。 通常,这些状态代码用来重定向。300
(多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。301
(永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。302
(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。303
(查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。304
(未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。305
(使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。307
(临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
-
4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
400
(错误请求) 服务器不理解请求的语法。401
(未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。403
(禁止) 服务器拒绝请求。404
(未找到) 服务器找不到请求的网页。405
(方法禁用) 禁用请求中指定的方法。406
(不接受) 无法使用请求的内容特性响应请求的网页。407
(需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。408
(请求超时) 服务器等候请求时发生超时。409
(冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。410
(已删除) 如果请求的资源已永久删除,服务器就会返回此响应。411
(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。412
(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。413
(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。414
(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。415
(不支持的媒体类型) 请求的格式不受请求页面的支持。416
(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。417
(未满足期望值) 服务器未满足"期望"请求标头字段的要求。
-
5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。
这些错误可能是服务器本身的错误,而不是请求出错。500
(服务器内部错误) 服务器遇到错误,无法完成请求。501
(尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。502
(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。(比如:nginx里设置了反向代理,自己代理给自己,形成了死循环,造成大量的访问日志,每秒上万)503
(服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。504
(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。505
(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本
11. TCP/UDP有哪些区别?
- TCP - 有连接,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换
- UDP - 非可靠连接,会丢包,没有校验,速度快,无须握手过程
TCP UDP
是否连接 面向连接 | 面向非连接
传输可靠性 可靠的 | 不可靠的
应用场合 传输大量数据 | 少量数据
速度 慢 | 快
12. 路由器和交换机区别
路由器和交换机最核心的区别:使用场景不同,路由器用于网络出口,交换机用于园区内部数据交换
。
正是由于使用场景不同,造成了别的差异:
- 1、路由器用于出口,连接运营商链路,一般
接口数量较少,但接口类型较多
,支持ATM/POS/CPOS接口;
而交换机用于内部数据交换,连接用户,接口数量较多
,都是以太网接口(电口RJ45,光SFP) - 2、支持功能不同,路由器支持NAT,IPSEC等广域网功能。
而交换机会支持一些防ARP欺骗,端口安全等局域网功能。 - 3、性能差异也很大,内部核心交换机可以达到100T交换容量,而出口一般几十个G, 毕竟运营商给的链路带宽不会太大,20G撑死。
13. 在Linux系统中,一个文件的访问权限是755,其含义是什么?
- 755表示该文件所有者对该文件具有
读、写、执行
权限,该文件所有者所在组用户及其他用户
对该文件具有读和执行权限。