1.tcp和udp的区别,tcp怎么保证可靠连接的,出现网络拥塞怎么解决?
2.tcp和udp的报文结构了解吗?
3.tcp连接client和server有哪些状态?time_wait状态?
4.虚拟内存,虚拟地址和物理地址怎么转换?内存分段,内存分页,优缺点
5.linux最多可以建立多少个tcp连接,client端,server端,超过了怎么办?
6.为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次握手。
7.tcp四次握手过程?为什么等待2MSL?
8.tcp握手挥手过程,以及socket的状态变化?
9.OSI七层模型与TCP/IP五层模型?
10。TCP与UDP区别和应用场景?基于TCP协议有哪些?基于UDP协议有哪些?
11.TCP三次握手过程以及每次握手后的状态改变,为什么三次?为什么两次不行?
htttp
1.https请求流程,如何获取最初的证书
HTTP协议处于网络协议的应用层,底层通过TCP/IP协议支持。HTTP请求基本过程为:
1.域名解析
2.三次握手创建TCP连接
3.服务器响应传输数据
4.四次挥手断开连接
HTTPS是基于HTTP的,不同的是他在TCP/IP协议上面又新加了一层SSL
SSL层是为了保证HTTPS传输过程的安全性的。保证的方式在于他传输数据之前先传输一套对称密钥,然后通过这个对称密钥来加密一个key,再使用这个key来加密需要传输的数据,以此达到第三人不可解密和更改的目的。机密过程如下:
1、客户端发送请求https连接。
2、服务器返回加密公钥,通常是SSL证书。
3、客户端从这个SSL证书解析出公钥,并随机生成一个key,通过公钥加密这个key发送给服务器(这一步是安全的因为只有服务器才有私钥能读出这个key)。
4、服务器通过私钥解密出key。
5、客户端使用这个key来加密需要传输的数据。
6、服务器使用key来解析数据。
2.http请求头
HTTP 请求报文由3部分组成(请求行+请求头+请求体)
请求行:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
③是协议名称及版本号。
请求头:
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
与缓存相关的规则信息,均包含在header中
Cache-Control,指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据,还是重新发请求到服务器获取数据。
常见值有private、no-cache、max-age、must-revalidate等,默认为private。
值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。
值为no-cache,那么每次都会访问。
值为max-age,则在过期之前不会重复访问。
请求体:
⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。
3.状态码301、302、401、403(http返回码,401和406啥区别?)
已定义范围 | 分类 | |
1XX | 100-101 | 信息提示 |
2XX | 200-206 | 成功 |
3XX | 300-305 | 重定向 |
4XX | 400-415 | 客户端错误 |
5XX | 500-505 | 服务器错误 |
200 OK 服务器成功处理了请求(这个是我们见到最多的) |
301/302 Moved Permanently(重定向)请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置 |
304 Not Modified(未修改)客户的缓存资源是最新的, 要客户端使用缓存 |
404 Not Found 未找到资源 |
501 Internal Server Error服务器遇到一个错误,使其无法对请求提供服务 |
状态码 | 状态消息 | 含义 | 实例 |
401 | Unauthorized(未授权) | 需要客户端对自己认证 | HTTP协议之基本认证-401 |
403 | Forbidden(禁止) | 请求被服务器拒绝了 | |
406 | Not Acceptable(无法接受) |
4.http 1.0、 http 1.1、http 2.0区别
HTTP1.1在HTTP1.0基础上的改进
1. 长连接
HTTP 1.0需要使用keep-alive参数来建立一个长连接,而HTTP1.1默认支持长连接
长连接的好处:一个网页上可能有多个资源对象,长连接可以通过一个连接传输网页上的所有对象,而短连接每次连接只能传输一个对象,也就是一个网页的内容需要传输多次
2. 缓存
HTTP1.0缓存的资源对象到了一定时间之后会失效,不能再次使用;而HTTP1.1缓存的资源对象失效后还能与源服务器进行重新激活。
3. 带宽使用
HTTP/1.0一次只能请求一整个资源对象,而HTTP/1.1可以请求一个资源对象的一部分,因此在不需要得到整个资源对象时,可节约带宽,而且支持断点续传
4. Host域
由于一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址,因此HTTP1.1在HTTP1.0的基础上加了改进,加了一个Host域,用于指定共享同一个IP地址中的某一台主机,而HTTP1.0则默认一个IP地址只能属于一台主机,没有Host域
HTTP2.0在HTTP1.1基础上的改进
1. 多路复用
HTTP2.0同一个连接可以并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级,这意味着减少了建立连接所需要的开销
2. 数据压缩
HTTP的请求和响应包括三个部分,即状态行,头部信息,消息主体。HTTP1.1只对消息主体进行压缩,而HTTP2.0对状态行,头部信息,消息主体都进行压缩
3. 服务器推送
在使用HTTP1.1时,客户端请求什么资源,服务器才给什么;而HTTP2.0服务器会自动把客户端一定需要的资源传输给客户端,比如一些必要的附加资源等等
5.http与https区别
HTTP与HTTPS的一些区别
HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
6.https原理,数字签名,数字证书,非对称加密算法过程,有什么问题
3.为什么大部分服务对外不提供的接口都是http的?