Network protocol
OSI标准7层计算机网络协议
P2P协议以及UDP协议位于7层协议的那一层
层级 | Value | 意义 | |
---|---|---|---|
7 | 应用层 | TELNET,HTTP,FTP,NFS,SMTP | 为应用程序提供服务 |
6 | 表示层 | 加密,ASCII | 数据格式化、数据加密和代码转换 |
5 | 会话层 | RPC,SQL | 建立、管理和维护会话 |
4 | 传输层 | TCP,UDP,SPX | 建立、管理和维护端口到端口的连接 |
3 | 网络层 | IP,IPX | IP选址及路由选择 |
2 | 数据链路层 | ATM,FDDI | 提供介质访问和链路管理 |
1 | 物理层 | Rj45,802.3 | 以二进制数据形式在物理媒体上传输数据 |
TCP/IP4层协议
层级 | Value | 意义 | |
---|---|---|---|
4 | 应用层 | ARP/RARPHTTP/FTP | 负责处理特定的应用程序细节. |
3 | 传输层 | TCP/UDP | 主要为两台主机上的应用提供端到端的通信. |
2 | 网络层 | IP | 处理分组在网络中的活动,比如分组的选路. |
1 | 网络接口与链路层 | 包括操作系统中的设备驱动程序、计算机中对应的网络接口卡. | |
HTTP(超文本传输协议) | |||
socket是一个通讯模型不是协议 | |||
![]() |
HTTP GET/POST/PUT/PATCH/DELETE语义上有什么区别,哪些操作是幂等的?幂等在实际业务中有什么意义?怎么实现幂等?
幂等: 请求多次返回的结果一样 abs(a) = abs(abs(a)) 绝对值求多少次结果都一样
GET 安全幂等的
POST 不安全不幂等的
DELETE 不安全幂等的
三次握手
首次握手隐患–SYN超时
问题起因
Server收到Client的SYN, 回复SYN-ACK的时候未接收到ACK确认
Server不断重试直至超时, Linux默认等待63秒才断开连接
针对SYN Flood的保护措施
SYN队列满后, 通过tcp_syncookie参数回发SYN Cookie
若为正常连接则Client会发回SYN Cookie, 直接建立连接
建立连接后, Client出现故障怎么办
保活机制
向对方发送保活探测报文,如果未收到响应则继续发送
尝试次数到达保活探测数仍未收到响应则中断连接
四次挥手
为什么会有CLOSED_WAIT状态
确保有足够的时间让对方收到ACK包
避免新旧连接混淆
服务器出现大量CLOSED_WAIT的原因
对方关闭socket连接,我方忙于读或写,没有及时关闭连接
检查代码,特别是释放资源代码
检查配置
netstas -n | awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}'
TIME_WAIT 1507
CLOSED_WAIT 588
FIN_WAT2 5
ESTABLISHED 413
说一下什么是tcp的2MSL?
主动发送fin关闭的一方,在4次挥手最后一次要等待一段时间我们称这段时间为2MSL
TIME_WAIT状态的存在有两个理由:
1.让4次挥手关闭流程更加可靠
2.防止丢包后对后续新建的正常连接的传输造成破坏
为什么客户端在TIME-WAIT状态必须等待2MSL的时间?
1、为了保证客户端发送的最后一个ACK报文段能够达到服务器。 这个ACK报文段可能丢失,因而使处在LAST-ACK状态的服务器收不到确认。服务器会超时重传FIN+ACK报文段,客户端就能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重启计时器。最好,客户端和服务器都正常进入到CLOSED状态。如果客户端在TIME-WAIT状态不等待一段时间,而是再发送完ACK报文后立即释放连接,那么就无法收到服务器重传的FIN+ACK报文段,因而也不会再发送一次确认报文。这样,服务器就无法按照正常步骤进入CLOSED状态。
2、防止已失效的连接请求报文段出现在本连接中。客户端在发送完最后一个ACK确认报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。
HTTP请求方法都有什么
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
1、 GET 请求指定的页面信息,并返回实体主体。
2、HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3、POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在
请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4、PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5、DELETE 请求服务器删除指定的页面。
6、CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7、OPTIONS 允许客户端查看服务器的性能。
8、TRACE 回显服务器收到的请求,主要用于测试或诊断。