面试 网络基础部分

1.TCP/IP分别在模型的哪一层?  

应用层

运输层   TCP

网络层   IP

数据链路层

物理层 

2.socket长连接是什么意思?

socket是应用层与TCP/IP协议族中间的软件抽象层, 是一组接口.

长连接是指socket连接后不管是否使用都保持连接。

3.select和epoll你了解么,区别在哪?

select和epoll这两个机制都是多路I/O机制的解决方案

多路IO机制, 就是把所有的描述符存在一个队列里,然后调用一个函数, 直到有一个IO操作准备好时才返回, 告诉进程哪些IO准备就绪。

select监听的句柄数目有限, 最多只能监听1024个fd

epoll最大好处是不会随着监听句柄的增多而降低效率, select采用轮询处理, 其中的数据结构类似数组, 而epoll中只有活跃的socket才会调用callback函数, 把句柄加入队列, 只要看队列空不空就可以了。

使用mmap加速内核与用户空间的消息传递。

4.TCP UDP区别;三次握手四次挥手讲一下;

1)连接与非连接

2)对系统资源的要求(TCP多)

3)UDP程序结构比较简单

4)流模式与数据报模式

5)TCP保证数据正确性, 保证数据顺序

三次握手四次挥手:

三次握手:

——SYN——>

<—ACK/SYN—

——ACK——>

1)客户端发送SYN(syn=j)到服务器, 然后进入SYN_SEND状态

2)服务器收到SYN, 发送ACK/SYN, ACK是对SYN的确认j+1, SYN=k, 进入SYN_RECV状态

3)客户端最后发送ACK(ACK=k+1), 此包发送完毕, 客户端服务器进入established状态,完成三次握手

三次是保证双方互相明确对方能收能发的最低值。

四次挥手:

  1. 主机A的应用程序通知TCP数据发送完毕, TCP向主机B发送一个FIN标志;
  2. 主机B收到FIN标志后, 向主机A发送一个ACK, 同时通知自己的应用程序, 对方要求关闭连接;
  3. 主机B的应用程序通知TCP:我要彻底关闭连接, TCP向主机A发送一个FIN;
  4. 主机A收到主机B的FIN后, 向主机B发送一个ACK,表示连接彻底释放;

5.TIME_WAIT过多是因为什么?

产生的原因:假设最后一个ACK丢失了, 主动关闭的一方应该维持一个TIME_WAIT状态, 以便被动关闭一方重新发送FIN标志时重新发送ACK, 如果主动关闭一方发送完ACK后处于CLOSED状态, 那么收到被动关闭一方重新发送的FIN标志后会返回一个RST包, 被动关闭一方便会以为发生了错误

在高并发短连接的TCP服务器上,当服务器处理完请求后立刻按照主动正常关闭连接。。。这个场景下,会出现大量socket处于TIMEWAIT状态。

6.http一次连接的全过程:你来说下从用户发起request——到用户接收到response?

1)URL解析

2)DNS将URL解析成源站IP地址

3)与源站ip建立TCP连接

4)向服务器发送请求报文

5)服务器收到请求报文后返回响应报文

6)服务器关闭TCP连接

7.http连接方式。get和post的区别,你还了解其他的方式么;

短连接:客户端和服务器每进行一次http通信就要建立和断开一次TCP连接;

长连接:只要任意一端没有明确提出断开连接, 则保持TCP连接状态;

get用于获取数据, post用于提交数据;

PUT传输文件, 一般在报文主体包含文件内容, url指定存储的位置

HEAD获取报文首部, 确定URL有效性和资源更新的日期

DELETE删除文件

8.restful你知道么?

听说过, 是一种软件设计风格, 不是标准, 多用于客户端与服务器交互类的软件。

9.状态码你知道多少,比如200/403/404/504等等?

200 OK:表示客户端的请求在服务器端被正常处理了

403 Forbidden: 表示客户端请求的URL被服务器拒接了

404 Not Found:表示客户端请求的资源在服务器端没有找到

504 网关超时: 服务器作为网关或代理, 没有及时从上游服务器收到请求

10.七层协议   每层作用

物理层:以二进制数据形式在物理媒体上传输数据

数据链路层:一方面接收来自网络层的数据帧, 为物理层封装这些数据帧, 另一方面把物理层的原始数据比特封装成可以在网络中传输的帧

网络层:网络层确定把数据包传送到其目的地的路径

传输层:传输层把来自会话层的大量消息分成易于管理的包发向网路层

会话层:建立与管理应用程序之间的通信

表示层:协议转换, 数据编码和数据压缩

应用层:应用层向应用进程展示所有的网络服务

11.HTTP 和HTTPS的区别

HTTP+认证+加密 = HTTPS

1)建立TCP链接

2)客户端验证服务器数字证书, 验证通过步骤三

3)DH算法协商对称加密的密钥和HASH密钥

4)建立SSl安全隧道

5)进行数据传输, 对称密钥保证数据安全性, HASH密钥保证数据完整性

12. http1.0 1.1 2.0的区别

http1.1支持长连接和请求的流水线处理, 增加了请求和响应字段

2.0和1.x的区别

单一的长连接

压缩头部和二进制格式

支持多路复用

服务器推送





猜你喜欢

转载自blog.csdn.net/sinat_34927324/article/details/79738238