协议内容
HTTP是一种无状态的应用层协议,它基于客户端-服务器模型,用于在客户端和服务器之间传输数据。HTTP的核心内容包括:
- 请求方法: 定义客户端对服务器的请求类型。常见的请求方法有GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。
- URL(Uniform Resource Locator): 表示客户端要请求的资源的地址。URL由协议类型、主机名、端口号和资源路径组成。
- 请求头: 用于向服务器传递附加信息,如浏览器类型、用户代理、内容类型等。
- 请求体: 在POST和PUT等请求中,用于携带客户端提交的数据。
- 状态码: 表示服务器对请求的处理结果。常见的状态码有200(成功)、404(未找到)、500(服务器错误)等。
- 响应头: 用于向客户端传递附加信息,如内容类型、缓存控制等。
- 响应体: 服务器返回的实际数据,可以是HTML文档、JSON数据等。
TCP三次握手
TCP连接是在计算机网络中建立的可靠的、面向连接的通信通道。它是在发送端和接收端之间建立的一种虚拟的连接,用于确保数据的可靠传输。也可以理解是一种状态的连接。
TCP协议具有超时机制跟保活机制,如果TCP发现无法从对端接收到确认应答ACK,根据超时机制,发送方就会认为连接已断开;此外,TCP还会定期发送保活探测包以检测对方的响应,如果发送一系列保活探测包而没有接收到对应的应答,它就会认为连接已断开,并主动关闭连接;
在整个过程中包含:
- 发起方(通常是客户端)向接收方(通常是服务器)发送一个带有SYN(同步)标志的数据包,请求建立连接。
- 接收方收到这个数据包后,回复一个带有ACK(确认)和SYN标志的数据包,表示同意建立连接。
- 发起方再次回复一个带有ACK标志的数据包,表示确认接收方的回复。
序列号(sequence number):表示我方(发送方)这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置
确认号(acknowledge number):表示期望对方(接收方)的下一次sequence number是多少。注意,SYN/FIN的传输虽然没有data,但是会让下一次的传输的packet seq增加一,但是,ACK的传输,不会让下一次的传输packet加一。