计算机网络
2020-04-21 10:32:28 0 举报
AI智能生成
计算机网络常用知识及面试中常被问到的题目梳理
作者其他创作
大纲/内容
计算机网络
OSI七层模型
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP
三次握手
请求步骤
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手
SYN Flood攻击
原因:服务端收到SYN,回复SYN-ACK后但未收到应答;server无法收到回执,重试63s之后断开连接 避免恶意将SYN队列占满,增加SYN-Cookie可直接进行连接 如果中途客户端断开:保活机制,可以在一定时间内发送探测报文
TCP报文
ACK:确认序列号SYN:同步序列号,用于建立连接FIN:用于释放连接
为什么要进行三次握手
获取seq的序列初始值
四次挥手
第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放。
TIME_WAIT
2MSL :一个MSL,Linux通常为30s
确保有足够的时间让对方收到ACK报避免新旧连接混淆
CLOSE_WAIT
原因:对方关闭连接,服务器没有收到;或者我方忙于读写,没有及时关闭连接 代码问题、配置问题特别是线程池的数量配置,
为什么要进行四次挥手
每个端均有ACK+FIN包,需要确保两者都进行确认完成后,才能最后终止请求
滑动窗口
用于流量控制和乱序重排
RTT:发送一个数据包到收到一个ACK的时间, RTO:重传间隔时间
TCP和UDP的区别
连接状态
可靠行
有效性
速度
量级
http
请求结构
响应结构
Content—Type:服务器返回数据类型Last-Modify:最后修改时间Refersh:浏览器刷新时间Transfer-Encoding:chunked 分块形式回送数据content-disposition: 告知浏览器打开数据方式
请求/响应步骤
客户端连接web服务器发送HTTP请求服务端响应请求释放TCP连接客户端解析HTML内容
浏览器输入URL请求流程
DNS解析-TCP连接--服务器处理请求并返回HTTP报文--浏览器渲染页面--连接关闭
状态码
GET和POST区别
1、http报文层面:get将请求信息放在URL中,post放在报文体中2、数据库层面:get符合幂等性和安全性,post不符合3、get可以被缓存被存储,post则不行
cookie和session区别
Cookie:客户端会话技术,数据存储在客户端,键值对,支持过期时间自动携带,跨域名、跨网站,默认不支持中文
Session:服务端会话技术,内存中,django会把数据持久化到数据库中,默认过期是14天,base64+混淆串进行加密,依赖cookie需要cookie带一个字段来验证这个用户需要的是哪个session
https请求流程
1、浏览器将自己支持的加密算法信息发送给服务器2、服务器选择一套自己支持的算法,以证书的形式发送给浏览器3、浏览器验证证书,并结合公钥加密信息发给服务器4、服务器使用私钥解密信息,验证哈希,加密响应消息回发给浏览器5、浏览器解密,验真,之后进行加密交互数据
http与https区别
https需要CA证书https密文传输连接方式不同https端口是443,http为80https=http+加密+认证+完整性保护,交http安全
https真的安全吗
浏览器默认为http请求,又被劫持的风险:解决方案:hsts进行优化
socket请求
http2
多路复用
Stream
流量控制
服务端推送
头部压缩
QUIC
类比于http3协议
避免前序包阻塞问题
零RTT建连
FEC前向纠错
其他
IPV4与IPV6的区别IPV4地址是32位(43亿),ipv6地址为128位;表现形式不一样,ipv4为当前常用的IP地址,IPV6
0 条评论
回复 删除
下一页