嵌入式第三十七课TCP机制与HTTP协议
嵌入式第三十七课!!!TCP机制与HTTP协议
TCP的其他机制
TCP头部标志位
- SYN:请求建立连接标志位
- ACK:响应报文标志位
- PSH:携带数据标志位,通知接收方该从缓冲区读数据
- FIN: 请求断开连接标志位
- RST:复位标志位
- URG: 紧急数据标志位
机制
安全可靠
1. 三次握手和四次挥手机制
2. 应答机制:TCP对于每一包数据都会给出相应的应答。发送数据时序列号表示这包数据的起始编号,响应报文中的确认号是接收方收到的最后一个字节编号+1。
3. 超时重传机制:当数据发送出去等待指定时间没有收到响应,此时认为这包数据丢失则进行冲传。
4. 滑动窗口机制:一段缓冲区,缓存TCP已发送未收到响应,准备发送等数据
提高效率
1. 延迟应答机制:发送数据的同时可以等待应答
2. 流量控制机制:结合TCP头部的窗口大小,动态调整发送速率。
3. 捎带应答机制:ACK报文可能和应用层的数据同时发送
HTTP协议
HTTP协议是基于万维网来使用的网络协议;
WWW:万维网(世界范围内的广域网)
- 万维网服务器后台如何标记万维网数据
url : 统一资源定位符,格式如下:
举个例子:
在这个url里,端口和路径忽略(主页:在主机后面直接加 ‘/’ )
- 万维网客户端与万维网服务器之前使用什么方式通信
HTTP:超文本传输协议(应用层协议)
标准端口:80
备用端口:8080
需要配合基于传输层的TCP协议进行使用
- 万维网客户端如何展示请求的数据
HTML:超文本标记语言
HTTP通信过程
- 请求建立TCP连接
- 发送HTTP请求报文
- 接收HTTP响应报文
- 断开连接
HTTP报文格式
请求报文
HTTP请求报文(举例www.new.sohu.com):
GET / HTTP/1.1\r\n
Host: news.sohu.com\r\n
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8\r\n
Accept-Language: en-US,en;q=0.5\r\n
Connection: keep-alive\r\n
\r\n
Connection: keep-alive —->长连接:连接保持一定时间
Connection: close ——>短连接:连接立马断开
获取请求报文的方式
WINDOWS
点击开发人员工具——>网络——>刷新网页——>点击要查询的url——>点击标头——>请求标头(原始)
ubuntu
使用工具wireshark(sudo wireshark)——>any——>点击TCP端口80的筛选条件——>刷新网页——>找到使用网络协议HTTP且显示200ok的——>右键找到follow——>HTTP stream
响应报文
举例(www.news.sohu)
HTTP响应报文:
HTTP/1.1 200 OK\r\n
Date: Mon, 25 Aug 2025 06:14:56 GMT\r\n
Content-Type: text/html;charset=utf-8\r\n
Server: openresty\r\n
Vary: Accept-Encoding\r\n
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Trace-Id: 15e6e7862abd49fdb1c327a6dbeb200d.10490.17561024969448219
Data-Source:
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
S-REQ-ID: 17348448226369344247
S-REQ-TYPE: 0
X-Cache-Lookup: Cache Miss
Content-Encoding: gzip
Cache-Control: no-cache\r\n
Transfer-Encoding: chunked\r\n
X-NWS-LOG-UUID: 17348448226369344247\r\n
Connection: keep-alive\r\n
X-Cache-Lookup: Cache Miss\r\n
\r\n