day36

  1. 粘包现象描述

TCP发送多包数据时,由于TCP是流式传输协议,多包数据可能在接收端粘连在一起,无法区分包边界。

  1. 粘包解决方法

· 加延时:在每包数据发送后加入适当延时,等待接收端处理完毕再发送下一包

· 设置数据边界:在数据包中添加特殊分隔符作为包与包之间的边界标识

· 定长发送:规定每个数据包固定长度,不足时补位,接收端按固定长度截取

第二部分:TCP报文头部结构

  1. TCP固定头部(20字节)组成

· 16位源端口号:发送端应用程序的端口号

· 16位目的端口号:接收端应用程序的端口号

· 32位序号:标识该数据包数据起始字节的编号

· 32位确认序号:接收方期望下次收到的数据首字节序号

· 4位首部长度:标识TCP头部的长度

· 6位保留字段:预留未使用

· 6个控制标志位

· 16位校验和:校验数据完整性

· 16位紧急指针:配合URG标志使用

  1. 控制标志位含义

· SYN:请求建立连接,用于三次握手

· ACK:确认应答标志,置1时确认序号字段有效

· FIN:结束通信标志,用于四次挥手

· RST:重置连接标志,用于异常时重新建立连接

· PSH:推送标志,指示接收端尽快将数据交给应用层

· URG:紧急标志,指示紧急指针有效

第三部分:TCP三次握手与四次挥手

  1. 三次握手建立连接

· 主动端发送SYN请求,进入同步已发送状态

· 被动端收到后回复ACK并发送自己的SYN,进入同步已接收状态

· 主动端收到后回复ACK,双方进入连接已建立状态

  1. 四次挥手断开连接

· 主动关闭端发送FIN请求,进入FIN等待1状态

· 被动关闭端回复ACK确认,进入关闭等待状态,主动端进入FIN等待2状态

· 被动关闭端数据发送完毕后发送FIN请求,进入最后确认状态

· 主动关闭端回复ACK确认,进入时间等待状态,定时结束后连接彻底关闭

  1. 特殊情况说明

· 若被动关闭端在收到FIN时已无数据待发送,可同时回复ACK+FIN,四次挥手可能变为三次

· TCP连接保持期间默认维持连接状态,直到挥手结束

第四部分:TCP可靠传输机制

  1. 序号与确认号机制

· 序号标识本包数据的起始字节编号,保证数据顺序

· 确认号指示期望下次收到的数据首字节序号

· 通过序号和确认号配合,确保数据不重不漏

  1. 滑动窗口机制

· 用于控制传输流量和发送速率

· 通过窗口大小字段动态调整发送端和接收端的缓冲区大小

· 实现流量控制,防止接收端处理不过来导致丢包

  1. 拥塞控制机制

· 当网络拥堵、带宽占用较大时自动触发

· 控制发送速率,避免网络过载导致数据丢失

· 保证数据在恶劣网络条件下的可靠通信

  1. 掉线检测机制

· TCP在连接建立后至断开前持续检测连接状态

· 及时发现对端是否已掉线或不可达

第五部分:TCP与UDP对比总结

UDP特点

· 实现机制简单,头部开销小

· 资源占用少

· 不安全不可靠,无重传和确认机制

· 无连接,无需预先建立通信链路

· 适合实时通信、广播、音视频流等容忍丢包的场景

TCP特点

· 实现机制复杂,头部开销大

· 资源占用多

· 安全可靠,具备确认重传机制

· 面向连接,需三次握手建立连接

· 适合文件传输、Web访问、邮件等对数据完整性要求高的场景

第六部分:HTTP协议概述

  1. HTTP定义

超文本传输协议,是基于TCP的一种应用层协议,用于规定超文本(网页)在网络中传输的流程和格式。

  1. C/S模型(客户端/服务器)

· 资源存储在本地客户端

· 加载速度快,无需联网即可工作

· 缺点:占用本地存储空间,不同平台需单独开发客户端,资源更新需升级版本或打补丁

  1. B/S模型(浏览器/服务器)

· 资源存储在服务器端

· 新增资源无需更新本地内容

· 每次查看从服务器下载最新资源

· 各平台均有浏览器,代码通用,无需重复开发客户端

第七部分:URL统一资源定位符

URL格式组成

· 协议:指定获取资源的协议(http或https)

· 主机:服务器IP地址,通常以域名形式呈现,通过DNS解析为IP地址

· 端口:服务器应用程序端口号(HTTP默认80或8080,HTTPS默认443)

· 路径:资源在服务器中的存放位置

第八部分:HTTP传输过程

· 用户在浏览器中输入URL

· 浏览器向URL对应IP和端口发起TCP连接

· 建立连接后发送HTTP请求报文

· 服务器回复HTTP响应报文

· 响应完毕后断开TCP连接

第九部分:HTTP请求报文格式

  1. 请求行

· 方法:GET(获取资源)或POST/PUT(提交资源)

· URL:请求资源的路径

· 版本:HTTP/1.1

  1. 首部行

· 格式为"首部字段名: 值"

· 根据场景使用不同首部字段(如Host、User-Agent、Content-Type等)

  1. 实体主体

· 通常不使用,POST等方法提交数据时携带

第十部分:HTTP响应报文格式

  1. 状态行

· 版本号:HTTP/1.1

· 状态码:响应该次请求的结果

· 短语:对状态码的简短文字说明

  1. 状态码分类

· 1xx:通知信息类,请求已收到或正在处理

· 2xx:成功类,请求被接受并处理完成

· 3xx:重定向类,需进一步操作完成请求

· 4xx:客户端错误类,请求语法错误或无法完成

· 5xx:服务器错误类,服务器处理请求时失效

  1. 首部行与实体主体

· 首部行包含响应头信息(如Content-Type、Content-Length、Set-Cookie等)

· 实体主体包含实际请求的资源内容(HTML、JSON、图片等)

相关推荐
Escalating_xu2 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
Brilliantwxx3 小时前
【STM32】 NVIC 与 EXTI 中断 · 超详细源码级解析
stm32·单片机·嵌入式硬件
阿钱真强道4 小时前
20 嵌入式操作系统 | ubus:把自己的程序状态暴露出去
c语言·进程通信·ubus·ubusd·blobmsg
加载力科技4 小时前
硬盘咔咔响是坏盘信号!赶在数据丢失前克隆换盘:不重装系统、不丢文件
windows·嵌入式硬件·系统安全·策略模式·命令模式·硬盘
顺顺 尼4 小时前
linux 进程信号(上)
linux·c++·算法
niuTaylor5 小时前
飞腾 FT-2000/4 Ubuntu 内存卡 / NVMe SSD 系统制作完整指南
linux·服务器·人工智能·驱动开发·单片机
思茂信息5 小时前
CST软件BCI仿真模型及仿真案例
开发语言·单片机·嵌入式硬件·算法·emc
L@ncor6 小时前
第五章 基于低代码平台的智能体搭建 · 学习笔记(Coze / Dify / FastGPT / n8n)
笔记·学习·低代码·agent·prompt工程
知潮网6 小时前
被嫌弃的五仁月饼,一吨千元在养猪场翻了身
笔记
2601_960631236 小时前
中药前处理及提取的工艺环节与技术要点
笔记