1.OSI与TCP/IP各层的结构与功能,都有用哪些协议
- 应用层的任务是通过进程间的交互来完成特定网络应用。主要协议,HTTP协议
- 运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。主要使用以下两种协议:传输控制协议TCP--提供面向连接的,可靠的数据传输服务。用户数据协议UDP--提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)
- 网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。---IP协议
- 数据链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据的时候,数据链路层将网络层交下来的IP数据报组装成帧。
- 物理层的作用是实现相邻计算机之间比特流的透明传输,尽可能屏蔽掉具体传输介质和物理设备的差异。
为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。
- 客户端-发送带有SYN标志的数据包-一次握手-服务端
- 服务端-发送带有SYN/ACK标志的数据包-二次握手-客户端
- 客户端-发送带有ACK标志的数据包
为什么要三次握手
三次握手的目的是建立可靠的通信信道,说道通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
SYN是TCP/IP建立时的握手信号;ACK是确认字符,表示确认发来的数据已经接收无误。
断开一个TCP连接则需要四次挥手:- 客户端-发送一个FIN,用来关闭客户端到服务器的数据发送。
- 服务端-收到这个FIN,它发回一个ACk,确认序号为收到的序号加1.和SYN一样,一个FIN将占用一个序号。
- 服务器-关闭与客户端的连接,发送一个FIN给客户端
- 客户端-发回ACK报文确认,并将确认序号位置为收到序号加1
为什么要四次挥手
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后完全关闭了TCP连接。
3.TCP,UDP协议的区别
4.TCP协议如何保证可靠传输
- 应用数据被分割成TCP认为最适合发送的数据块
- TCP给发送的每一个包进行排序,把有序的数据传送给应用层。
- 校验和:TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。
- TCP的接收端会丢弃重复的数据
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP接收端只允许发送端发送接收端缓冲区能接纳的数据。TCP使用的流量控制协议是可变大小的滑动窗口协议。
- 拥塞控制:当网络拥塞时,减少数据的发送
- ARQ协议:也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
- 超时重传:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
5.ARQ协议
自动重传请求,它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后的一段时间之内没有收到确认帧,它通常会重新发送。ARQ包括停止等待ARQ协议和连续ARQ协议
停止等待ARQ协议,优点:简单。缺点:信道利用率低,等待时间长
连续ARQ协议:优点:信道利用率高,容易实现,即使确认丢失,也不必重传。
6.滑动窗口和流量控制
TCP利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送发窗口大小,从而影响发送方的发送速率。
7.拥塞控制
拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。
TCP的拥塞控制采用了四种算法:慢开始、拥塞避免、快重传和快恢复。
8.在浏览器中输入url地址->>显示主页的过程(面试常客)总体来说分为以下几个过程
- DNS解析
- TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
9.状态码
10.各种协议与HTTP协议之间的关系 11.HTTP长连接和短连接在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP通信就要断开一次TCP连接,
比如,使用浏览器浏览一个包含多张图片的HTML页面的时候,在发送请求访问HTML页面资源的同时,也会请求该HTML页面里包含的其他资源。因此每次的请求都会造成无谓的TCP连接建立和断开,增加通信量的开销
HTTP/1.1,默认使用长连接,也称为HTTPkeep-alive,用以保持连接特性。
其特点是只要任意一端没有明确提出断开连接,则保持TCP连接状态。
长连接的好处: 在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP请求和响应能够更早的结束,这样Web页面的显示速度也就相应提高了。
实现长连接需要客户端和服务端都支持长连接。
12.cookie的作用什么?和Session有什么区别?
cookie和Session都是用来跟踪浏览器用户身份的回话方式,但是两者的应用场景不太一样。
cookie一般用来保存用户信息。Session的主要作用就是通过服务端记录用户的状态
cookie数据保存在客户端(浏览器端),Session数据保存在服务器端
13.HTTP1.0和HTTP1.1的主要区别
- 长连接:在1.0中默认使用的是短连接。
- 错误状态响应码:1.1中新增了24个错误状态响应码
- 缓存处理:在1.0中主要使用header里的If-Modified-Since,Expires来做缓存判断的标准,在1.1中则引入了更多的缓存控制策略。
- 带宽优化以及网络连接的使用
14,URI和URL的区别是什么?
- URI是统一资源标志符,可以标识一个资源。
- URL是统一资源定位符,可以提供该资源的路径。它是一种具体的URI,即URL可以用来标识一个资源,而且还致命了如何locate这个资源。
15.HTTP和HTTPS的区别?
- 端口:HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443
- 安全性和资源消耗:HTTP协议运行在TCP之上,所有的传输的内容都是明文,客户端和服务端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上,所有传输的内容都经过加密。HTTP安全性灭有HTTPS高,但是HTTPS比HTTP耗费更多的服务器资源。
| Http请求协议包 | Http响应协议包 |
| 请求行:URL:请求地址 method:请求方式 | 状态行:Http状态码 |
| 请求头:cookie,请求参数[get] | 响应头:cookie content-type编译器 |
| 空白行:起到隔离作用 | 空白行 |
| 请求体:请求参数[post] | 响应体:文件内容【二进制】 |
| 携带的【请求参数数量】不能超过4K | 可以携带任意数量的【请求参数】 |
| 必须在浏览器地址栏上将【请求参数信息】展示出来 | 必须在浏览器地址栏上隐藏请求参数信息 |
| 必须将请求参数信息保存在Http请求协议包中【请求头】 | 必须将参数信息保存在Http请求协议包中【请求体】 |
| 要求浏览器在接收到服务器返回的资源文件内容后,必须即资源文件内容保存在浏览器的缓存 | 禁止浏览器将服务器返回资源文件内容进行保存,必须【阅后即焚】 |
| 用户第一次通过【手动方式】通知浏览器访问OneServlet。 在浏览器接收到响应包之后,会读取到302状态。此时浏览器 | 用户第一次通过手动方式要求浏览器访问OneServlet。 OneServlet工作完毕后,通过当前的请求对象代替浏览器 向Tomcat发送请求,申请调用TwoServlet。 Tomcat在接收到这个请求之后,自动调用TwoServlet来 完成剩余任务 |



