本文共 2171 字,大约阅读时间需要 7 分钟。
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状态,完成三次握手
三次是保证双方互相明确对方能收能发的最低值。
四次挥手:
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的区别
单一的长连接
压缩头部和二进制格式
支持多路复用
服务器推送
转载地址:http://mhaii.baihongyu.com/