好友
阅读权限30
听众
最后登录1970-1-1
|
小公主々
发表于 2021-3-10 10:49
本帖最后由 小公主々 于 2021-3-17 15:59 编辑
全系列笔记背景说明:最近在看剑指Java面试-Offer直通车系列的课程,把个人笔记分享给大家
网络模型协议
1.为什么要了解网络知识:对于Socket等数据包解析底层一般都有实现,我们无需考虑,直接使用即可。但如果需要提升性能时,就需要了解底层,数据包丢失等等问题才能解决。
2.网络协议:当前协议层有很多标准,四层、五层和七层。国际标准模型为ISO反过来的OSI模型,七层网络传输协议(物理层->数据链路层->网络层->传输层->会话层->表示层->应用层)
3.各层特点(依次按层对应):物理层负责两台物理机寻址->传输数据格式化并纠错->网络层数据称为数据包且智能传输(IP协议)-->大文件传输需切割为segement且对部分segement传输错误做控制(最重要的一层包含TCP和UDP协议)-->会话层负责发包传输等管理应用层面的通信-->表示层负责当系统及语言不一致时进行语法转换实现通信-->应用层定义消息头等标识(包含HTTP协议)
TCP三次握手
4.TCP三次握手,TCP是传输层控制协议,面向连接的、可靠的、基于字节流的传输层通信协议。发送的数据包都有序号,收到则返回ACK确认。
5.TCP和UDP报文头中均不带IP,靠port去指引,IP是IP层的事情。用进程ID作为标识只在本地有效,当两台机器时,会通过IP+TCP协议+协议端口号去寻址并标识,也就是即套接字Socket。通信的重点是应用进程,但只需要将报文传递到协议端口即可。
6.ACK确认码中可以标识出传输数据包具体信息,例如下次应该传输的字节,会放到ACK中。同时报文中的Windows段可以计算应该传输速率并进行控制。
7.TCP传递中带有特有的flag标识,如下六种。
8.TCP三次握手即建立连接,可互相进行通信交互(客户端/服务端),核心流程为客户主动打开closed状态,服务器被动开启closed状态并进入监听状态,客户发起请求并进入已发送状态,服务端收到请求返回ack并进入同步接收状态,客户端再次请求,之后双方进行数据传输(图中三个箭头代表三次握手的过程)。注:图中多次提到的syn为上图中表示的同步序号值。
9.三次握手的原因:TCP过程中需要正确用到序号值,而三次握手就是为了初始化序号值。
10.提升:当syn发送后客户端未收到ack等,服务器进行重试直到超时,引出syn flood问题,恶意发起syn请求占满服务器处理队列,解决就是增加tcp_syn_cookie参数,服务端发出后,正常的客户端可以发回来。
11.当建立连接后,客户端发生异常,存在保活机制,类似心跳机制,向对方发送保活探测报文,达到指定次数后仍未收到响应则主动断开连接。
TCP四次挥手
12.挥手是为了终止连接。第一次客户端发起终止请求,第二次服务端发起停止报文,第三次再次发起释放停止报文,第四次服务端收到客户端发起的请求,会立即关闭,而客户端tcp会等待2MSL后真正释放。总结为:client发终止、server发收到终止、server发终止、client发确认终止。
13.期间不直接关闭而存在time_wait状态的原因:确保足够的时间让对方收到ack包;避免新旧连接混淆。
14.四次挥手存在的原理:因为双方都可以互相发送数据,所以确保都收到fin和ack报文。那么实际上双方都是两次挥手。
15.服务器大量close_wait状态原因:对方关闭socket时,我方由于忙于读写操作,未及时关闭连接。多去释放资源方向排查、或者线程池的线程配置等。
TCP和UDP区别
16.udp报文简单,不具备断点重传等功能。
17.特点:面向非连接、同时向多个客户端传输、数据包报文头字节小。
18.区别:长连接与非连接、可靠性、有序性、速度和量级。
TCP滑动窗口
19.概念:为了同时对tcp的多段数据同时发送,用来做流量控制和乱序重排。
20.滑动窗口发送端有四种状态的数据:已发送并确认、已发送未收到确认、未发送收到允许发送、未发送因大小不允许发送。接收端有三种:已接收并发送确认、未发送允许发送、未发送不允许发送。
21.滑动窗口允许动态策略控制。
22.从这个模块也能看出TCP的核心在于断点重传和有序传送机制。
HTTP
23.特点:支持客户端/服务端模式、简单快速、灵活、无连接、无状态
24.http特殊有个地是比如浏览器输入url的流程:DNS解析-》TCP连接-》发送htpp请求-》接收http报文响应-》浏览器释放TCP连接。
GET和post区别
25.特殊点补充:数据库层面考虑,GET方法符合幂等性和安全性,POST不符合。幂等性:对数据进行单次和多次操作时得出结果一致。安全性:对数据库操作不改变数据则表示安全,get一般用于查询。
26.get可以被缓存和存储,post不行。所以大部分GET会被缓存到CDN中。
HTTP和HTTPS的区别
27.加密核心:身份验证和数据加密(SSL协议或TCL协议)
28.加密方式:对称/非对称加密、哈希算法、数字签名
29.单种加密方式有缺点,HTTPS采用组合拳,如下流程
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|