【1】简述OSI与TCP/IP结构与功能,以及各层的常用协议?

应用层:应用层的作用就是通过应用进程间的交互来完成特定网络应用。常用协议:DNS、HTTP
传输层:传输层的作用就是负责向两台主机进程之间的通信。
运输层主要使用以下两种协议:
传输控制协议TCP(Transmission Control Protocol)--提供面向连接的,可靠的数据传输服务。
用户数据协议UDP(User Datagram Protocol)--提供无连接的,尽最大努力交付的数据传输服务(不保证数据传输的可靠性)。
网络层:网络层负责为传输层传下来的分组选择合适的路由,使其能够交付到目的主机。(分组:无论是哪一层的数据单元,都可笼统地用“分组”来表示)
数据链路层:数据链路层负责将网络层传下来的数据报组装成帧(frame),在两个相邻
计算机结点间的链路上实现帧的无差错传输。
物理层:物理层负责实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。
【2】wifi属于7层中的那一层?
数据链路层和物理层
【3】三次握手和四次挥手过程【常客】
第一次握手:客户端–服务端发送一个SYN报文,序列号seq为一随机值,此时客户端由closed状态进入syn-sent状态。
第二次握手:服务端–客服端发送一个SYN+ACK报文,确认号为SYN报文的序列号+1,序列号为一随机值,此时服务端由Listen状态进入syn-received状态,而客户端进入established状态。
第三次握手:客户端–服务端发送一个ACK
报文,确认号为SYN+ACK报文的序列号+1,序列号为SYN报文的序列号+1。此时服务端进入
established状态。

第一次挥手:客户端-服务端发送一个FIN报文,序列号seq为一随机值,此时客户端由
established状态进入fin-wait-1状态。
第二次挥手:服务端-客户端发送一个ACK报文,确认号ack为FIN报文的序列号+1,序列号为一随机值,此时服务端由established状态进入closed-wait状态,客户端接收到ACK报文之后进入fin-wait-2状态。
第三次挥手:服务端-客户端发送一个FIN报文,序列号为ACK报文的序列号+1,此时服务端进入last-ack状态。
第四次挥手:客户端-服务端发送一个ACK报文,确认号为FIN报文的序列号+1,序列号为
FIN报文的序列号+1,此时客户端进入time-wait状态,而服务端接收到ACK报文之后,进入
closed状态。
最后客户端经过2MSL时间之后进入closed状态。

【4】为什么要三次握手
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
第一次握手:Client什么都不能确定;Server确认了对方发送正常,自己接收正常。
第二次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:对方发送正常,自己接收正常。
第三次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己发送、接收正常,对方发送、接收正常。
所以三次握手就能确认双发收发功能都正常,缺一不可。
【4】为什么要传回SYN
SYN是客户端和服务端之间建立数据传输通道的报文,并且是单向建立的,所以服务端需要向客户端发送SYN报文,以请求建立服务端到客户端的数据传输通道。
【5】传了SYN,为啥还要传ACK
第二次握手和第三次握手时发送ACK报文都是告知对方,从对方到自方的数据传输通道已经建立完毕。
【6】TCP和UDP协议的区别

【7】 在浏览器中输入url地址->>显示主页的过程【常客】
1. DNS解析域名(DNS协议)
2.建立TCP连接(TCP、IP协议)
3.客户端发送一个HTTP请求(HTTP协议)
4.服务端处理HTTP请求,并响应一个HTML页面
5.客户端解析渲染HTML页面
6.断开TCP连接
【8】常见状态码

【9】说说HTTP短连接和长连接的区别
HTTP1.0默认使用短连接,也就是说,客户端每次访问服务器都会建立一次全新的TCP连接。HTTP1.1默认使用长连接,客户端可以在一次TCP连接中发送多个HTTP请求而无需建立新的TCP连接,长连接的请求头中包含connection:keep-Alive这个字段,但是长连接并不代表永久连接,它有一个空闲时间,如果在空闲时间内没有发送HTTP请求,那么TCP连接就关闭,这个空闲时间一般可以在服务器中设置。HTTP的短连接和长连接,实质上是TCP的短连接和长连接。
【10】HTTP的特点
1.一问一答式
2.无状态
3. HTTP1.1支持长连接
【10】如何理解HTTP协议是无状态的
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即客户端给服务器发送HTTP请求之后,服务器根据请求,会响应客户端,但是不会记录客户端的任何信息。但是随着Web应用程序的出现,HTTP协议的无状态严重的影响了这些应用程序的实现,因为交互是需要承前启后的,例如电商网站的购物车功能,于是就出现了Cookie和Session技术来保持HTTP的连接状态。
【11】HTTP协议是无状态的,怎么保存用户状态?
使用Session来保存用户信息,然后将SessionID保存到Cookie中发送给浏览器,浏览器再次请求服务器时,带上Cookie,并找SessionID对应的Session,以此来验证用户的登录状态。
如果Cookie被禁用了怎么办?
可以将SessionID附在每一个URL的后面作为参数发送到服务器。
【12】Cookie和Session的区别和作用
Cookie和Session都是用来保存会话信息的技术,但是两者的应用场景不太一样。Cookie数据保存在客户端,而Session数据保存在服务端。相对来说,Session的安全性更高,如果需要在Cookie中保存一些敏感的数据,那么最好将其进行加密,然后发送到服务端的时候,再将其进行解密。Cookie一般保存用户行为信息,如购物车信息,用户名信息,而Session一般保存用户登录状态信息,如用户对象。在单点登录系统SSO中,可以使用redis结合json来取缔Session。
【12】URI和URL的区别
URI是统一资源标识符,唯一标识服务器上的一个资源。URL是统一资源定位符,提供了服务器上的一个资源的位置信息。URI的作用像身份证号一样,而
URL的作用更像是家庭住址。URL是一种具体的URI,不仅唯一标识资源,而其还提供了该资源的位置信息。
【13】HTTP和HTTPS的区别
1.端口,http的默认端口号为80,https的默认端口号为443
2.安全性,http传输的内容都是明文,https传输的内容都是加密后的密文,相对而言https的安全性更高,但是https耗费更多的服务器资源。
【14】Http的请求有那些?
post、delete、put、get、options、head、connect、trace
文件上传使用post请求
get请求会缓存数据到浏览器上,图片点击不会切换的时候,考虑加上一个随机的参数。
【15】Http请求/响应包含几部分
请求行:请求方式、URL字段、HTTP协议版本,如GET /index.html HTTP/1.1)
请求头:以key-value形式组织数据,如User-Agent用户代理、Host主机地址
请求实体:存储请求参数状态行、应答头、响应实体
【15】get和post请求的区别
1. get请求会将请求参数直接拼接在url后面,而post请求将请求参数放在请求实体中。
2. get请求相对于post请求而言,不安全。
3. get请求对数据大小有限制,而post请求理论上无限制。
4. get请求会自动缓存,而post请求不会。