http知识点整理记录

TCP的三次握手四次挥手:


三次握手(建立连接):

    第一次握手: 建立连接时,客户端向服务器端发送TCP连接请求数据包(SYN=1,seq=x),客户端进入SYN_SEND状态

    第二次握手: 服务器确认数据包,并返回自己的数据包(SYN=1,ACK=1,ack=x+1,seq=y),服务器进入SYN_RECV状态

    第三次握手: 客户端确认并再次发出确认(ACK=1,ack=y+1,seq=x+1),确认发送完毕后,客户端和服务端处于ESTABLISHED状态

    意义:如果客户端发起一个连接请求报文段没有丢失,延误到连接释放后才发送到服务端,服务端认为客户端发起了连接请求,如果没有

              三次握手,那么就会直接建立起连接,但实际并不需要建立连接(浪费资源),三次握手需要客户端再次确认后,才会建立起连接

 

四次挥手(四次挥手):

    第一次挥手:客户端发起释放连接的请求报文(FIN=1,seq=u),客户端进入FIN-WAIT-1状态

    第二次挥手:服务端收到连接释放的请求报文,发出确认报文(ACK=1,seq=v,ack=u+1),服务端进入CLOSE-WAIT状态,客户端                        向服务端发送数据的连接关闭,客户端收到确认消息后,客户端进入FIN-WAIT-2状态,等待服务端发送释放连接报文

    第三次挥手:服务端将最后的数据发送完后,向客户端发送释放连接报文(FIN=1, ACK=1,ack=u+1,seq=w),服务端进入LAST-                            ACK 状态,等待客户端确认

    第四次挥手:客户端收到连接释放的报文后,发出确认报文(ACK=1,ack=w+1,seq=u+1),客户端进入TIME-WAIT状态,等待2分

                    钟后关闭连接,服务端收到确认报文后立即关闭连接

    2MSL:为了保证最后一个消息一定到达服务端,如果确认报文丢失,则服务端会重新发起关闭请求,客户端再次确认;如果客户端直接

                关闭的话,可能会导致消息无法到达服务端,连接无法关闭。而且可以保证在这段时间发送的消息不会滞留在网络中,让其消

                失,防止出现在下次连接中

    意义:TCP是全双工模式,可以在两个方向上同时传递,所以每次关闭都要进行单独关闭,并要另一方确认

 

 

OSI七层网络模型:


由下往上:

    物理层、数据链路层、网络层(IP)、传输层(TCP、UDP)、会话层(RPC)、表示层(加密解密)、应用层(HTTP、FTP)

 

TCP\IP四层模型:

    连接层(物理层、数据链路层):负责建立电路连接,是整个网络的物理基础,典型的协议有以太网、ADSL等

    网络层:负责分配地址和传送二进制数据,主要协议是IP协议,ARP协议等

    传输层:负责传送文本数据,主要协议是TCP协议等

    应用层(应用层、表示层、会话层):负责传送各种最终形态的数据,是直接与用户打交道的层,典型的协议有HTTP,FTP等

 

 

传输层协议:


tcp:

    传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通讯协议

    特点:

        通过三次握手建立连接

        所有的数据都会传输完成,不丢失数据

        不限制数据大小

        适用于保证数据的完整性场景,如QQ、DNS的数据传输等

    缺点:

        连接只能是一对一的

        传输速率较UDP慢

        首部开销较大,20字节

 

udp:

    用户数据报协议,是一种面向事务的,基于流、简单不可靠的信息传输协议

    特点:

        无需建立连接传输快

        可实现一对一、一对多、多对一、多对多交互通信

        没有阻塞控制,因此网络出现拥塞不会使源主机的发送速率降低

        首部开销小,只有8字节

        适用于传输速率要求较高但允许丢包场景,通常用于视频资源传输

    缺点:

        不保证可靠交付

        数据包大小不能超过64K

TCP重传机制:


滑动窗口

todo

 

 

http\https:


