目录

嵌入式第三十七课TCP机制与HTTP协议

嵌入式第三十七课!!!TCP机制与HTTP协议

TCP的其他机制

TCP头部标志位

  • SYN:请求建立连接标志位
  • ACK:响应报文标志位
  • PSH:携带数据标志位,通知接收方该从缓冲区读数据
  • FIN: 请求断开连接标志位
  • RST:复位标志位
  • URG: 紧急数据标志位

https://i-blog.csdnimg.cn/direct/5170d442310b4cd28f14ec03eeaebe41.png

机制

安全可靠

        1. 三次握手和四次挥手机制

        2. 应答机制:TCP对于每一包数据都会给出相应的应答。发送数据时序列号表示这包数据的起始编号,响应报文中的确认号是接收方收到的最后一个字节编号+1。

        3. 超时重传机制:当数据发送出去等待指定时间没有收到响应,此时认为这包数据丢失则进行冲传。

        4. 滑动窗口机制:一段缓冲区,缓存TCP已发送未收到响应,准备发送等数据

https://i-blog.csdnimg.cn/direct/272b222b30c84f41920327f287431ebf.png

提高效率

         1. 延迟应答机制:发送数据的同时可以等待应答

         2. 流量控制机制:结合TCP头部的窗口大小,动态调整发送速率。

         3. 捎带应答机制:ACK报文可能和应用层的数据同时发送

HTTP协议

        HTTP协议是基于万维网来使用的网络协议;

WWW:万维网(世界范围内的广域网)

  1. 万维网服务器后台如何标记万维网数据

        url : 统一资源定位符,格式如下:

https://i-blog.csdnimg.cn/direct/c0157d0445e34e928ae8fc4648ecf871.png

举个例子:

https://i-blog.csdnimg.cn/direct/124261cc50fd4d889f3cf633dbce1b24.png

在这个url里,端口和路径忽略(主页:在主机后面直接加 ‘/’ )

  1. 万维网客户端与万维网服务器之前使用什么方式通信

        HTTP:超文本传输协议(应用层协议)

        标准端口:80

        备用端口:8080

        需要配合基于传输层的TCP协议进行使用

  1. 万维网客户端如何展示请求的数据

        HTML:超文本标记语言

HTTP通信过程

https://i-blog.csdnimg.cn/direct/665a6d479d164922ad22ed054e2a5914.png

    1. 请求建立TCP连接
    1. 发送HTTP请求报文
    1. 接收HTTP响应报文
    1. 断开连接

HTTP报文格式

https://i-blog.csdnimg.cn/direct/795b52d369114de6bbe7d4faa600612f.png

https://i-blog.csdnimg.cn/direct/7fce977e4fef454dbb6d7a7d73b3b797.png

https://i-blog.csdnimg.cn/direct/c0dbdf7fe08e40ccbb58f358a694f35e.png

请求报文

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——>点击标头——>请求标头(原始)

https://i-blog.csdnimg.cn/direct/11a02106132f427782ed413a6d55463b.png

ubuntu

        使用工具wireshark(sudo wireshark)——>any——>点击TCP端口80的筛选条件——>刷新网页——>找到使用网络协议HTTP且显示200ok的——>右键找到follow——>HTTP stream

https://i-blog.csdnimg.cn/direct/99db5588278542078eb7cc9fa80c357b.png

响应报文

举例(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