当前位置: 首页 > article >正文

对TCP/IP、HTTP协议原理的分析和总结

一、HTTP协议原理


1. HTTP协议概述


HTTP(HyperText Transfer Protocol,超文本传输协议)是用于在Web浏览器和服务器之间传输超文本的应用层协议。它是无状态的,即每次请求都是独立的,不保留任何上下文信息。

2. HTTP请求与响应

HTTP请求


一个HTTP请求由以下部分组成:

请求行:包含请求方法、请求URI和HTTP版本。
请求头部:包括多个头字段,提供请求的附加信息。
请求主体(可选):在POST或PUT请求中包含数据。
示例:

vbnet

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

HTTP响应


一个HTTP响应由以下部分组成:

状态行:包含HTTP版本、状态码和原因短语。
响应头部:包括多个头字段,提供响应的附加信息。
响应主体(可选):包含实际的数据内容。
示例:

less

HTTP/1.1 200 OK
Date: Mon, 23 May 2022 22:38:34 GMT
Server: Apache/2.4.1 (Unix)
Content-Length: 438
Content-Type: text/html

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
3. 常见的HTTP方法


GET:请求指定资源的信息。
POST:向服务器提交数据,通常用于提交表单。
PUT:上传指定资源。
DELETE:删除指定资源。
HEAD:请求资源的头部信息。
OPTIONS:请求服务器支持的HTTP方法。
PATCH:局部更新资源。


4. 常见的HTTP状态码


1xx(信息性状态码):表示请求已接收,继续处理。
100 Continue
2xx(成功状态码):表示请求已成功处理。
200 OK
201 Created
3xx(重定向状态码):表示需要进一步操作以完成请求。
301 Moved Permanently
302 Found
4xx(客户端错误状态码):表示请求错误。
400 Bad Request
401 Unauthorized
404 Not Found
5xx(服务器错误状态码):表示服务器处理请求时发生错误。
500 Internal Server Error
502 Bad Gateway


5. HTTP/1.1 vs HTTP/2

HTTP/1.1:

基于文本协议,易于调试。
单个TCP连接上只能发送一个请求,阻塞问题严重(队头阻塞)。
支持持久连接和管道化。


HTTP/2:

基于二进制协议,提高了传输效率。
使用多路复用技术,在单个TCP连接上可以同时发送多个请求。
支持服务器推送,提升资源加载效率。
更高效的头部压缩。

二、TCP/IP协议栈


1. TCP/IP协议概述


TCP/IP协议栈是互联网的基础协议集,分为四层:应用层、传输层、网络层和链路层。

2. 各层功能及常见协议


应用层
功能:为应用程序提供网络服务。
常见协议:HTTP、HTTPS、FTP、SMTP、DNS、SSH。
传输层
功能:提供端到端的通信服务,负责数据传输的可靠性和完整性。
常见协议:
TCP(传输控制协议):
面向连接,提供可靠的数据传输。
数据传输前需建立连接(三次握手),传输完毕后需关闭连接(四次挥手)。
具有流量控制和拥塞控制机制。


UDP(用户数据报协议):
无连接,提供不可靠的数据传输。
传输效率高,适用于实时应用(如视频流、在线游戏)。


网络层
功能:负责数据包的路由和转发。
常见协议:
IP(互联网协议):
提供不可靠的、无连接的数据传输。
IPv4和IPv6是两种主要版本。
ICMP(Internet控制报文协议):
用于发送错误报告和网络探测信息(如ping命令)。
ARP(地址解析协议):
将IP地址解析为MAC地址。


链路层
功能:负责物理网络上的数据传输。
常见协议:
Ethernet(以太网):
常用的局域网技术,使用MAC地址进行数据传输。
PPP(点对点协议):
用于点对点连接的数据链路层协议。

3. TCP三次握手和四次挥手


三次握手
TCP在通信开始前需要建立连接,使用三次握手过程:

SYN:客户端发送SYN(同步)包,表示希望建立连接。
SYN-ACK:服务器接收到SYN包后,回复一个SYN-ACK包,表示同意建立连接。
ACK:客户端接收到SYN-ACK包后,回复一个ACK包,连接建立成功。
示例:

markdown


1. Client -> Server: SYN
2. Server -> Client: SYN-ACK
3. Client -> Server: ACK


四次挥手


TCP在通信结束后需要关闭连接,使用四次挥手过程:

FIN:客户端发送FIN(终止)包,表示希望关闭连接。
ACK:服务器接收到FIN包后,回复一个ACK包,表示同意关闭连接。
FIN:服务器也发送一个FIN包,表示希望关闭连接。
ACK:客户端接收到FIN包后,回复一个ACK包,连接关闭成功。
示例:

markdown
 

1. Client -> Server: FIN
2. Server -> Client: ACK
3. Server -> Client: FIN
4. Client -> Server: ACK


http://www.kler.cn/news/353871.html

相关文章:

  • C++学习笔记----9、发现继承的技巧(一)---- 使用继承构建类(4)
  • 雷达手势识别技术
  • C++ IO多路复用 poll模型
  • 前端学习-CSS的三大特性(十七)
  • python 爬虫 入门 一、基础工具
  • 分布式数据库环境(HBase分布式数据库)的搭建与配置
  • [算法日常] 逆序对
  • 音乐播放器项目专栏介绍​
  • Linux的kafka安装部署
  • 自动化测试与敏捷开发的重要性
  • docker (desktopcompose) download
  • KVM 建黑群晖
  • HarmonyOS NEXT 应用开发实战(六、组件导航Navigation使用详解)
  • JavaWeb Servlet--09深入:注册系统03--删除用户业务
  • 使用WordPress从零开始搭建一个本地网站实现远程访问
  • [Python]将pdf文件转为svg
  • VMware16的安装及VMware配置Linux虚拟机
  • Windows模拟电脑假死之键盘鼠标无响应
  • 【Java后端】Spring vs SpringBoot
  • Spring Boot比Spring多哪些注解