http:

    超文本传送协议,是建立在TCP协议之上的一种应用协议,默认端口号是80,由请求和响应构成

    请求报文Request:

        请求行:包含请求类型、要访问的资源、HTTP版本

        请求头:有KV组成

        空行:空行之前全都是请求头,结束请求头

        请求数据:存放body体数据

    

    响应报文Response:

        状态行:HTTP版本、状态码、状态码描述

        消息头:由KV组成

        空行:空空隔行之前全是消息头,结束消息头

        响应体:存放返回结果

    http1.0\http1.1:

        在http1.0中认为每台服务器绑定唯一的IP地址,因此请求消息中没有传递主机名,在HTTP1.1中请求消息和响应消息中都支持host头,且请求消息中如果没有host会报400错误

        在http1.0中每次请求使用一个TCP连接,在http1.1中支持了长连接,默认即keep-alive,即在一个TCP连接上可以有多个请求,减少建立关闭连接耗费的时间

    http1.1\http1.2:

        http1.1采用管道机制实现基于一个TCP连接发送多个请求,会造成对头阻塞

        http1.2中提供如下优化:

            header压缩、基于https加密协议传输(必须使用 https ,http1.2才会生效)、多路复用(避免了对头阻塞)、请求优先级(在多路复用的同时保证高优先级请求先发送)、服务端推送、二进制协议

https:

    默认端口443

    内容加密:中间者无法直接查看明文内容

    验证身份:通过证书认证客户端访问的是自己的服务器

    保护数据完整性:防止传输的内容被中间人冒充或串改

    是对客户端信任服务端的一种方式,可通过在黄色区域拦截进行伪造服务端

 

        

 

常用的HTTP方法:


    HTTP1.0只支持GET、POST、HEADE

    GET、POST、HEAD(响应体无内容)、PUT、DELETE、TRACE、OPIONS(查看资源支持的请求方法)、CONNECT

 

 

无状态协议:


无状态是指,每一次请求都不会有上下文,即在下一次连接不会记录这次连接的信息。

HTTP\UDP是无状态的, TCP\FTP是有状态的

HTTP协议是无状态无连接的,无连接是指一次请求一次连接,可以通过cookie来解决无状态的问题,

 

 

缓存:


cookie: 如果不设置过期时间,则保存在内存中,有效时间截止到会话结束;如果设置过期时间则保存在硬盘中,直到过期才消失。保存在

    客户端,包含path及domain,不允许跨域访问及设置(子域除外)。单个cookie保存的数据不超过4K,且只能保存字符串。向服务端发

    起请求会自动在请求头中携带上cookie,可以被用户禁用

session: 保存在服务端,默认有效期30分钟,每次访问会刷新有效期。通常通过cookie存储sessionId保存在浏览器,当禁用cookie时会重

    写URL拼接sessionId。可以保存对象且无长度限制

localStorage: 将数据保存在硬盘中,下次访问仍有效,只能通过清除才会失效,类似前端数据库,一般可以达到5M.

sessionStorage: 保存在内存中,数据有效时间为当前会话,会话失效即数据失效,一般可达到5M

 

 

抓包:


tcpdump -s0 -A

wireshark

 

Java Spring是一个广泛使用的轻量级开源框架,用于构建企业级Web应用程序。Spring框架提供了模块化的解决方案,简化了企业级应用的开发、管理以及依赖注入(Dependency Injection,DI)等功能。以下是一些Spring基础知识点整理: 1. **IoC(Inversion of Control)和DI(Dependency Injection)**:Spring的核心思想就是IoC,它反转了传统的控制流动,使对象之间通过容器管理彼此的依赖关系,而不是硬编码。DI是IoC的一种具体实现方式,通过配置文件或注解自动为对象提供所需依赖。 2. **Bean的作用域和生命周期**:Spring中的Bean有多种作用域,如Singleton(单例)、Prototype(原型)、Request、Session等。每个Bean都有其生命周期,从创建、初始化到使用和销毁。 3. **Spring配置文件**:通常使用XML配置文件(如applicationContext.xml)或Java配置(@Configuration classes)来定义Spring应用的组件和依赖关系。 4. **AOP(Aspect Oriented Programming)**:Spring AOP支持面向切面编程,可以编写跨组件的行为,比如日志记录、事务管理等。 5. **Spring MVC**:Spring提供的web MVC架构,包括Controller处理HTTP请求,Model负责数据访问和业务逻辑,View负责渲染结果给用户。 6. **Spring Boot**:Spring Boot简化了Spring应用的初始搭建,自动配置了许多常用的功能,使得快速开发变得更容易。 7. **Spring Data**:提供了一套高级API,用于简化数据访问操作,如JPA、MongoDB等。 8. **Spring Security**:用于实现Web应用的安全管理,包括认证、授权、会话管理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值